การโจมตีด้วย闪电贷 (flash loan) ครองที่นั่งการกำกับดูแลสองที่นั่ง — การถูกโจรกรรมของ X100 ให้บทเรียนอะไรแก่อุตสาหกรรม?
- ประเด็นหลัก: โปรเจกต์ X100 มีช่องโหว่ร้ายแรงในกลไกการกำกับดูแลของ DAO โดยแฮกเกอร์ใช้闪电贷 (flash loan) กู้ยืมเงินเพื่อยึดที่นั่งการกำกับดูแล ผ่านข้อเสนอที่เป็นอันตรายในการโอนย้ายสินทรัพย์ในคลังสมบัติในราคาต่ำ สร้างความเสียหายประมาณ 4.85 ล้าน USDT ภายในวันเดียว ขณะที่โทเค็น X ดิ่งลงกว่า 96% เผยให้เห็นถึงความเสี่ยงด้านความปลอดภัยเชิงระบบของการกำกับดูแลแบบกระจายศูนย์
- องค์ประกอบสำคัญ:
- คลังสมบัติของ X100 ถูกบริหารโดย "วุฒิสภา" สามที่นั่ง ไม่มีระยะรอให้สิทธิ์การกำกับดูแลมีผล ผู้ควบคุมคนเดียวกันสามารถยึดที่นั่งผ่านหลายที่อยู่ และข้อเสนอจะถูกดำเนินการทันทีหลังผ่านความเห็นชอบ
- แฮกเกอร์กู้ยืมเงินผ่าน闪电贷 (flash loan) ประมาณ 1.94 ล้าน USDT เพื่อซื้อโทเค็น X ยึดสองที่นั่งด้วยยอดคงเหลือที่ถูกแช่แข็งมากกว่าเพียงหนึ่งในล้านโทเค็น จากนั้นในธุรกรรมเดียวกันได้ผ่านข้อเสนอที่เป็นอันตราย ขายโทเค็น X จำนวน 400,000 เหรียญในราคาประมาณ 35.68 ดอลลาร์
- ประมาณ 24 นาทีหลังการโจมตีรอบแรก แฮกเกอร์รายที่สองใช้กลไกเดียวกันยึดสองที่นั่งอีกครั้ง ได้กำไรประมาณ 96,400 USDT; ผู้โจมตีรอบที่สามยืมสัญญาช่วยเหลือของผู้ก่อการรายก่อนเพื่อโอนโทเค็น X ประมาณ 550,000 เหรียญออกไปโดยตรง การโจมตีทั้งสามรอบเสร็จสิ้นภายในครึ่งชั่วโมง
- ปีนี้มีการโจมตีเชิงการกำกับดูแลลักษณะคล้ายกันเกิดขึ้นบ่อยครั้ง: Bonk DAO สูญเสียประมาณ 20.5 ล้านดอลลาร์, Term Finance สูญเสียประมาณ 8.5 ล้านดอลลาร์, Arkadiko สูญเสียประมาณ 1.09 ล้านดอลลาร์
- การโจมตีที่ล้มเหลวบางกรณีมีเกณฑ์ขั้นต่ำมาก — ผู้โจมตี Moonwell ใช้เงินเพียงประมาณ 1,808 ดอลลาร์ และผู้โจมตี Olas ใช้เงินเพียงประมาณ 135 ดอลลาร์ก็ถึงเกณฑ์การเสนอข้อเสนอแล้ว แสดงให้เห็นว่าผู้โจมตีไม่จำเป็นต้องถือคะแนนเสียงข้างมาก แค่ได้สิทธิ์ในการเสนอข้อเสนอก็สามารถสร้างโอกาสในการโจมตีได้
ต้นฉบับ | Odaily (@OdailyChina)
ผู้เขียน | Asher (@Asher_0210)

เมื่อวันที่ 24 ตุลาคม โครงการ DeFi บน Ethereum ชื่อ X100 ตกเป็นเป้าโจมตีด้านธรรมาภิบาล (governance attack) ส่งผลให้มี USDT ประมาณ 4.85 ล้านเหรียญถูกขโมยไป จากข้อมูลของ GMGN มูลค่าตลาดของโทเคน X ร่วงลงจากประมาณ 760 ล้านดอลลาร์ก่อนการโจมตี เหลือประมาณ 24 ล้านดอลลาร์ คิดเป็นการลดลง بیشกว่า 96% ภายในวันเดียว

