HongCoin ICO ปัญหา Integer Overflow ปลดล็อก $2M จาก Smart Contract เก่า

Article author

Integer overflow ในโค้ด admin ปลดล็อกเงินติดค้าง 2 ล้านดอลลาร์ในสัญญา ICO HongCoin ปี 2016

บั๊ก integer-overflow เกือบสิบปีในฟังก์ชัน admin ของสัญญา Ethereum ICO ของ HongCoin เพิ่งถูกเปิดเผยโดยนักวิจัยด้านความปลอดภัยที่รู้จักในชื่อ 0xflorent ซึ่งช่วยให้ฟื้นฟู ETH ประมาณ 1,003.62 เหรียญ — หรือราว 2 ล้านดอลลาร์ — ที่ถูกล็อกไว้กว่าเก้าปี ข้อบกพร่องนี้อยู่ในฟังก์ชัน admin ที่เข้าถึงได้จำกัดซึ่งถูกควบคุมโดย multisignature wallet ของ HongCoin จึงอนุญาตให้ปลดล็อกเงินทุนสำหรับนักลงทุนดั้งเดิม 48 รายที่ประสานงานร่วมกันได้ การแก้ไขในครั้งนี้แสดงตัวอย่างบทเรียนสำคัญเกี่ยวกับการรักษาความเข้ากันได้ย้อนหลังและความเสี่ยงระยะยาวของบั๊กสัญญาอัจฉริยะในสัญญา DeFi และการขายโทเคน


ช่องโหว่คืออะไร และมันช่วยให้กู้คืนทุนได้อย่างไร?

โดยสรุป ช่องโหว่เกิดจากปัญหา integer-overflow ในฟังก์ชัน admin ที่มีสิทธิ์พิเศษ

0xflorent พบว่า ฟังก์ชันนี้ในสัญญา ซึ่งจำกัดการใช้งานเฉพาะ multisig wallet ของ HongCoin เท่านั้น ไม่มีการป้องกัน integer-overflow ที่เวอร์ชัน Solidity รุ่นหลังได้เพิ่มเข้ามาเป็นการป้องกันมาตรฐาน จึงเปิดโอกาสให้เกิดพฤติกรรมคำนวณเลขที่ไม่คาดคิด ซึ่งถ้าใช้ประโยชน์อย่างระมัดระวัง จะช่วยให้ผู้ถือสิทธิ์ admin ปลดล็อก ETH จำนวนมากที่ถูกล็อกเนื่องจาก overflow ได้

ข้อบกพร่องนี้ไม่ได้ถูกโจมตีเชิงร้ายแรงในที่สาธารณะ แต่ทำให้เงินทุนถูกล็อกภายในสัญญานานถึงเก้าปีตั้งแต่ ICO ในปี 2016 จนกระทั่ง 0xflorent ค้นพบและเปิดเผยอย่างรับผิดชอบ ร่วมประสานงานกับผู้ถือ multisig wallet ของ HongCoin เพื่อกำหนดวิธีแก้ไขอย่างปลอดภัยและนำไปใช้งาน

กรณีนี้เน้นให้เห็นว่าสัญญาอัจฉริยะรุ่นเก่า โดยเฉพาะอย่างยิ่งที่ถูกสร้างก่อนการปรับปรุงด้านความปลอดภัยของภาษา เช่นการตรวจจับ overflow อัตโนมัติใน Solidity 0.8.x อาจยังมีช่องโหว่ที่ตรวจไม่พบโดยไม่มีการตรวจสอบโค้ดอย่างลึกซึ้งและการจำลองสภาพแวดล้อม


การประสานงานและดำเนินการกู้คืนทุนทำอย่างไร?

เนื่องจากฟังก์ชันที่มีช่องโหว่สามารถเรียกใช้งานได้ผ่าน multisignature wallet ของ HongCoin เท่านั้น จึงต้องมีการร่วมมืออย่างใกล้ชิด

ขั้นตอนการกู้คืนประกอบด้วย:

  1. 0xflorent วิเคราะห์และทดสอบขั้นตอนปลดล็อกอย่างละเอียดบนการ Fork ของ Ethereum mainnet เพื่อยืนยันว่า exploit ทำซ้ำได้โดยไม่มีความเสี่ยงกับเงินทุนจริง
  2. หลังจากยืนยันความถูกต้อง นักวิจัยติดต่ออย่างปลอดภัยกับผู้ถือ multisig wallet ของ HongCoin และแบ่งปันหลักฐานพร้อมคำแนะนำ
  3. ทีม multisig อนุมัติและเซ็นธุรกรรมปลดล็อกด้วยตนเองเพื่อรักษาการกำกับดูแลบนเชนและการควบคุมโดยหลายฝ่าย
  4. ทีมดำเนินการธุรกรรมจำนวน 41 รายการแยกกัน — รายการละหนึ่งนักลงทุนที่มีเงินติดค้าง — เพื่อปลดล็อก ETH ประมาณ 1,000 เหรียญทีละขั้นตอน
  5. ขณะเดียวกัน ผู้ถืออีกเจ็ดรายที่มีจำนวนเงินค่อนข้างน้อยสามารถถอนเงินได้โดยตรงโดยไม่ต้องใช้วิธีแก้ไขนี้

