หัวข้อเรื่องต้นฉบับ: "วิเคราะห์ช่องโหว่คอนแทรกต์ Truebit Protocol การถูกขโมย 26.44 ล้านเหรียญสหรัฐ"
เมื่อวันที่ 8 มกราคม 2026 Truebit Protocol ถูกโจมตีโดยฮากเกอร์ ก่อให้เกิดความเสียหายในจำนวน 8,535.36 ETH (ประมาณ 26.44 ล้านเหรียญสหรัฐ) ซึ่งธนาคารกลาง Truebit Protocol ได้ทำการตอบรับข้อความในตอนเที่ยงคืนวันถัดมา ทีมความปลอดภัย ExVul ได้ทำการวิเคราะห์เหตุการณ์การโจมตีที่เกิดขึ้นอย่างละเอียด ผลวิเคราะห์ดังต่อไปนี้:
ที่อยู่ของฮากเกอร์:
0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50
แฮชการทำธุรกรรมโจมตี:
0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
ฮากเกอร์เริ่มดำเนินการโจมตีโดยการเรียกใช้ getPurchasePrice รอบละ 4 ครั้ง→0xa0296215→0xc471b10b ในการดำเนินการโจมตี ของฮากเกอร์ โดยเริ่มจากการเรียกใช้ getPurchasePrice ซึ่งได้แสดงตัวอย่างการดำเนินการในรอบแรกดังนี้
1. ฮากเกอร์เรียกใช้ฟังก์ชัน getPurchasePrice(240,442,509,453,545,333,947,284,131) และได้ผลลัพธ์เป็น 0

2. ฮากเกอร์เรียกใช้ 0xa0296215(c6e3ae8e2cbab1298abaa3) พร้อม Msg.value เป็น 0 สุดท้ายแปลง TRU เป็น 240,442,509,453,545,333,947,284,131 เหรียญ

3. ฮากเกอร์เรียกใช้ 0xc471b10b(c6e3ae8e2cbab1298abaa3) ทำให้ TRU 240,442,509,453,545,333,947,284,131 เหรียญ นำมาทำลายและได้ ETH 5,105.06 เหรียญ
จากการรู้จักกระบวนการโจมตีข้างต้น สามารถเห็นได้ชัดว่าฟังก์ชัน getPurchasePrice และ ฟังก์ชัน 0xa0296215 มีปัญหาตรรกะ ดังนั้นเริ่มต้นการวิเคราะห์อย่างละเอียด (เนื่องจากสัญญาไม่ได้ออกซอร์ส ดังนั้นโค้ดด้านล่างเป็นโค้ดถอดรหัส)


โดยการเปรียบเทียบความคล้ายกันของฟังก์ชันสองฟังก์ชันสามารถค้นพบว่า ฟังก์ชัน 0x1446 ใช้สำหรับการรับจำนวน TRU ที่ระบุว่าต้องใช้ ETH เท่าไรสำหรับการซื้อ การวิเคราะห์เหตุผลของฟังก์ชัน 0x1446 ระหว่างนี้ ทำให้เห็นชัดว่ามีข้อผิดพลาดในการคำนวณ ETH ด้านล่างกล่าวถึงวิเคราะห์เหตุผลของฟังก์ชัน 0x1446 โปรดดูเหตุผล:

ในการสังเกตเหตุผลของฟังก์ชัน 0x1446 เนื่องจากผลลัพธ์ของการคำนวณสุดท้าย v13 == 0 ดังนั้นเป็นแน่ใจว่าเหตุผลคำนวณด้านบนมีปัญหา สิ่งที่ต้องเข้าใจคือ ฟังก์ชัน 0x18ef คล้ายกับ _SafeMul ดังนั้นปัญหาเกิดขึ้นจากการใช้การบวกเดิม v12 + v9 (รุ่นสัญญาคือ ^0.6.10 ดังนั้นไม่มีการตรวจสอบการเกินความจำเป็น)
v12 และ v9 แทนตามลำดับ:
จากการวิเคราะห์ข้างต้น วิธีการโจมตีของผู้โจมตีคือ โดยการป้อน _amountIn ที่ใหญ่มาก ทำให้ v12 + v9 การเกินเป็นค่าเล็ก ๆ 最后 (v12 + v9) / v6 == 0
ความเหตุที่เกิดเหตุการณ์โจมตีของโปรโตคอล Truebit ในครั้งนี้เนื่องจากระบบคำนวณราคาการซื้อตัวตนมีช่องโหว่ของการเกินเลขจำนวนเต็มที่สามารถบ่งชี้ได้ ด้วยการใช้รุ่น Solidity ^0.6.10 โดยที่ไม่มีการตรวจสอบความปลอดภัยของการคำนวณที่สำคัญ ทำให้เกิดความสูญเสียมากถึง 8,535.36 ETH ในที่สุด เวอร์ชันใหม่ของ Solidity ได้ช่วยลดจุดอ่อนที่เกิดขึ้นในระหว่างโจมตี การเหตุการณ์โจมตีครั้งนี้ควรจะเข้าใจว่า ภัยคุกคามโดยผู้ประพฤติไม่ดี (hacker) ใช้คอมพิวเตอร์หลักสูตรกลุ่ม (AI) ในการสแกนโปรโตคอล DeFi เก่าที่อยู่ในระหว่างการดำเนินการอย่างต่อเนื่อง (online) หาความจุดอ่อน (รวมถึงการโจมตี Balancer ครั้งก่อนและ yETH) เราเชื่อว่าเหตุการณ์การโจมตีโดยใช้ AI โจมตีโปรโตคอล DeFi เก่านี้กำลังเพิ่มขึ้นว่าในไม่ช้าดังนั้นเราขอแนะนำให้ฝ่ายโครงการตรวจสอบรหัสสัญญาปัจจุบัน ถ้าพบความบกพร่อง ให้ทำการ upgrade สัญญาทันที หรือทำการโอนทรัพย์สิน และจัดเตรียมการตรวจสอบบนเชื่อมโยงโซ่ (chain) เพื่อค้นพบข้อผิดปกติทันเวลา ระดับความเสียหายลงมาเท่าที่จะเป็นไปได้
บทความนี้มาจากการส่งเข้ามา ไม่แสดงให้เห็นว่า BlockBeats มุ่งเน้นเรื่องใด
ยินดีต้อนรับสู่ชุมชนทางการของ BlockBeats:
กลุ่ม Telegram สมัครสมาชิก: https://t.me/theblockbeats
กลุ่ม Telegram พูดคุย: https://t.me/BlockBeats_App
บัญชี Twitter ทางการ: https://twitter.com/BlockBeatsAsia