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

ระบบนิเวศ Ethereum ETH$2,200ETH$2,20024h+0.46%7d+6.96%30d+8.02%1y+31.82%MCap: N/AVol: N/Avia Statility คนเดียวได้เห็นการระบายออกกว่า 5 พันล้านดอลลาร์ผ่านการถูกใช้ประโยชน์นับตั้งแต่ DeFi เริ่มขยายตัวในปี 2020 บางอย่างเป็นการโจมตี zero-day ที่ซับซ้อน หลายอย่างเป็นรูปแบบความเสี่ยงที่เป็นที่รู้จักกันดีซึ่งผู้ตรวจสอบพลาด หรือซึ่งนำเสนอหลังจากการตรวจสอบเสร็จสิ้น นี่คือเวกเตอร์การโจมตีที่ยังคงแสดงตัว

ETH Price (365 days)$2,200 Analyze

Live data via Statility

ผู้ต้องสงสัยตามปกติ

Reentrancy

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

การโจมตี reentrancy ที่มีชื่อเสียงที่สุดคือการแฮก The DAO ในปี 2016 ซึ่งระบายออก ETH ประมาณ 60 ล้านดอลลาร์ และในที่สุดนำไปสู่การแยกแบบ hard fork ของ Ethereum ที่สร้าง Ethereum Classic คุณอาจคิดว่าอุตสาหกรรมได้เรียนรู้บทเรียนของมัน มันไม่ได้

ในเดือนกรกฎาคม 2023 ความเสี่ยง reentrancy ในคอมไพเลอร์ Vyper (ไม่ใช่ในรหัสของโปรโตคอลใด ๆ แต่ในภาษาโปรแกรมมิ่งตัวเอง) นำไปสู่การถูกใช้ประโยชน์ข้ามพูลหลายแห่งของ Curve Finance โดยระบายออกกว่า 60 ล้านดอลลาร์ ข้อบกพร่องนี้มีอยู่ในเวอร์ชัน Vyper 0.2.15 ถึง 0.3.0 มาหลายปี สิ่งนี้มีความสำคัญเพราะมันแสดงให้เห็นว่า reentrancy สามารถซ่อนตัวได้ในชั้นของสแต็กที่นักพัฒนาโปรโตคอลและผู้ตรวจสอบไม่ได้มองหา

Oracle Manipulation

โปรโตคอล DeFi ต้องการข้อมูลราคาเพื่อทำงาน แพลตฟอร์มการให้ยืมต้องรู้มูลค่าของหลักประกัน DEX ต้องการราคาอ้างอิงเพื่อการป้องกัน slippage ข้อมูลราคานี้มาจากอ็อราเคิล และการจัดการอ็อราเคิลหมายถึงการจัดการโปรโตคอล

การถูกใช้ประโยชน์ของ Mango Markets ในเดือนตุลาคม 2022 เป็นตัวอย่างตามตำราเรียน Avraham Eisenberg ใช้ 5 ล้านดอลลาร์เพื่อปั๊มราคาของโทเค็น MNGO อย่างมีเทียมทางบนแลกเปลี่ยนของ Mango เอง ซึ่งทำให้มูลค่าของตำแหน่งหลักประกัน เขาเพิ่มขึ้น เขาจึงยืม 114 ล้านดอลลาร์เทียบกับหลักประกันที่สูงขึ้นนั้นและถอนออก จากเทคนิคแล้ว โปรโตคอลทำงานตรงตามที่ออกแบบไว้ อ็อราเคิลรายงานราคาที่เห็น ตรรกะการให้ยืมปฏิบัติตามกฎของมัน แต่ระบบสันนิษฐานว่าราคาอ็อราเคิลสะท้อนมูลค่าตลาดที่แท้จริง และสมมติฐานนั้นผิด

