BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

PeckShield: แพลตฟอร์ม DeFi Balancer ถูกแฮ็กและกระบวนการรื้อทางเทคนิคทั้งหมด

PeckShield
特邀专栏作者
2020-06-30 03:17
บทความนี้มีประมาณ 2036 คำ การอ่านทั้งหมดใช้เวลาประมาณ 3 นาที
โทเค็นเงินฝืดบน Balancer และสัญญาอัจฉริยะนั้นเข้ากันไม่ได้ในบางสถานการณ์ ทำให้ผู้โจมตีสามารถ
สรุปโดย AI
ขยาย
โทเค็นเงินฝืดบน Balancer และสัญญาอัจฉริยะนั้นเข้ากันไม่ได้ในบางสถานการณ์ ทำให้ผู้โจมตีสามารถ

หมายเหตุบรรณาธิการ: บทความนี้มาจากPeckShield(ID:PeckShield)พิมพ์ซ้ำโดย Odaily โดยได้รับอนุญาต

หมายเหตุบรรณาธิการ: บทความนี้มาจาก

พิมพ์ซ้ำโดย Odaily โดยได้รับอนุญาต

เมื่อเวลา 02:03 น. ของวันที่ 29 มิถุนายน ตามเวลาปักกิ่ง กลุ่มโทเค็นเงินฝืด ERC20 สองรายการ ได้แก่ STA และ STONK บนแพลตฟอร์ม DeFi Balancer ซึ่งเพิ่งได้รับความสนใจอย่างมากเนื่องจากโมเดล "การยืมเพื่อขุด" ถูกแฮ็กและ สูญเสียเงินรวมกว่า 500,000 ดอลลาร์

หลังจากที่เจ้าหน้าที่รักษาความปลอดภัยของ PeckShield เข้าแทรกแซงในการวิเคราะห์พวกเขาก็พบแก่นแท้ของปัญหาอย่างรวดเร็ว โทเค็นเงินฝืดบน Balancer และสัญญาอัจฉริยะนั้นเข้ากันไม่ได้ในบางสถานการณ์ทำให้ผู้โจมตีสามารถสร้างแหล่งหมุนเวียน STA/STONK ที่มีการเบี่ยงเบนของราคาและได้รับผลกำไร .

การโจมตีของแฮ็กเกอร์แบ่งออกเป็นสี่ขั้นตอนโดยเฉพาะ:

1) ผู้โจมตียืมเงิน 104,331 WETH จากแพลตฟอร์ม dYdX ผ่านการกู้ยืมแบบแฟลช

2) ผู้โจมตีดำเนินการเรียก swapexactMountin() ซ้ำๆ จนกว่าโทเค็น STA ส่วนใหญ่ที่ Balancer เป็นเจ้าของจะหมดลง จากนั้นจึงเริ่มการโจมตีครั้งต่อไป ในท้ายที่สุด Balancer เหลือ 0.000000000000000001 STA เท่านั้น

3) ผู้โจมตีใช้ประโยชน์จากความไม่ลงรอยกันระหว่างโทเค็น STA และสัญญาอัจฉริยะของ Balancer นั่นคือความไม่ตรงกันระหว่างการทำบัญชีและยอดคงเหลือ เพื่อดำเนินการโจมตี ทำให้สินทรัพย์อื่น ๆ ในกองทุนหมดลง และในที่สุดก็ทำเงินรวมมูลค่า 523,616.52 ดอลลาร์ สินทรัพย์ดิจิทัล4) ผู้โจมตีชำระคืนเงินกู้แฟลชที่ยืมมาจาก dYdX และนำทรัพย์สินดิจิทัลที่ได้รับจากการโจมตีไปข้อเสนอสินเชื่อแฟลช

ชื่อเรื่องรอง

Balancer ถูกแฮ็กและกระบวนการรื้อทางเทคนิคทั้งหมด

คำอธิบายภาพ

(แสดงขั้นตอนการแฮ็คทั้งหมด)

ขั้นตอนที่ 1: สินเชื่อแฟลช

จาก dYdX flash loan 104,331 WETH ผู้อ่านที่คุ้นเคยกับรูปแบบการให้ยืม DeFi น่าจะค่อนข้างชัดเจนเกี่ยวกับส่วนนี้ ดังนั้นฉันจะไม่พูดซ้ำที่นี่

ขั้นตอนที่ 2: ล้างสินทรัพย์ STA ของ Balancer

ผู้โจมตีทำให้สินทรัพย์ STA ของ Balancer ว่างเปล่าผ่านการเรียกหลายครั้งเพื่อ swapExactAmountIn() เพื่อเตรียมพร้อมสำหรับการโจมตีครั้งต่อไป เป็นที่น่าสังเกตว่าเราพบว่ามีขีดจำกัดสูงสุดของจำนวนสินทรัพย์ที่สามารถแลกเปลี่ยนได้ในแต่ละครั้งในรหัสสัญญา อย่างไรก็ตาม ผู้โจมตีที่มีไหวพริบได้คำนวณจำนวนสูงสุดของ WETH ล่วงหน้าที่สามารถแลกเปลี่ยนได้และชาญฉลาด ทำให้ Balancer เหลือเพียง 0.000000000000000001 STA

ขั้นตอนที่สาม: โจมตีเพื่อผลกำไร

หลังจากการเตรียมการสองขั้นตอนแรก ก็ถึงเวลาที่ผู้โจมตีจะแสดงทักษะที่แท้จริงของเขา!

(ขั้นตอนที่ 3: บนไอคอนกำไรจากการโจมตี)

จากข้อมูลข้างต้น ผู้โจมตีส่ง 0.0000000000000000001 STA ไปยัง BPool ผ่านฟังก์ชัน swapExactAmountIn() และแลกเปลี่ยนทันที 30,347 WETH ด้วยส่วนต่างมูลค่าที่สูงมาก ทำให้ได้กำไร ในขณะนี้ กลไกการบัญชีภายในของ BPool _records[STA] เพิ่ม 1 ก่อนที่ BPool จะได้รับ 0.000000000000000001 STA จริง (หมายเหตุ: หลังจากนั้น ผู้โจมตีจะใช้ gulp() เพื่อรีเซ็ตค่า)

คำอธิบายภาพ


(ขั้นตอนที่ 3: ใต้ไอคอนเพื่อผลกำไรจากการโจมตี)

นอกจากนี้ เราพบว่าที่ด้านล่างของ swapExactAmountIn(), _pullUnderlying() พยายามรวบรวม STA ที่ใช้ไปที่เกี่ยวข้องจากฝั่งผู้โจมตี อย่างไรก็ตาม เนื่องจาก STA จะเสียค่าธรรมเนียมการจัดการ 1% เมื่อโอนเงิน ดังนั้น BPool จริงจะไม่ได้รับ STA ใดๆ ซึ่งจะทำให้ยอดคงเหลือ STA ที่แท้จริงของ BPool และการทำบัญชีภายในไม่ตรงกัน

ในที่สุด ดังที่แสดงในรูปด้านบน ผู้โจมตีได้ชำระคืนเงิน 104,331 WETH ที่ยืมมาจากเงินกู้แฟลช

คำแนะนำ

ชื่อเรื่องรอง

คำแนะนำ

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

ติดตาม

ชื่อเรื่องรอง

ติดตาม

Balancer
DeFi
安全
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
ค้นหา
สารบัญบทความ
คลังบทความของผู้เขียน
PeckShield
อันดับบทความร้อน
Daily
Weekly
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android