น่าสังเกตว่า ผลลัพธ์เริ่มแรกแสดงว่านักลงทุนสองรายได้กู้คืน ETH รวม 96.5 เหรียญ หรือราว 193,000 ดอลลาร์แล้ว แสดงให้เห็นถึงผลกระทบเชิงปฏิบัติและการมีส่วนร่วมของนักลงทุน

แนวทางความร่วมมือเช่นนี้ค้ำประกันความสมบูรณ์และความไว้วางใจในการบริหารจัดการเงินทุนในขณะที่ปลดล็อกสินทรัพย์ที่ถูกล็อกโดยช่องว่างทางเทคนิคจากอดีตได้อย่างปลอดภัย


ใครได้รับผลประโยชน์และกู้คืนเงินได้เท่าไหร่?

โดยรวม นักลงทุนดั้งเดิมประมาณ 48 รายที่ซื้อโทเคน HongCoin ใน ICO ปี 2016 มีสิทธิ์ที่จะกู้คืนยอด ETH ที่ถูกล็อกไว้ได้จากการแก้ไขครั้งนี้

ตัวชี้วัด ค่า
ETH ที่ปลดล็อกทั้งหมด 1,003.62 ETH (~2 ล้านดอลลาร์)
จำนวนผู้มีสิทธิ์ในการกู้คืน 48
นักลงทุนที่กู้คืนเงินได้แล้ว 2
ETH ที่กู้คืนแล้วจนถึงปัจจุบัน 96.5 ETH (~193,000 ดอลลาร์)
จำนวนธุรกรรมที่เซ็น 41
จำนวนผู้ถือที่ได้เงินคืนโดยตรง 7 คน

ที่มีนักลงทุนแค่สองรายเรียกร้องเงินคืนจนถึงตอนนี้น่าจะเป็นเพราะความยากลำบากในการติดต่อและดึงดูดนักลงทุนที่หายไปนาน หรือการต้องให้ทำขั้นตอนคืนเงินต่อเนื่อง การติดต่อถึงผู้ถือรายอื่นๆ ต่อไปน่าจะช่วยเพิ่มอัตราการกู้คืนเมื่อเวลาผ่านไป

กรณีนี้ชี้ให้เห็นว่าบั๊กในสัญญาเก่าสามารถล็อกเงินจำนวนมากได้เป็นเวลาหลายปี และเน้นความสำคัญของการตรวจสอบโค้ดอย่างลึกซึ้งแม้หลัง ICO จะสิ้นสุดนานแล้ว


ทำไมบั๊ก integer-overflow จึงยังเป็นความเสี่ยงระยะยาวในสัญญาเก่า?

เหตุการณ์ HongCoin สะท้อนช่องโหว่คลาสสิกที่เกิดจากเวอร์ชัน Solidity ก่อนหน้า ที่การคำนวณโปรแกรมเลขจำนวนเต็ม — โดยไม่มีการตรวจจับ overflow และ underflow ในตัว — สามารถนำไปสู่สถานะที่ไม่พึงประสงค์ได้โดยไม่แจ้งเตือน

ก่อน Solidity v0.8.0 นักพัฒนาต้องใช้ไลบรารีภายนอกอย่าง SafeMath เพื่อป้องกัน overflow อย่างชัดเจน ในสัญญา ICO เก่าหลายฉบับ การป้องกันนี้มักไม่ครบถ้วนหรือขาดหายไป ดังนั้น:

  • การดำเนินการเลขจำนวนเต็มอาจกลับค่า (เช่น การลบทำให้เลขติดลบที่กลายเป็นเลขบวกขนาดใหญ่อย่างไม่คาดคิด)
  • ฟังก์ชัน admin หรือเจ้าของที่จัดการตัวแปรยอดเงิน อาจถูกใช้ในทางที่ผิดเพื่อปลดล็อกหรือปิดล็อกเงินโดยไม่ได้ตั้งใจ
  • สัญญาเก่าที่เผยแพร่บน Ethereum mainnet ไม่สามารถแก้ไขได้ ทำให้ความเสี่ยงนี้ติดตัวตลอดไป