โปรโตคอลที่ใช้แหล่งข้อมูลบนโซ่เดียวสำหรับข้อมูลราคา โดยเฉพาะอย่างยิ่งพูลการซื้อขายของโทเค็นสภาพคล่องต่ำเพียงอย่างเดียว มีความเสี่ยงโดยเนื้อแท้ต่อสิ่งนี้ Chainlink★★★★4.2Chainlinkbrand★★★★4.2/55 AI reviewsChainlink is the leading oracle platform powering DeFi and onchain capital markets, securing over $25 trillion in tra...via Rexiew Chainlink และเครือข่ายอ็อราเคิลแบบกระจายตัวอื่น ๆ มีอยู่เพื่อบรรเทาสิ่งนี้ด้วยการรวมข้อมูลจากแหล่งที่มาหลายแห่ง แต่ไม่ใช่ทุกโปรโตคอลที่ใช้พวกเขา และแม้แต่ฟีดแบบรวมก็ยังสามารถจัดการได้ภายใต้เงื่อนไขที่รุนแรง

Flash Loan Attacks

Flash loan คือสินเชื่อที่ไม่มีหลักประกันซึ่งต้องยืมและชำระคืนภายในธุรกรรมเดียว หากไม่มีการชำระคืน ธุรกรรมทั้งหมดจะย้อนกลับราวกับว่าไม่เคยเกิดขึ้นเลย นี่เป็นการดั้งเดิมทางการเงินที่ใหม่อย่างแท้จริงซึ่งไม่มีความเท่าเทียมกันในการเงินแบบดั้งเดิม

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

รูปแบบนี้ซ้ำกันข้ามการถูกใช้ประโยชน์หลายสิบอย่าง: ยืมจำนวนมหาศาลผ่าน flash loan ใช้มันเพื่อจัดการราคาอ็อราเคิลหรือระบายออกจากพูลที่เสี่ยง ชำระคืนสินเชื่อ เก็บกำไร การโจมตี bZx ในปี 2020 เป็นหนึ่งในกรณีแรกที่สาธิตรูปแบบนี้ Pancake Bunny ในปี 2021 สูญเสีย 45 ล้านดอลลาร์ให้กับการจัดการราคาที่ขับเคลื่อนด้วย flash loan รายชื่อยังคงเพิ่มขึ้น

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

สิ่งที่การตรวจสอบจริงๆ ทำ (และไม่ทำ)

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

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

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

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

สิ่งที่การตรวจสอบจับได้เทียบกับสิ่งที่พวกเขาพลาด

การตรวจสอบมักจะจับได้การตรวจสอบมักจะพลาด
รูปแบบ Reentrancyการเปลี่ยนแปลงรหัสหลังการตรวจสอบ
Integer overflow/underflowความเสี่ยงในการสร้างองค์ประกอบข้ามโปรโตคอล
ข้อผิดพลาดการควบคุมการเข้าถึงข้อบกพร่องในการออกแบบทางเศรษฐกิจหรือการกระตุ้น
รูปแบบความเสี่ยงที่รู้จักเวกเตอร์การโจมตีใหม่
ปัญหาการเพิ่มประสิทธิภาพแก๊สพื้นผิวการโจมตีการตรวจสอบสิทธิ
ความสอดคล้องมาตรฐาน (ERC-20 ฯลฯ)ข้อบกพร่องระดับโครงสร้างพื้นฐาน (คอมไพเลอร์ EVM)

รูปแบบหลังการทำการพิสูจน์ปากคำ

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

สมมติฐานที่ไม่ได้รับการตรวจสอบเป็นสาเหตุรากเหง้าที่พบได้บ่อยที่สุด นักพัฒนาสันนิษฐานว่าราคาอ็อราเคิลจะแม่นยำ พวกเขาสันนิษฐานว่ามีเพียงสัญญาที่มีจุดประสงค์เท่านั้นที่จะเรียกใช้ฟังก์ชันเฉพาะ พวกเขาสันนิษฐานว่าไม่มีใครมีเงินทุนเพียงพอที่จะเคลื่อนตลาดไป 40% ในบล็อกเดียว ทุกสมมติฐานคือพื้นผิวการโจมตีที่มีศักยภาพ

