ผู้แต่ง: Beosin
เมื่อเวลาตี 5 ของวันที่ 9 มกราคม ที่ผ่านมา ข้อตกลงที่ไม่ได้เปิดเผยแหล่งที่มา (non-open source contract) ซึ่งได้ถูกฝังไว้ในโปรโตคอล Truebit ตั้งแต่ 5 ปีก่อน ได้ถูกโจมตี ทำให้สูญเสีย ETH จำนวน 8,535.36 หน่วย (มีมูลค่าประมาณ 26.4 ล้านดอลลาร์สหรัฐ) ทีมงานด้านความปลอดภัยของ Beosin ได้ทำการวิเคราะห์ช่องโหว่และติดตามการเคลื่อนไหวของเงินในเหตุการณ์ความปลอดภัยครั้งนี้ และได้แบ่งปันผลลัพธ์ดังต่อไปนี้:

การวิเคราะห์วิธีการโจมต
สำหรับเหตุการณ์นี้ เราจะใช้ธุรกรรมการโจมตีหลักเป็นหลักในการวิเคราะห์ แฮชธุรกรรมคือ: 0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
1. ผู้โจมตีเรียกใช้ getPurchasePrice() เพื่อรับราคา

2. หลังจากนั้นก็เรียกใช้ฟังก์ชันที่มีข้อบกพร่อง 0xa0296215() และตั้งค่า msg.value ให้เล็กมาก

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

กระบวนการนี้ถูกทำซ้ำอีก 4 ครั้ง โดยแต่ละครั้งค่า msg.value เพิ่มขึ้น จนกระทั่งเกือบจะถอน ETH ทั้งหมดออกจากสัญญาได้
การติดตามเงินที่ถูกขโมย
จากข้อมูลการทำธุรกรรมบนบล็อกเชน Beosin ได้ทำการติดตามเงินทุนอย่างละเอียดผ่านแพลตฟอร์ม BeosinTrace ซึ่งเป็นแพลตฟอร์มสำหรับการสืบสวนและการติดตามบนบล็อกเชน และได้แบ่งปันผลลัพธ์ดังต่อไปนี้:
ในปัจจุบัน ETH จำนวน 8,535.36 ที่ถูกขโมยไปนั้นหลังจากการโอนย้ายแล้วส่วนใหญ่ถูกเก็บไว้ในที่อยู่ 0xd12f6e0fa7fbf4e3a1c7996e3f0dd26ab9031a60 และ 0x273589ca3713e7becf42069f9fb3f0c164ce850a ตามลำดับ
ที่อยู่ 0xd12f ถือครอง ETH จำนวน 4,267.09 และที่อยู่ 0x2735 ถือครอง ETH จำนวน 4,001 ที่อยู่ที่ผู้โจมตีใช้ในการโจมตี (0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50) ยังคงถือครอง ETH จำนวน 267.71 และยังไม่มีการโอนเงินเพิ่มเติมจากทั้งสามที่อยู่

แผนผังการวิเคราะห์การเคลื่อนไหวของเงินทุนที่ถูกขโมย โดย Beosin Trace
ที่อยู่ทั้งหมดดังกล่าวถูก Beosin KYT จัดประเภทเป็นที่อยู่ที่มีความเสี่ยงสูง ตัวอย่างเช่นที่อยู่ของผู้โจมตี:

Beosin KYT
บทสรุป
เหตุการณ์การถูกขโมยเงินครั้งนี้เกี่ยวข้องกับสัญญาอัจฉริยะที่ไม่ได้เปิดเผยแหล่งที่มาเมื่อ 5 ปีก่อน สำหรับสัญญาอัจฉริยะประเภทนี้ ฝ่ายโครงการควรอัปเกรดสัญญาดังกล่าว ให้เพิ่มคุณสมบัติการระงับฉุกเฉิน การจำกัดพารามิเตอร์ และคุณสมบัติความปลอดภัยของเวอร์ชัน Solidity ใหม่ นอกจากนี้ การตรวจสอบความปลอดภัยยังคงเป็นส่วนสำคัญที่ขาดไม่ได้สำหรับสัญญาอัจฉริยะ การตรวจสอบความปลอดภัยจะช่วยให้บริษัท Web3 สามารถตรวจสอบโค้ดสัญญาอัจฉริยะได้อย่างครอบคลุมที่สุดเท่าที่จะเป็นไปได้ ค้นหาและแก้ไขช่องโหว่ที่อาจเกิดขึ้น เพื่อเพิ่มความปลอดภัยของสัญญาอัจฉริยะ
*Beosin จะให้รายงานการวิเคราะห์ทั้งหมดเกี่ยวกับการเคลื่อนไหวของเงินทุนและข้อมูลความเสี่ยงของที่อยู่ สามารถรับได้ทางอีเมลทางการ support@beosin.com


