ทีมวิจัยจากมหาวิทยาลัยแห่งชาติสิงคโปร์ (NUS) วิเคราะห์ smart contract บน
Ethereum เพื่อหาช่องโหว่ต่างๆ จากทั้งหมดกว่าล้านสัญญา
และพบว่ากว่าสามหมื่นสัญญาน่าจะมีช่องโหว่
ช่องโหว่ของ smart contract แบ่งออกเป็น 3 ประเภทหลักๆ ได้แก่
- Prodigal Contract สัญญาที่เปิดให้ใครก็ได้มาโอนเงินออกไป เพราะมีการตรวจสอบไม่ดีพอในบางฟังก์ชั่น
- Suicidal Contract สัญญาที่เปิดช่องให้ใครก็ได้มาสั่ง kill สัญญา ทำให้สัญญาใช้งานไม่ได้ และหากมีเงินอยู่ก็ถูกล็อกเอาเงินออกไม่ได้อีกต่อไป ช่องโหว่ประเภทนี้เมื่อปีที่แล้วมีเหตุครั้งใหญ่ คือเหตุการณ์ Parity Wallet
- 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 ล้านดอลลาร์
ที่มา: Blognone
ไม่มีความคิดเห็น:
แสดงความคิดเห็น