ทีมวิจัยวิเคราะห์ Smart Contract บน Ethereum พบช่องโหว่กว่า 30,000 สัญญา

by lew
6 March 2018 - 18:20

ทีมวิจัยจากมหาวิทยาลัยแห่งชาติสิงคโปร์ (NUS) วิเคราะห์ smart contract บน Ethereum เพื่อหาช่องโหว่ต่างๆ จากทั้งหมดกว่าล้านสัญญา และพบว่ากว่าสามหมื่นสัญญาน่าจะมีช่องโหว่

ช่องโหว่ของ smart contract แบ่งออกเป็น 3 ประเภทหลักๆ ได้แก่

  1. Prodigal Contract สัญญาที่เปิดให้ใครก็ได้มาโอนเงินออกไป เพราะมีการตรวจสอบไม่ดีพอในบางฟังก์ชั่น
  2. Suicidal Contract สัญญาที่เปิดช่องให้ใครก็ได้มาสั่ง kill สัญญา ทำให้สัญญาใช้งานไม่ได้ และหากมีเงินอยู่ก็ถูกล็อกเอาเงินออกไม่ได้อีกต่อไป ช่องโหว่ประเภทนี้เมื่อปีที่แล้วมีเหตุครั้งใหญ่ คือเหตุการณ์ Parity Wallet
  3. Greedy Contract สัญญาที่มีบั๊กบางอย่าง ทำให้แม้จะส่งเงินเข้ามาได้ แต่กลับนำเงินกลับออกมาไม่ได้เลยไม่ว่าช่องทางใดๆ

นอกจากนี้ทีมงานยังจัดหมวด Posthumous Contracts สัญญาที่ถูก kill ไปแล้วแต่ยังมีคนเผลอโอนเงินเข้าไป ทำให้เงินค้างอยู่ในสัญญา และนำออกมาไม่ได้อีกเลย แต่สัญญาประเภทนี้ไม่ใช่ช่องโหว่ที่ต้องการวิเคราะห์จึงไม่นับรวมไว้

ทีมงานสร้างซอฟต์แวร์วิเคราะห์ไบนารี smart contract สำหรับ EVM บน Ethereum เพื่อวิเคราะห์สัญญา 970,898 รายการ โดยสัญญาเหล่านี้มีซอร์สโค้ดบน Etherscan เพียง 1% เท่านั้น ซอฟต์แวร์ที่วิเคราะห์ไบนารีที่ทีมวิจัยพัฒนาขึ้นชื่อว่า MAIAN จะวิเคราะห์หาช่องโหว่สามประเภทหลักดังกล่าว

MAIAN พบว่ามีสัญญาที่น่าจะมีช่องโหว่ 1 ใน 3 ประเภท รวมถึง 34,200 สัญญา ทีมงานวิเคราะห์ผลซ้ำด้วยการตรวจซอร์สโค้ด 3,759 สัญญา พบว่า MAIAN แม่นยำแบบ true positive อยู่ที่ 89% ทำให้คาดได้ว่าสัญญาที่มีช่องโหว่ 1 ใน 3 รูปแบบเหล่านี้ก็น่าจะอยู่ที่ประมาณ 30,000 รายการ

ช่องโหว่จากความผิดพลาดในการเขียนโปรแกรมบน smart contract เป็นสิ่งที่เกิดขึ้นได้เช่นเดียวกับซอฟต์แวร์อื่นๆ ปัญหาคือซอฟต์แวร์ดเหล่านี้ทำงานตลอดเวลาและหลายครั้งไม่สามารถหยุดการทำงานได้แม้มีช่องโหว่ Vitalik Buterin ผู้สร้าง Ethereum เตือนว่าไม่ควรสร้างสัญญาที่มีมูลค่าเกิน 10 ล้านดอลลาร์

ที่มา - Finding The Greedy, Prodigal, and Suicidal Contracts at Scale

Blognone Jobs Premium