คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
ชุดการวิเคราะห์การโจมตี BlockSec DeFi 3: การวิเคราะห์เชิงลึกของเหตุการณ์การโจมตี Akropolis
BlockSec
特邀专栏作者
2021-08-03 07:22
บทความนี้มีประมาณ 4307 คำ การอ่านทั้งหมดใช้เวลาประมาณ 7 นาที
แฮ็กเกอร์ขโมยทรัพย์สินดิจิทัลมูลค่ากว่า 2,000,000 ดอลลาร์ที่เก็บไว้ใน Akropolis ผ่าน Flashloan (สินเชื่อแฟล

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

ในฐานะทีมวิจัยระยะยาว (https://blocksecteam.com) ที่เกี่ยวข้องกับความปลอดภัยของ DeFi BlockSec ได้ค้นพบเหตุการณ์ด้านความปลอดภัยของ DeFi จำนวนมากโดยอิสระ และผลการวิจัยได้รับการเผยแพร่ในการประชุมด้านความปลอดภัยชั้นนำ (รวมถึง USENIX Security, CCS และ หมวกสีดำ). ในช่วงเวลาต่อไป เราจะวิเคราะห์เหตุการณ์ด้านความปลอดภัยของ DeFi อย่างเป็นระบบและวิเคราะห์สาเหตุที่แท้จริงเบื้องหลังเหตุการณ์ด้านความปลอดภัย

รีวิวที่ผ่านมา:
(1) [หนึ่งในซีรี่ส์การวิเคราะห์การโจมตีของ BlockSec DeFi] ฉันพูดด้วยตัวเอง: การวิเคราะห์เหตุการณ์การโจมตี ChainSwap
(2) [BlockSec DeFi Attack Analysis Series 2] แจกทุกอย่าง: ค่าธรรมเนียม Sushiswap ถูกขโมย

0xffffffff. คำนำ

การเงินแบบกระจายอำนาจ (DeFi) เป็นรูปแบบโครงการที่ได้รับความนิยมในระบบนิเวศของบล็อกเชน การรักษาความปลอดภัยเป็นสิ่งสำคัญอย่างยิ่ง ตั้งแต่ปีที่แล้ว มีเหตุการณ์ด้านความปลอดภัยเกิดขึ้นหลายสิบครั้งในฐานะทีมวิจัยระยะยาว (https://blocksecteam.com) ที่เกี่ยวข้องกับความปลอดภัยของ DeFi BlockSec ได้ค้นพบเหตุการณ์ด้านความปลอดภัยของ DeFi จำนวนมากโดยอิสระ และผลการวิจัยได้รับการเผยแพร่ในการประชุมด้านความปลอดภัยชั้นนำ (รวมถึง USENIX Security, CCS และ หมวกสีดำ). ในช่วงเวลาต่อไป เราจะวิเคราะห์เหตุการณ์ด้านความปลอดภัยของ DeFi อย่างเป็นระบบและวิเคราะห์สาเหตุที่แท้จริงเบื้องหลังเหตุการณ์ด้านความปลอดภัยรีวิวที่ผ่านมา:[หนึ่งในซีรี่ส์การวิเคราะห์การโจมตีของ BlockSec DeFi] ฉันพูดด้วยตัวเอง: การวิเคราะห์เหตุการณ์การโจมตี ChainSwap[BlockSec DeFi Attack Analysis Series 2] แจกทุกอย่าง: ค่าธรรมเนียม Sushiswap ถูกขโมย

ข้อตกลงการโจมตี

คำแนะนำในการอ่าน:

  • หากคุณยังใหม่กับ DeFi (Ethereum) คุณสามารถอ่านได้ตั้งแต่เริ่มต้น แต่บทความค่อนข้างยาว ดังนั้นหากคุณอ่านไม่ออก อย่าลืมให้ความสนใจก่อนที่จะออกไป

  • หากคุณมีความเข้าใจที่ดีขึ้นเกี่ยวกับโครงการรวบรวม DeFi เช่น Akropolis คุณสามารถเริ่มต้นได้โดยตรงจาก "การวิเคราะห์การโจมตี 0x2"

0x0 บทนำเบื้องต้น

ใช้ตัวอย่างนี้เป็นการตีความเชิงลึกของหลักการของการโจมตีนี้

เวลา: 12 พ.ย.-2563 12:04:02 น. +UTC #11242695

คำแนะนำในการอ่าน:

หากคุณยังใหม่กับ DeFi (Ethereum) คุณสามารถอ่านได้ตั้งแต่เริ่มต้น แต่บทความค่อนข้างยาว ดังนั้นหากคุณอ่านไม่ออก อย่าลืมให้ความสนใจก่อนที่จะออกไป

Protocol:
หากคุณมีความเข้าใจที่ดีขึ้นเกี่ยวกับโครงการรวบรวม DeFi เช่น Akropolis คุณสามารถเริ่มต้นได้โดยตรงจาก "การวิเคราะห์การโจมตี 0x2"

Akropolis:
0x0 บทนำเบื้องต้น

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

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

Akropolis.deposit fucntion:
0x1 กลไกอโครโพลิส

  • เพื่อความสะดวกในการทำความเข้าใจ ก่อนอื่นเราจะแนะนำสัญญาทางกายภาพสองรายการที่เกี่ยวข้องกับการโจมตีนี้: สัญญาโปรโตคอลและสัญญา Akropolis

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

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

  • ตรรกะการโต้ตอบโดยรวมจะแสดงในรูป:

  • Akropolis มีอินเทอร์เฟซภายนอกสองอินเทอร์เฟซ: ฟังก์ชัน ฝาก (address_protocol, ที่อยู่ [] memory_tokens, uint256 [] memory_dnAmounts) และการถอนฟังก์ชัน (address_protocol, โทเค็นที่อยู่, uint256 dnAmount, uint256 maxNAmount)

  • ฟังก์ชันของฟังก์ชันฝากคือ:


ผู้ใช้เรียกเงินฝาก

ขั้นแรก Akropolis จะคำนวณจำนวนโทเค็นที่อยู่ในโปรโตคอล: nBalanceBefore


Akropolis โอนโทเค็นของผู้ใช้ไปยังโปรโตคอล

จากนั้น Akropolis จะคำนวณจำนวนโทเค็นในโปรโตคอล: nBalanceAfter

รับจำนวนเงินลงทุนของผู้ใช้: nDeposit = nBalanceAfter - nBalanceBefore

withdraw fucntion:

ส่วนแบ่งการลงทุนของผู้ใช้คำนวณจากจำนวนเงินลงทุนของผู้ใช้

ฟังก์ชัน Akropolis.depositToProtocol:

ฟังก์ชัน Akropolis.distributeYieldInternal และฟังก์ชัน Akropolis.updateProtocolBalance:

STEP 1:


โปรโตคอลฟังก์ชั่น normalizedBalance:

STEP 2:

โปรดทราบว่า _registeredTokens = [DAI, USDC, USDT, TUSD] ใน Protocol.normalizedBalance ฟังก์ชันของฟังก์ชัน distributionYieldInternal และฟังก์ชัน updateprotocolBalance ที่ใช้ในฟังก์ชันการฝากเงินคือการสอบถามยอดคงเหลือของโทเค็นทั้งหมด (อันที่จริงคือ DAI, USDC, USDT, TUSD) ในฟังก์ชันโปรโตคอลปัจจุบัน โปรดทราบว่า normalizedBalance ในที่นี้หมายถึงการปรับความสมดุลของการประมวลผลให้เป็นมาตรฐาน (เนื่องจาก ทศนิยมของโทเค็นประเภทต่างๆ ไม่สอดคล้องกัน)

STEP 3:

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

โดยการเรียกใช้ฟังก์ชันการถอน ผู้ใช้จะถอนโทเค็นที่ฝากผ่านฟังก์ชันการฝากเพื่อรับดอกเบี้ย

Others

0x2. หลักการโจมตี

เราสังเกตเห็นว่าในฟังก์ชัน Akropolis.deposit จำเป็นต้องคำนวณ beforeBalance ก่อน จากนั้นจึงเรียกใช้ฟังก์ชัน TransferFrom ของโทเค็น โอนโทเค็นไปยังโปรโตคอล และสุดท้าย คำนวณอาฟเตอร์บาลานซ์ วิธีการคำนวณนี้ถูกต้องภายใต้ตรรกะปกติ แต่ถ้าผู้โจมตีให้ที่อยู่โทเค็นเป็นที่อยู่ที่เป็นอันตราย (นั่นคือสัญญาโทเค็นปลอม Akropolis ยังไม่ได้ตรวจสอบที่อยู่โทเค็น) ในกรณีนี้ โทเค็นที่ถูกต้องจริงจะไม่ถูกโอนไปยังบัญชีโปรโตคอล และ Akropolis . กลไกการเข้า. ซึ่งช่วยให้ผู้โจมตีสามารถโจมตี Akropolis ได้โดยใช้ 1. ที่อยู่โทเค็นยังไม่ได้รับการยืนยัน และ 2. ฟังก์ชันการฝากไม่มีกลไกการย้อนกลับ ผังการโจมตีมีดังนี้:

ผู้โจมตีเรียกฟังก์ชัน Akropolis.deposit ก่อน และพารามิเตอร์ที่อยู่โทเค็นที่ส่งผ่านคือที่อยู่สัญญาที่เป็นอันตราย ภายในฟังก์ชัน จะมีการคำนวณ balanceBefore1 ก่อน จากนั้นเนื่องจากที่อยู่สัญญาโทเค็นที่ผู้โจมตีส่งผ่านเป็นโทเค็นปลอมที่ผู้โจมตีปลอมแปลงขึ้นมา Akropolis จึงเรียกฟังก์ชัน fakeToken.transferFrom

ในฟังก์ชัน fakeToken.transferFrom สัญญาจะเรียก Akropolis.deposit อีกครั้ง และที่อยู่โทเค็นที่ส่งผ่านคือที่อยู่ DAI จริง ดังนั้นตรรกะของการเรียกเงินมัดจำเป็นครั้งที่สองจึงเป็นตรรกะปกติ: ผู้โจมตีจะฝาก DAI จำนวนหนึ่ง และ จากนั้น Akropolis ตาม balanceAfter2-balanceBefore2 จะมีการออกโทเค็น LP ที่สอดคล้องกันสำหรับเหรียญกษาปณ์ของผู้โจมตี หมายเหตุ: ที่นี่ ยอดคงเหลือก่อน 2 = ยอดคงเหลือก่อน 1

แม้ว่าผู้โจมตีจะส่ง DAI จำนวนประมาณ 25,000 ดอลลาร์ไปยังโปรโตคอลในการทำธุรกรรมทั้งหมด แต่เนื่องจากกลไกการกลับเข้าใหม่ BalanceBefore1 จึงไม่ได้รับการอัปเดตทันเวลาหลังจากการฝากครั้งที่สอง ทำให้ Akropolis กลับมาที่โฟลว์การควบคุมฟังก์ชันเป็นครั้งแรก ในฟังก์ชันการฝากเงิน สันนิษฐานว่าผู้โจมตีโอน DAI มูลค่า 25,000 ดอลลาร์ไปยังโปรโตคอล ดังนั้นจึงสร้างโทเค็น LP ที่สอดคล้องให้กับผู้ใช้อีกครั้ง

ขับเคลื่อนด้วยเทคโนโลยีความปลอดภัยหลัก ทีมงานของ BlockSec ให้ความสำคัญกับความปลอดภัยของ DeFi การต่อต้านการฟอกเงินสกุลเงินดิจิทัล และการดูแลทรัพย์สินดิจิทัลบนพื้นฐานของการประมวลผลความเป็นส่วนตัว การให้บริการรักษาความปลอดภัยตามสัญญาและบริการรักษาความปลอดภัยสินทรัพย์ดิจิทัลสำหรับฝ่ายโครงการ DApp ทีมงานได้เผยแพร่เอกสารทางวิชาการด้านความปลอดภัยชั้นนำมากกว่า 20 ฉบับ (CCS, USENIX Security, S&P) และพันธมิตรของบริษัทได้รับรางวัลนักวิชาการด้านความปลอดภัยและความเป็นส่วนตัวที่มีอิทธิพลมากที่สุดในโลกของ AMiner (อันดับที่หกของโลกในปี 2554-2563) ผลการวิจัยได้รับรางวัลจาก CCTV, สำนักข่าว Xinhua News และรายงานของสื่อต่างประเทศ ค้นพบช่องโหว่ด้านความปลอดภัยและภัยคุกคาม DeFi จำนวนมากโดยอิสระ และได้รับรางวัลที่หนึ่งในโลกในการแข่งขันคอมพิวเตอร์เพื่อความเป็นส่วนตัวของสถาบันสุขภาพแห่งชาติ (SGX Track) ประจำปี 2562 ขับเคลื่อนด้วยเทคโนโลยี ทีมงานยึดมั่นในแนวคิดของการเปิดกว้างและ win-win และทำงานร่วมกับพันธมิตรในชุมชนเพื่อสร้างระบบนิเวศ DeFi ที่ปลอดภัย

https://www.blocksecteam.com/

contact@blocksecteam.com

Akropolis
DeFi
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
แฮ็กเกอร์ขโมยทรัพย์สินดิจิทัลมูลค่ากว่า 2,000,000 ดอลลาร์ที่เก็บไว้ใน Akropolis ผ่าน Flashloan (สินเชื่อแฟล
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android