บั๊กใน HongCoin อยู่ในฟังก์ชัน admin เพียงเท่านั้น ซึ่งแสดงให้เห็นว่าพื้นที่จำกัดในโค้ดก็มีช่องโหว่ที่อาจถูกมองข้ามได้

ยุค Solidity การป้องกัน overflow แนวปฏิบัติทั่วไป
ก่อน Solidity 0.8.0 ไม่มีค่าเริ่มต้น ใช้ SafeMath หรือไลบรารีอื่นๆ
Solidity 0.8.0 ขึ้นไป ตรวจจับ overflow ในตัว คำนวณอย่างปลอดภัยเป็นค่าเริ่มต้น

ความอยู่รอดของช่องโหว่นี้เน้นย้ำถึงคุณค่าของการตรวจสอบความปลอดภัยเฉพาะเจาะจงสัญญาเก่า โดยเฉพาะอย่างยิ่งเมื่อต้องรักษาเงินทุนที่ยังล็อกอยู่หรือการควบคุมที่แม้จะจำกัดแต่สำคัญ ความสามารถในการจำลองเรียกใช้งานบน fork ของ testnet และมีผู้เซ็น multisig ร่วมสำหรับการแก้ไขจึงเป็นสิ่งจำเป็น


บทเรียนความปลอดภัยที่กู้คืน HongCoin สอนอะไรบ้าง?

กรณี integer overflow ที่ถูกละเลยมาเนิ่นนานนี้เสริมข้อคิดสำคัญสำหรับชุมชน Web3 ด้านความปลอดภัย โดยเฉพาะอย่างยิ่งเมื่อระบบนิเวศ DeFi มีความซับซ้อนและขนาดใหญ่ขึ้นเรื่อยๆ:

  • ความเสี่ยงสัญญาเก่ายังคงอยู่: สัญญาที่เปิดใช้งาน แม้จะผ่านมาหลายปี อาจล็อกสินทรัพย์บนเชนจำนวนมากอย่างไม่มีกำหนดเนื่องจากบั๊กเล็กน้อยที่ไม่ถูกตรวจพบตั้งแต่แรก
  • กุญแจ admin และ multisigs สำคัญ: สิทธิ์ที่ควบคุมโดย multisig wallet เปิดเส้นทางให้แก้ปัญหาได้ แต่ก็เพิ่มความซับซ้อนในการประสานงาน การออกแบบการกำกับดูแลควรคาดการณ์สภาพการอัปเกรดหรือแก้ไขไว้ล่วงหน้า
  • Integer overflow ยังเป็นเรื่องที่ต้องกังวล: แม้มีฟีเจอร์ป้องกันใน Solidity รุ่นใหม่ การตรวจสอบสมมติฐานและกรณีขอบของการคำนวณยังเป็นสิ่งจำเป็น โดยเฉพาะเมื่ออัปเกรดสัญญาเก่าหรือย้ายข้อมูล
  • การเปิดเผยข้อมูลและความร่วมมืออย่างรับผิดชอบ: นักวิจัย 0xflorent แสดงตัวอย่างการปฏิบัติที่ดีโดยเปิดเผยข้อมูลอย่างเป็นส่วนตัว ตรวจสอบบน testnet และร่วมมือกับผู้ถือ multisig ในการปลดล็อกเงินอย่างถูกต้องตามจรรยาบรรณ
  • ความไว้วางใจนักลงทุนและการกู้คืนทุน: การปลดล็อกเงินที่ถูกล็อกสามารถฟื้นฟูมูลค่าที่สำคัญให้ผู้ถือหลังเวลาผ่านไปหลายปี ลดความเสียหายด้านชื่อเสียงและสร้างความเชื่อมั่นในชุมชน
ประเด็นสำคัญ ตัวอย่างกรณี HongCoin แนวทางปฏิบัติที่ดีที่สุด
ประเภทช่องโหว่ Integer-overflow ในฟังก์ชัน admin ตรวจสอบโค้ดครบถ้วน, ใช้ SafeMath
วิธีการกู้คืน ประสาน multisig และตรวจสอบ testnet การควบคุมหลายฝ่าย; การเปิดตัวและตรวจสอบเป็นลำดับ
ผลกระทบต่อนักลงทุน ปลดล็อก 2 ล้านดอลลาร์ให้ 48 นักลงทุน การสื่อสารโปร่งใสและคืนเงิน
ความเสี่ยงสัญญาเก่า เงินถูกล็อกมา 9 ปี การตรวจสอบอย่างต่อเนื่องและตรวจสัญญาเก่า

