แฮกเกอร์ใช้เงินกู้แฟลชยึด 2 ที่นั่งวุฒิสภา X100 ถูกขโมย บทเรียนอะไรต่ออุตสาหกรรม?
ต้นฉบับ | Odaily News (@OdailyChina)
ผู้เขียน | Asher (@Asher_0210)

เมื่อวันที่ 24 ตุลาคม โปรเจกต์ DeFi บน Ethereum อย่าง X100 ถูกโจมตีด้านการกำกับดูแล ส่งผลให้ USDT ประมาณ 4.85 ล้านเหรียญถูกขโมย ตามข้อมูลจาก GMGN มูลค่าตลาดของโทเคน X ลดลงจากประมาณ 760 ล้านเหรียญก่อนการโจมตี เหลือประมาณ 24 ล้านเหรียญ ลดลงมากกว่า 96% ภายในวันเดียว

คลังสินทรัพย์ที่เดิมบริหารโดยที่นั่ง "วุฒิสภา" สามที่นั่ง ถูกแฮกเกอร์ใช้เงินกู้แฟลช (Flash Loan) ยึดไปสองที่นั่ง เมื่อถือเสียงข้างมากแล้ว แฮกเกอร์ยื่นข้อเสนอที่เป็นอันตราย แล้วใช้ที่นั่งที่ควบคุมอยู่โหวตอนุมัติ ทำให้คลังสินทรัพย์อนุมัติธุรกรรมโอนสินทรัพย์ให้ตัวเอง หลังจากการโจมตีรอบแรกสำเร็จ ผู้โจมตีรายอื่นก็ใช้กลไกการกำกับดูแลเดียวกันนี้โอนสินทรัพย์ของโปรเจกต์ต่อไปเรื่อยๆ
ด้านล่างนี้ Odaily News จะสรุปกระบวนการโจมตีด้านการกำกับดูแลทั้งหมด และความเสี่ยงด้านความปลอดภัยในการกำกับดูแล DAO ที่เปิดเผยจากเหตุการณ์ X100
ยืมเงิน 1.94 ล้านเหรียญ แฮกเกอร์ยึดสองที่นั่ง "วุฒิสภา" ได้อย่างไร?
คลังสินทรัพย์ของ X100 บริหารโดย "วุฒิสภา" สามที่นั่ง สมาชิกโหวตตัดสินใจการขายโทเคนในคลัง การเพิ่มสภาพคล่อง และการดำเนินการอื่นๆ เพียงควบคุมสองที่นั่งก็สามารถผ่านข้อเสนอและเคลื่อนย้ายสินทรัพย์ในคลังได้ ผู้ถือโทเคน X ฝากโทเคนเข้าในสัญญา Freezer เลือกระยะเวลาล็อกหนึ่งปี สามปี หรือห้าปี และจ่ายค่าธรรมเนียมสมัคร 100 X เพื่อลงสมัครรับเลือกตั้ง สามที่นั่งจัดอันดับตามยอดคงเหลือที่ล็อกปัจจุบันของที่อยู่ผู้สมัครแบบเรียลไทม์ สามอันดับแรกจะได้สิทธิ์ในการกำกับดูแล
กลไกนี้ไม่ได้จำกัดผู้ควบคุมคนเดียวกันใช้หลายที่อยู่เพื่อให้ได้ที่นั่ง และไม่มีระยะเวลารอคอยก่อนสิทธิ์การกำกับดูแลมีผล ผู้โจมตีเพียงแค่ทำให้ยอดคงเหลือที่ล็อกของสองที่อยู่ที่ควบคุมอยู่ติดสามอันดับแรกพร้อมกัน ก็จะได้เสียงข้างมากทันที และข้อเสนอที่ผ่านสามารถดำเนินการได้ทันที ทำให้การยึดที่นั่งและการโอนสินทรัพย์เสร็จสิ้นในธุรกรรมเดียว
ก่อนการโจมตี ที่อยู่ที่นั่งที่สองล็อก X ไว้ประมาณ 19,000 เหรียญ เมื่อเวลา 22:11 น. ของวันที่ 24 ตุลาคม แฮกเกอร์กู้ USDT ประมาณ 1.94 ล้านเหรียญผ่าน Aave Flash Loan ซื้อ X และกระจายไปยังสัญญาช่วยสองสัญญา เพื่อล็อกและลงสมัครตามลำดับ แต่ละสัญญาล็อก X จำนวน 19,000.000001 เหรียญ มากกว่าที่นั่งที่สองเดิมเพียงหนึ่งในล้านของโทเคน ก็สามารถครองที่นั่งที่สองและสามพร้อมกัน ผลักที่นั่งที่สองเดิมออกจากรายชื่อผู้กำกับดูแล
เมื่อได้เสียงข้างมากแล้ว แฮกเกอร์ทำให้สินทรัพย์ในคลังไหลเข้ากระเป๋าตัวเองได้อย่างไร?
สองเสียงเห็นชอบ ทำให้คลังขาย X 400,000 เหรียญในราคา 35.68 ดอลลาร์
หลังจากได้สองที่นั่ง แฮกเกอร์ยื่นข้อเสนอที่เป็นอันตรายทันที เรียกร้องให้คลังขาย X 400,000 เหรียญเข้าสู่พูล PancakeSwap V3 X/USDT ที่ตัวเองสร้างขึ้น และตั้งจำนวนเงินขั้นต่ำที่รับเป็นศูนย์ จากนั้นโหวตสนับสนุนผ่านสัญญาควบคุมอีกตัว ทำให้ข้อเสนอผ่านด้วยสองเสียงและดำเนินการทันที จากการวิเคราะห์ของ GoPlus X100 อนุญาตให้ข้อเสนอการกำกับดูแลระบุพูลซื้อขายได้ แต่ขาดการป้องกันราคาขั้นต่ำที่มีประสิทธิภาพ แฮกเกอร์สามารถกำหนดได้ทั้งว่าคลังจะขายเหรียญไปที่ไหน และตั้งเงื่อนไขการซื้อขายเอง แล้วใช้เสียงข้างมากที่ควบคุมอยู่อนุมัติธุรกรรม
พูลดังกล่าวถูกสร้างโดยแฮกเกอร์ในธุรกรรมเดียวกัน โดยเติมสภาพคล่องเพียงประมาณ 100 ดอลลาร์ เมื่อคลังขาย X 400,000 เหรียญเข้าไป พูลสามารถจ่าย USDT ได้เพียงเล็กน้อย และจำนวนเงินขั้นต่ำที่รับเป็นศูนย์ ทำให้ธุรกรรมไม่ล้มเหลวเพราะผลตอบแทนต่ำเกินไป สุดท้ายคลังส่งมอบ X 400,000 เหรียญ แลกกลับมาเพียงประมาณ 35.68 ดอลลาร์ แฮกเกอร์ถอนสภาพคล่องออกจากพูลที่สร้างเอง นำ X กลับคืน แล้วขายโทเคนบางส่วนเข้าสู่พูล Uniswap V3 X/USDT ที่มีอยู่ เพื่อแลกเป็น USDT หลังจากชำระคืนเงินกู้แฟลชและค่าใช้จ่ายอื่นๆ แฮกเกอร์รายแรกทำกำไรประมาณ 4.75 ล้าน USDT
ตั้งแต่การกู้ยืมเพื่อซื้อเหรียญ ยึดที่นั่ง ไปจนถึงการอนุมัติให้คลังขายเหรียญในราคาต่ำ และแปลงเป็นเงินสดเพื่อชำระหนี้ ทั้งหมดเสร็จสิ้นในธุรกรรมเดียว โทเคนที่คลังส่งมอบกลายเป็นสินทรัพย์ของแฮกเกอร์ในการแปลงเป็นเงินสด ส่วน USDT ในพูลซื้อขายจริงถูกใช้ชำระหนี้และเปลี่ยนเป็นกำไรจากการโจมตี
การโจมตีต่อเนื่องเกิดขึ้น เงินที่ถูกขโมยไหลไปไหน?
ประมาณ 24 นาทีหลังการโจมตีรอบแรก แฮกเกอร์รายที่สองใช้เงินกู้แฟลชยึดสองที่นั่งการกำกับดูแลอีกครั้ง ถอนตำแหน่งสภาพคล่อง Uniswap V3 บางส่วนที่ Freezer ถืออยู่ และใช้พูลซื้อขายที่สร้างเองโอนสินทรัพย์ต่อไป ได้ USDT ประมาณ 96,400 เหรียญ ประมาณห้านาทีต่อมา กระเป๋าเงินที่สามใช้สัญญาช่วยที่แฮกเกอร์รายที่สองทิ้งไว้โดยไม่จำกัดผู้เรียก ยืมที่นั่งการกำกับดูแลของเขาโดยตรงเพื่อผ่านข้อเสนอ โอน X ประมาณ 550,000 เหรียญ การโจมตีสองรอบแรกสร้างความเสียหายประมาณ 4.85 ล้าน USDT รอบที่สามมี X ประมาณ 550,000 เหรียญถูกโอนไป การโจมตีสามรอบเกิดขึ้นภายในเวลาไม่ถึงครึ่งชั่วโมง
ตามการติดตามของ Bitquery แฮกเกอร์รายแรกแปลงกำไร USDT หลักเป็น ETH ภายในไม่กี่นาทีหลังการโจมตี จากนั้นกระจายไปยังห้ากระเป๋าเงิน รวมประมาณ 2,022.86 ETH แฮกเกอร์รายที่สองแปลง USDT เป็น ETH และโอนผ่านที่อยู่ตัวกลางไปยัง ChangeNOW กระบวนการโอนทั้งหมดใช้เวลาประมาณ 21 นาที
เมื่อสิทธิ์การกำกับดูแลถูกยึด การโอนสินทรัพย์ก็เปลี่ยนจากการโจมตีครั้งเดียวของแฮกเกอร์รายแรก เป็นการถอนสินทรัพย์ต่อเนื่องโดยหลายกระเป๋าเงิน ผู้เข้าร่วมรายหลังไม่จำเป็นต้องซื้อเหรียญเพื่อลงสมัครใหม่ ก็สามารถใช้สิทธิ์ที่มีอยู่โอนสินทรัพย์ต่อไปได้
โลกบนเชนที่ต้นทุนการโจมตีด้านการกำกับดูแลต่ำลงเรื่อยๆ
X100 ไม่ใช่กรณีเดียว และการโจมตีด้านการกำกับดูแลก็ไม่จำเป็นต้องให้แฮกเกอร์ลงทุนเงินจำนวนมหาศาลล่วงหน้า ผู้โจมตีสามารถซื้อโทเคนเพื่อให้ได้สิทธิ์โหวต หรือใช้เกณฑ์ข้อเสนอที่ต่ำเพื่อหาโอกาส และเงินกู้แฟลชยังทำให้เงินที่ยืมมาสามารถใช้ในการยึดอำนาจการกำกับดูแลได้
ตั้งแต่ต้นปีนี้ การโจมตีด้านการกำกับดูแลที่คล้ายกันได้สร้างความเสียหายจำนวนมากหลายครั้ง ในเดือนกรกฎาคม ผู้โจมตี Bonk DAO ใช้เงินประมาณ 4.09 ล้านเหรียญซื้อโทเคนคิดเป็น 1.003% ของอุปทานทั้งหมด เกินเกณฑ์การอนุมัติการกำกับดูแลเพียงเล็กน้อย จากนั้นผ่านข้อเสนอที่เป็นอันตรายโอนสินทรัพย์ประมาณ 20.5 ล้านเหรียญ และยังถอนโทเคนที่ stake ไว้กลับคืนหลังการโหวตสิ้นสุด ในเดือนสิงหาคม Term Finance สูญเสียประมาณ 8.5 ล้านเหรียญจากการโจมตีด้านการกำกับดูแล แม้ต้องลงทุนหลายล้านเหรียญเพื่อซื้อสิทธิ์โหวต เงินจำนวนนี้ก็ไม่จำเป็นต้องเป็นต้นทุนสุดท้ายที่ผู้โจมตีต้องแบกรับ
เกณฑ์ของการโจมตีที่ไม่สำเร็จบางรายการมีเพียงไม่กี่ร้อยดอลลาร์ ในเดือนมีนาคมปีนี้ ผู้โจมตี Moonwell ใช้เงินเพียงประมาณ 1,808 ดอลลาร์ซื้อ MFAM และมอบหมายให้ตัวเอง ก็ยื่นข้อเสนอที่เป็นอันตราย พยายามเข้าควบคุมตลาดสินเชื่อเจ็ดแห่งที่เกี่ยวข้องกับเงินผู้ใช้ประมาณ 1.08 ล้านเหรียญ และสิทธิ์การจัดการสัญญาหลัก ในเดือนกันยายน ผู้โจมตี Olas ใช้เงินเพียงประมาณ 135 ดอลลาร์ล็อก OLAS 5,100 เหรียญ ก็เกินเกณฑ์ข้อเสนอ แม้การโจมตีทั้งสองครั้งจะถูกสกัดกั้น แต่ก็แสดงให้เห็นว่าผู้โจมตีไม่จำเป็นต้องถือเสียงข้างมาก เพียงแค่ได้สิทธิ์ยื่นข้อเสนอก็อาจสร้างโอกาสโจมตีได้
เมื่อวันที่ 22 ตุลาคม Arkadiko ก็ถูกโจมตีด้านการกำกับดูแลเช่นกัน ผู้โจมตีซื้อ DIKO ในจำนวนที่เพียงพอ โหวตผ่านข้อเสนอที่นำสัญญาอันตรายเข้ามาเพียงลำพัง โดยไม่มีเสียงคัดค้าน ประเมินความเสียหายประมาณ 1.09 ล้านเหรียญ
สิทธิ์การกำกับดูแลสามารถยืมได้ เมื่อโหวตผ่านก็โอนสินทรัพย์ได้ เมื่อการควบคุมคลังสินทรัพย์เปลี่ยนมือได้ง่ายเช่นนี้ การปกครองแบบกระจายศูนย์ที่เรียกกันว่า จะปกป้องใครได้?
เนื้อหานี้จัดทำขึ้นโดยมีวัตถุประสงค์เพื่อแจ้งข้อมูลและให้ความรู้เท่านั้น และไม่ถือว่าเป็นคำแนะนำด้านการลงทุนที่เกี่ยวข้องกับ BTCC แต่อย่างใด BTCC ใช้ความพยายามอย่างเต็มที่ แต่ไม่สามารถรับประกันความจริงแท้ ความถูกต้อง หรือความเป็นต้นฉบับของเนื้อหาข้างต้นได้