คลังเงิน (treasury) ซึ่งเดิมบริหารโดยที่นั่ง "วุฒิสภา" (Senate) สามที่นั่ง ถูกแฮกเกอร์ยึดไปสองที่นั่งด้วยเงินที่กู้มาผ่าน flash loan เมื่อถือเสียงข้างมากแล้ว แฮกเกอร์จึงยื่นข้อเสนอที่เป็นอันตราย (malicious proposal) จากนั้นใช้ที่นั่งที่ตัวเองควบคุมลงคะแนนให้ผ่าน เพื่อให้คลังเงินอนุมัติธุรกรรมที่ส่งทรัพย์สินไปยังตัวเอง หลังการโจมตีรอบแรกสำเร็จ ผู้โจมตีรายอื่นก็ใช้กลไกธรรมาภิบาลเดียวกันนี้ต่อเนื่อง เพื่อโอนทรัพย์สินของโครงการออกไปอีก
ต่อไปนี้ Odaily จะสรุปภาพรวมทั้งหมดของการโจมตีด้านธรรมาภิบาลครั้งนี้ ตลอดจนช่องโหว่ด้านความปลอดภัยในการกำกับดูแลของ DAO ที่เหตุการณ์ X100 เผยออกมา
กู้มา 1.94 ล้านดอลลาร์ แฮกเกอร์ยึดสองที่นั่ง "วุฒิสภา" ได้อย่างไร?
คลังเงินของ X100 บริหารโดย "วุฒิสภา" สามที่นั่งที่เรียกว่า Senate โดยสมาชิกจะลงคะแนนตัดสินใจเรื่องการขายโทเคนในคลัง การเพิ่มสภาพคล่อง และการดำเนินการอื่น ๆ เพียงควบคุมสองที่นั่งในนั้นก็สามารถทำให้ข้อเสนอผ่านและเคลื่อนย้ายทรัพย์สินในคลังได้ ผู้ถือโทเคนจะฝากโทเคน X ของโครงการเข้าในสัญญา Freezer โดยเลือกตรึงไว้หนึ่งปี สามปี หรือห้าปี แล้วจ่ายค่าสมัคร 100 X จึงจะเข้าร่วมการเลือกตั้งได้ ที่นั่งทั้งสามจะถูกจัดอันดับแบบเรียลไทม์ตามยอดคงเหลือที่ถูกตรึงของที่อยู่ผู้สมัคร โดยสามอันดับแรกจะได้รับสิทธิ์กำกับดูแล
กลไกนี้ไม่ได้จำกัดไม่ให้ผู้ควบคุมรายเดียวกันยึดที่นั่งผ่านหลายที่อยู่ และไม่ได้กำหนดช่วงเวลารอให้สิทธิ์กำกับดูแลมีผล ผู้โจมตีเพียงทำให้ยอดคงเหลือที่ตรึงของสองที่อยู่ที่ตัวเองควบคุมติดสามอันดับแรกพร้อมกัน ก็จะได้เสียงข้างมากทันที และข้อเสนอที่ผ่านก็สามารถดำเนินการได้ทันที ทำให้การยึดที่นั่งและการโอนทรัพย์สินเกิดขึ้นได้ในธุรกรรมเดียวกัน
ก่อนการโจมตี ที่อยู่ของที่นั่งที่สองมี X ถูกตรึงอยู่ประมาณ 19,000 โทเคน เมื่อวันที่ 24 ตุลาคม เวลา 22:11 น. แฮกเกอร์กู้ USDT ประมาณ 1.94 ล้านเหรียญผ่าน flash loan ของ Aave แล้วนำไปซื้อ 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 หลังจากชำระค่าใช้จ่ายรวมถึง flash loan แล้ว แฮกเกอร์รายแรกได้กำไรประมาณ 4.75 ล้าน USDT
ตั้งแต่การกู้เงินมาซื้อโทเคน การยึดที่นั่ง ไปจนถึงการอนุมัติให้คลังขายโทเคนในราคาต่ำ การแลกเป็นเงินสดและการชำระคืนเงินกู้ ทั้งหมดเกิดขึ้นในธุรกรรมเดียวกัน โทเคนที่คลังจ่ายออกมากลายเป็น筹码ให้แฮกเกอร์แลกเป็นเงินสด ส่วน USDT ในพูลซื้อขายจริงถูกนำไปใช้ชำระหนี้และแปลงเป็นกำไรจากการโจมตี
การโจมตีต่อเนื่องเกิดขึ้นอีก เงินที่ถูกขโมยไปอยู่ที่ไหน?
ประมาณ 24 นาทีหลังการโจมตีรอบแรก แฮกเกอร์รายที่สองยึดที่นั่งกำกับดูแลสองที่นั่งอีกครั้งผ่าน flash loan ถอนสถานะสภาพคล่อง 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 ไม่ใช่กรณีเดียว และการโจมตีด้านธรรมาภิบาลก็ไม่จำเป็นต้องให้แฮกเกอร์ลงทุนเงินจำนวนมหาศาลล่วงหน้าเสมอไป ผู้โจมตีอาจซื้อโทเคนเพื่อให้ได้สิทธิ์ออกเสียง หรือใช้เกณฑ์การยื่นข้อเสนอที่ต่ำในการหาโอกาส ขณะที่ flash loan ยังทำให้เงินที่กู้มาสามารถเข้าร่วมการยึดอำนาจกำกับดูแลได้
ตั้งแต่ต้นปีนี้ การโจมตีด้านธรรมาภิบาลในลักษณะคล้ายกันได้สร้างความเสียหายครั้งใหญ่หลายครั้ง ในเดือนกรกฎาคม ผู้โจมตี Bonk DAO ใช้เงินประมาณ 4.09 ล้านดอลลาร์ซื้อโทเคนคิดเป็น 1.003% ของอุปทาน ซึ่งเพิ่งเกินเกณฑ์การอนุมัติด้านธรรมาภิบาลไปเล็กน้อย จากนั้นใช้ข้อเสนอที่เป็นอันตรายโอนทรัพย์สินออกไปประมาณ 20.5 ล้านดอลลาร์ และยังได้โทเคนที่สเตกคืนกลับมาหลังการลงคะแนนสิ้นสุดลง ในเดือนสิงหาคม Term Finance สูญเสียประมาณ 8.5 ล้านดอลลาร์จากการโจมตีด้านธรรมาภิบาล แม้ต้องใช้เงินหลายล้านดอลลาร์เพื่อซื้อสิทธิ์ออกเสียง เงินจำนวนนี้ก็ไม่ใช่ต้นทุนสุดท้ายที่ผู้โจมตีต้องแบกรับเสมอไป
การโจมตีบางครั้งที่ล้มเหลวมีเกณฑ์เพียงไม่กี่ร้อยดอลลาร์ ในเดือนมีนาคมปีนี้ ผู้โจมตี Moonwell ใช้เงินเพียงประมาณ 1,808 ดอลลาร์ซื้อ MFAM และ self-delegate จากนั้นยื่นข้อเสนอที่เป็นอันตราย พยายามยึดสิทธิ์บริหารตลาดสินเชื่อเจ็ดแห่งที่เกี่ยวข้องกับเงินผู้ใช้ประมาณ 1.08 ล้านดอลลาร์และสัญญาหลัก ในเดือนกันยายน ผู้โจมตี Olas ใช้เงินเพียงประมาณ 135 ดอลลาร์ล็อก OLAS 5,100 โทเคน ก็เกินเกณฑ์การยื่นข้อเสนอแล้ว แม้การโจมตีทั้งสองครั้งจะถูกสกัดไว้ได้ แต่ก็แสดงให้เห็นว่าผู้โจมตีไม่จำเป็นต้องถือเสียงข้างมาก แค่ได้สิทธิ์ยื่นข้อเสนอก็อาจสร้างโอกาสในการโจมตีได้แล้ว
เมื่อวันที่ 22 ตุลาคม Arkadiko ก็ตกเป็นเป้าโจมตีด้านธรรมาภิบาลเช่นกัน ผู้โจมตีซื้อ DIKO ในจำนวนที่เพียงพอ ลงคะแนนคนเดียวอนุมัติข้อเสนอที่นำสัญญาอันตรายเข้ามา โดยไม่มีเสียงคัดค้านเลย คาดว่าสูญเสียประมาณ 1.09 ล้านดอลลาร์
สิทธิ์กำกับดูแลกู้ยืมได้ และเมื่อลงคะแนนผ่านก็สามารถโอนทรัพย์สินออกไปได้ เมื่อการควบคุมคลังเงินเปลี่ยนมือได้ง่ายขนาดนี้ ธรรมาภิบาลแบบกระจายอำนาจที่ว่านี้ ปกป้องใครได้จริงหรือ?