ทีมความปลอดภัยที่ดูแลหรือเผยแพร่โปรโตคอลเก่าควรระวังเป็นพิเศษกับปัญหาที่ซ่อนอยู่เหล่านี้ซึ่งยังอาจทำให้เกิดผลกระทบทางปฏิบัติหรือการเงินครั้งใหญ่ได้


ข้อมูลเชิงลึกจาก Soken: “Integer overflow ในสัญญาอัจฉริยะเก่าเป็นความท้าทายด้านความปลอดภัยที่ไม่มีวันหมดไป การตรวจสอบของเรามักพบรูปแบบเก่าที่ไม่มีการป้องกันในตัวภาษา ทำให้เกิดความเสี่ยงแฝง การแก้ไขอย่างประสานงาน—โดยเฉพาะในสัญญาที่ควบคุมโดย multisignature wallet—ต้องการความสมดุลที่ละเอียดระหว่างความถูกต้องทางเทคนิคกับการกำกับดูแลผู้มีส่วนได้เสีย กรณีกู้คืน HongCoin นี้เป็นตัวอย่างว่าวิธีการเปิดเผยอย่างมีจริยธรรมพร้อมการกำกับดูแลสามารถปลดล็อกมูลค่าที่ถูกกักขังไว้ได้หลายปีหลังเปิดตัว”


บทสรุป: ปลดล็อกมูลค่าเก่าผ่านความระมัดระวังทางเทคนิคและการกำกับดูแล

การกู้คืนกรณี integer overflow ของ HongCoin แสดงให้เห็นว่าช่องโหว่ของโค้ดจากยุค Solidity ก่อนหน้านี้สามารถกักขังเงินหลายล้านดอลลาร์ไว้เกือบสิบปีได้อย่างไร ความร่วมมือที่นำโดย 0xflorent และผู้ถือ multisig ของ HongCoin แสดงให้เห็นประสิทธิภาพของกระบวนการเปิดเผยข้อมูลและแนวทางการแก้ไขที่ได้รับการสนับสนุนจากการกำกับดูแลอย่างปลอดภัย

ความเข้าใจถึงความเสี่ยงของสัญญาเก่าเหล่านี้เป็นสิ่งจำเป็นสำหรับสุขภาพระยะยาวของระบบนิเวศ Ethereum ที่สัญญารุ่นเก่ายังคงเป็นรากฐานสำคัญ แม้มีความซับซ้อนและรายละเอียดที่ซ่อนอยู่ โปรเจกต์บล็อกเชนที่รับผิดชอบดูแลหรืออัปเกรดสัญญาเก่าควรให้ความสำคัญกับการตรวจสอบย้อนหลังเกี่ยวกับ integer overflow และปัญหาที่เกี่ยวข้อง โดยใช้ประโยชน์จากการจำลองใน testnet forks และการอนุมัติ multisig เพื่อการแก้ไขที่ปลอดภัย

ก้าวต่อไปที่เหมาะสมสำหรับทีมที่บริหารสัญญาเก่าคือการประเมินเฉพาะจุดบั๊ก integer overflow โดยแม็พเส้นทาง admin ที่ละเอียดและจำลองผลกระทบบน test forks — โดยเฉพาะอย่างยิ่งในสถานการณ์ที่มีเงินติดอยู่หรือสถานะตัวแปรถูกแช่แข็ง การดำเนินการเช่นนี้ล่วงหน้าช่วยป้องกันการสูญเสียแก่นักลงทุนและปลดล็อกมูลค่าที่ซ่อนเร้น

การผนวกการประเมินสัญญาเก่าอย่างเข้มงวดไว้ในโปรแกรมความปลอดภัยเหมือนการเตรียมพร้อมรับมือเหตุการณ์ จะช่วยเสริมความปลอดภัยของโปรโตคอลและความเชื่อมั่นแก่นักลงทุน บริการตรวจสอบทางเทคนิคของ Soken เชี่ยวชาญในการตรวจสอบสัญญาอัจฉริยะรุ่นเก่าและรุ่นใหม่ ช่วยให้โปรเจกต์ระบุและแก้ไขความเสี่ยงที่เกิดขึ้นตั้งแต่ต้นจนถึงช่วงเวลาหลังเปิดใช้งานเป็นเวลานาน


source_name: a leading crypto outlet: Whitehat developer unlocks $2 million stuck in a 2016 Ethereum ICO contract for nine years

Frequently Asked Questions

อะไรทำให้เงิน $2 ล้านติดอยู่ในสัญญา HongCoin ICO?