สัญญาที่อัปเกรดได้และคีย์ผู้ดูแลระบบเป็นธีมที่เกิดซ้ำอีกครั้ง โปรโตคอลหลายตัวใช้รูปแบบพร็อกซีที่อนุญาตให้ทีมอัปเกรดตรรกะสัญญาหลังจากปรับใช้ นี่ตั้งใจให้เป็นกลไกความปลอดภัย ช่วยให้นักพัฒนาแก้ไขข้อบกพร่องได้อย่างรวดเร็ว แต่มันยังหมายความว่าคีย์ผู้ดูแลระบบที่ถูกบดบังสามารถใช้เพื่อแทนที่สัญญาการทำงานด้วยหนึ่งที่เป็นอันตราย การแฮก Ronin Bridge ในปี 2022 ซึ่งสูญเสีย 625 ล้านดอลลาร์ ในที่สุดก็เป็นการหลีกหนีจากคีย์ผู้ดูแลระบบมากกว่าข้อบกพร่องในตรรกะสัญญาอัจฉริยะ

การถูกใช้ประโยชน์ DeFi ที่น่าสังเกต

โปรโตคอลปีจำนวนที่สูญเสียประเภทการโจมตี
The DAO2016$60MReentrancy
Ronin Bridge2022$625Mการหลีกหนีจากคีย์ validator
Wormhole2022$320Mการตรวจสอบลายเซ็นข้าม
Mango Markets2022$114MOracle / การจัดการราคา
Curve (Vyper)2023$60MReentrancy ระดับคอมไพเลอร์
Euler Finance2023$197Mข้อบกพร่องในตรรกะการบังคับชำระหนี้

การปกป้องตัวเอง

คุณไม่สามารถตรวจสอบสัญญาอัจฉริยะได้ด้วยตัวเองเว้นแต่คุณเป็นนักพัฒนา Solidity และแม้ว่าคุณจะเป็นก็อาจจะพลาดสิ่งต่างๆ แต่คุณสามารถประเมินความเสี่ยงได้ชัดเจนยิ่งขึ้นโดยการตั้งคำถามที่ถูกต้อง

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

เข้าใจว่าใครถือคีย์ผู้ดูแลระบบ หาก multisig ที่มีผู้ลงนามสามคนควบคุมความสามารถในการอัปเกรดสัญญา นั่นคือความเสี่ยงการรวมศูนย์ที่มีความหมาย หากคีย์เหล่านั้นนั่งอยู่เบื้องหลัง timelock ที่ให้ผู้ใช้ 48 ชั่วโมงในการออกจากก่อนที่จะมีการเปลี่ยนแปลง นั่นเป็นการออกแบบที่ดีกว่า

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

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

ความปลอดภัย DeFi กำลังปรับปรุง เครื่องมือตรวจสอบอย่างเป็นทางการ การปฏิบัติการตรวจสอบที่ซับซ้อนมากขึ้น และฐานรหัสที่ทดสอบจากการรบเหมือน Uniswap★★★★★4.6Uniswapbrand★★★★★4.6/54 AI reviewsUniswap App (app.uniswap.org) is the web interface to Uniswap"the leading decentralized exchange (DEX) on Ethereum an...via Rexiew Uniswap และ Aave★★★★★4.6Aavebrand★★★★★4.6/55 AI reviewsAave serves as a decentralized, non-custodial liquidity protocol in DeFi, allowing users to supply assets for interes...via Rexiew Aave ได้พิสูจน์ว่าสัญญาที่สร้างได้ดีสามารถรักษาเงินหลายพันล้านดอลลาร์ตลอดหลายปีโดยไม่มีเหตุการณ์ใด แต่พรมแดนจะยุ่งเสมอ และรหัสใหม่มีความเสี่ยงใหม่ โปรโตคอลที่เสนออัตราผลตอบแทนสูงสุดมักเป็นปรากฏการณ์ที่ทดสอบน้อยที่สุดตามกาลเวลาและเงื่อนไขที่เป็นปฏิปักษ์ นั่นไม่ใช่เรื่องบังเอิญ

กำลังมองหาแพลตฟอร์มคริปโต แลกเปลี่ยน และแอพ DeFi เรียบร้อยแล้ว ค้นหาไดเรกทอรีที่ดูแลของเรา: