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

2. ผู้โจมตีเรียกใช้ฟังก์ชัน 0xa0296215(c6e3ae8e2cbab1298abaa3) โดยมีค่า msg.value เท่ากับ 0 และสามารถสร้างโทเคน TRU จำนวน 240442509453545333947284131 ได้สำเร็จ

3. ผู้โจมตีเรียกใช้ฟังก์ชัน 0xc471b10b(c6e3ae8e2cbab1298abaa3) ในที่สุดก็ทำลาย TRU จำนวน 24,044,250,945,354,533,394,728,4131 เหรียญ และได้รับ ETH จำนวน 5105.06 เหรียญ
การวิเคราะห์ตรรกะการโจมตี
จากการศึกษากระบวนการโจมตีดังกล่าวข้างต้น สามารถสังเกตได้อย่างชัดเจนว่ามีปัญหาเกี่ยวกับตรรกะของฟังก์ชัน getPurchasePrice และฟังก์ชัน 0xa0296215 ด้านล่างนี้จะเริ่มวิเคราะห์อย่างลึกซึ้ง (เนื่องจากสัญญานั้นยังไม่ได้เปิดเผยแหล่งที่มา โค้ดที่ใช้ในการวิเคราะห์ด้านล่างนี้จึงเป็นโค้ดที่ถูกดีคอมไพล์)


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

ให้สังเกตตรรกะในฟังก์ชัน 0x1446 เนื่องจากผลลัพธ์การคำนวณสุดท้ายคือ v13 == 0 ดังนั้นจึงต้องมีปัญหาเกิดขึ้นในตรรกะการคำนวณข้างต้น ที่ต้องทราบคือฟังก์ชัน 0x18ef มีการทำงานเหมือนกับ _SafeMul ดังนั้นปัญหาจึงอยู่ที่การใช้งานการบวกตัวแปรต้นฉบับ v12 + v9 (เวอร์ชันสัญญาเป็น ^0.6.10 ซึ่งไม่มีการตรวจสอบการล้นค่า)
v12 และ v9 หมายถึง:

จากการวิเคราะห์ดังกล่าว แนวคิดการโจมตีของผู้โจมตีคือการป้อนค่า _amountIn ที่มีขนาดใหญ่มาก เพื่อทำให้เกิดการล้นค่า (overflow) ของ v12 + v9 กลายเป็นค่าที่เล็กมาก และในที่สุดทำให้ (v12 + v9) / v6 เท่ากับ 0
สรุป
เหตุการโจมตีครั้งนี้ของโปรโตคอล Truebit เกิดจากข้อผิดพลาดในตรรกะการคำนวณราคาการซื้อโทเคนที่มีช่องโหว่ร้ายแรงเกี่ยวกับการเกิด integer overflow (การล้นของตัวเลขจำนวนเต็ม) เนื่องจากสัญญาดังกล่าวใช้เวอร์ชัน Solidity ^0.6.10 ซึ่งไม่มีการตรวจสอบความปลอดภัยของการคำนวณทางคณิตศาสตร์ที่สำคัญ จึงส่งผลให้เกิดความสูญเสียอย่างรุนแรงถึง 8,535.36 ETH ปัจจุบันเวอร์ชันใหม่ของ Solidity ได้แก้ไขปัญหา integer overflow ไปแล้ว ดังนั้นเหตุการโจมตีครั้งนี้อาจเป็นการโจมตีที่ผู้โจมตีใช้ AI ในการสแกนหาช่องโหว่ในโปรโตคอล DeFi รุ่นเก่าที่มีอยู่เดิม (เช่น Balancer และ yETH ที่เกิดขึ้นเมื่อไม่นานมานี้) เราเชื่อว่าเหตุการโจมตีที่ใช้ AI โจมตีโปรโตคอล DeFi รุ่นเก่าจะเพิ่มมากขึ้นในช่วงนี้ ดังนั้นเราแนะนำให้ทีมโครงการทำการตรวจสอบความปลอดภัยของโค้ดสัญญาอีกครั้ง หากพบช่องโหว่ควรอัปเกรดสัญญาหรือโอนย้ายสินทรัพย์ให้เร็วที่สุด และติดตามตรวจสอบกิจกรรมบนบล็อกเชนอย่างใกล้ชิด เพื่อให้สามารถตรวจจับความผิดปกติได้ทันทีและลดความเสียหายให้เหลือน้อยที่สุด