บั๊ก integer overflow ในฟังก์ชัน admin ที่จำกัดของสัญญา ICO ปี 2016 บน Ethereum ของ HongCoin ทำให้ไม่สามารถเคลื่อนย้ายเงินได้ ทำให้มีเงินประมาณ 1,003.62 ETH หรือประมาณ $2 ล้าน ถูกล็อกไว้ถึง 9 ปี

ช่องโหว่ integer overflow ถูกค้นพบและแก้ไขอย่างไร?

นักวิจัยด้านความปลอดภัย 0xflorent ตรวจพบช่องโหว่ในฟังก์ชัน admin ที่จำกัดโดย multisignature wallet และใช้การประสานงาน multisig เพื่อกู้คืนเงินที่ล็อกไว้โดยไม่ทำลายสิทธิ์ของผู้มีส่วนได้ส่วนเสีย

บทเรียนความปลอดภัย smart contract ที่ได้จากเหตุการณ์ HongCoin คืออะไร?

เหตุการณ์นี้เน้นย้ำความสำคัญของการป้องกัน integer overflow การรักษาความปลอดภัยฟังก์ชัน admin และการจัดการความเสี่ยงในสัญญาเก่าเพื่อรองรับความเข้ากันได้ย้อนหลังและช่วยให้กู้คืนเงินในอนาคตได้

ทำไมช่องโหว่ใน smart contract เก่าถึงสำคัญใน DeFi?

สัญญาเก่าที่ไม่มีมาตรการรักษาความปลอดภัยทันสมัยอาจมีบั๊กซ่อนเร้นที่ล็อกเงินไว้หลายปี ทำให้เกิดความเสี่ยงในระบบการเงินกระจายและการขายโทเค็น ICO เน้นความจำเป็นของการตรวจสอบและแก้ไขประจำ

multisignature wallet มีบทบาทอย่างไรในการกู้คืนเงิน?

multisignature wallet ควบคุมฟังก์ชัน admin ที่จำกัดและทำให้สามารถปลดล็อกเงินอย่างปลอดภัยด้วยการประสานงานที่เหมาะสม แสดงถึงวิธีการกู้คืนแบบ white-hat ที่เคารพการควบคุมการกำกับดูแล

Article author

Frequently Asked Questions

อะไรทำให้เงิน $2 ล้านติดอยู่ในสัญญา HongCoin ICO?

บั๊ก integer overflow ในฟังก์ชัน admin ที่จำกัดของสัญญา ICO ปี 2016 บน Ethereum ของ HongCoin ทำให้ไม่สามารถเคลื่อนย้ายเงินได้ ทำให้มีเงินประมาณ 1,003.62 ETH หรือประมาณ $2 ล้าน ถูกล็อกไว้ถึง 9 ปี

ช่องโหว่ integer overflow ถูกค้นพบและแก้ไขอย่างไร?

นักวิจัยด้านความปลอดภัย 0xflorent ตรวจพบช่องโหว่ในฟังก์ชัน admin ที่จำกัดโดย multisignature wallet และใช้การประสานงาน multisig เพื่อกู้คืนเงินที่ล็อกไว้โดยไม่ทำลายสิทธิ์ของผู้มีส่วนได้ส่วนเสีย

บทเรียนความปลอดภัย smart contract ที่ได้จากเหตุการณ์ HongCoin คืออะไร?

เหตุการณ์นี้เน้นย้ำความสำคัญของการป้องกัน integer overflow การรักษาความปลอดภัยฟังก์ชัน admin และการจัดการความเสี่ยงในสัญญาเก่าเพื่อรองรับความเข้ากันได้ย้อนหลังและช่วยให้กู้คืนเงินในอนาคตได้

ทำไมช่องโหว่ใน smart contract เก่าถึงสำคัญใน DeFi?

สัญญาเก่าที่ไม่มีมาตรการรักษาความปลอดภัยทันสมัยอาจมีบั๊กซ่อนเร้นที่ล็อกเงินไว้หลายปี ทำให้เกิดความเสี่ยงในระบบการเงินกระจายและการขายโทเค็น ICO เน้นความจำเป็นของการตรวจสอบและแก้ไขประจำ

multisignature wallet มีบทบาทอย่างไรในการกู้คืนเงิน?

multisignature wallet ควบคุมฟังก์ชัน admin ที่จำกัดและทำให้สามารถปลดล็อกเงินอย่างปลอดภัยด้วยการประสานงานที่เหมาะสม แสดงถึงวิธีการกู้คืนแบบ white-hat ที่เคารพการควบคุมการกำกับดูแล

แชท