lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
หน้าแรก
AI
OPRR
ด่วน
ความลึก
กิจกรรม
BlockBeats Pro
เพิ่มเติม
การเงิน
พิเศษ
ระบบนิเวศบล็อกเชน
รายการ
พอดแคสต์
ข้อมูล
BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%
BNB
$710
3.05%
Partnered With:

หนึ่งบั๊กการคำนวณทำให้ Truebit ถูกขโมย ETH 8535 เหรียญ

อ่านบทความนี้ใน 12 นาที
โปรโตคอล Truebit ถูกโจมตีจากผู้โจมตีผ่านช่องโหว่การเกิดข้อผิดพลาดที่ทำให้มีการซื้อ Token ด้วยราคาที่เกินขอบเขตของจำนวนเต็ม ผู้โจมตีใช้กลไกการเรียกตนเองอย่างต่อเนื่องเพื่อทำกำไรจากการ Arbitrage ในที่สุดทำให้เกิดความเสียหายมากกว่า 8500 ETH เป็นผล
หัวข้อเรื่องต้นฉบับ: "วิเคราะห์ช่องโหว่คอนแทรกต์ 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

เลือกคลัง
เพิ่มคลัง
ยกเลิก
เสร็จสิ้น
เพิ่มคลัง
เห็นได้เฉพาะตัวเอง
สาธารณะ
บันทึก
แก้ไข/รายงาน
ส่ง