คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
SharkTeam: การวิเคราะห์การโจมตี Prisma Finance
SharkTeam
特邀专栏作者
2024-04-07 11:08
บทความนี้มีประมาณ 1517 คำ การอ่านทั้งหมดใช้เวลาประมาณ 3 นาที
เมื่อวันที่ 28 มีนาคม 2024 Prisma Finance ประสบกับการโจมตีด้วยสินเชื่อแฟลช ส่งผลให้ฝ่ายของโครงการสูญเสียเงินประมาณ 12.21 ล้านดอลลาร์สหรัฐ SharkTeam ดำเนินการวิเคราะห์ทางเทคนิคของเหตุการณ์นี้และสรุปข้อควรระวังด้านความปลอดภัย เราหวังว่าโครงการต่อ ๆ ไปจะสามารถเรียนรู้จากสิ่งนี้และร่วมกันสร้างแนวป้องกันความปลอดภัยสำหรับอุตสาหกรรมบล็อคเชน

เมื่อวันที่ 28 มีนาคม 2024 Prisma Finance ประสบกับการโจมตีด้วยสินเชื่อแฟลช และโครงการนี้สูญเสียเงินไปประมาณ 12.21 ล้านดอลลาร์สหรัฐ

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

1. การวิเคราะห์ธุรกรรมการโจมตี Prisma Finance

ผู้โจมตี 1: 0x7e39e3b3ff7adef2613d5cc49558eab74b9a4202 (ย่อว่า 0x 7 e 39)

สัญญาการโจมตี 1: 0xd996073019c74b2fb94ead236e32032405bc027c (ตัวย่อเป็น 0x d 996)

ผู้โจมตี 2: 0x7fe83f45e0f53651b3ed9650d2a2c67d8855e385

สัญญาการโจมตี 2: 0x4148310fe4544e82f176570c6c7b649290a90e17

สัญญาเป้าหมายที่ถูกโจมตี: 0x1cc79f3f47bfc060b6f761fcd1afc6d399a968b6

การโจมตีประกอบด้วยธุรกรรม 16 รายการ โดยพิจารณาธุรกรรมการโจมตีครั้งแรกเป็นตัวอย่าง:

0x00c503b595946bccaea3d58025b5f9b3726177bbdc9674e634244135282116c7

กระบวนการโจมตีมีดังนี้:

1. อ่านหลักประกันและหนี้สินทั้งหมดในสัญญาเป้าหมาย ตามที่อยู่ 0x56a201b872b50bbdee0021ed4d1bb36359d291ed (ตัวย่อ 0x 56 a 2)

ผลลัพธ์การส่งคืนจะเป็นดังนี้:

ที่อยู่ 0x 56 a 2 หลักประกันทั้งหมดในสัญญาเป้าหมายคือ 1,745 wstETH และหนี้ทั้งหมดคือ 1,442, 100 mkUSD

2. ผู้โจมตี 0x 7 e 39 เรียกใช้ฟังก์ชัน flashLoan ในสัญญาหนี้ mkUSD โดยโจมตีสัญญา 0x d 996

ตัวรับพารามิเตอร์ถูกตั้งค่าเป็น MigrateTroveZap และจำนวนคือหนี้ทั้งหมดที่สอบถามข้างต้น

จากนั้น ฟังก์ชัน onFlashLoan ในเครื่องรับ (ในที่นี้ MigrateTroveZap) จะถูกเรียกในฟังก์ชัน flashLoan

ขั้นแรกฟังก์ชัน onFlashLoan จะชำระหนี้เดิมทั้งหมดผ่านทางสินเชื่อแฟลช จากนั้นถอนหลักประกันให้กับผู้รับ จากนั้นผู้รับจะจำนองหลักประกันจำนวนหนึ่งอีกครั้ง และยืมหนี้จำนวนหนึ่ง มี 2 ​​ฟังก์ชั่นหลักๆ ที่เรียกว่า:

(1) ฟังก์ชั่น closeTrove ชำระหนี้และดึงหลักประกันทั้งหมด (1745.08 swtETH) จาก troverManager ไปยังผู้รับ (นี่คือสัญญา MigrateTroveZap)

(2) ฟังก์ชั่น openTrove ผู้รับจำนอง 463.18 wstETH อีกครั้งใน troverManager และก่อให้เกิดหนี้ 1, 443, 598 mkUSD

จากข้อมูลข้างต้นจะเห็นได้ว่าหลังจากดำเนินการฟังก์ชัน flashLoan แล้ว ผู้รับยังคงรักษาหลักประกันที่ดึงมาจาก troverManager ที่เป็นของที่อยู่ 0x 56 a 2 และจำนวนเงินจะอยู่ที่ประมาณ 1745.08 – 463.18 = 1281.90 wstETH

3. ผู้โจมตี 0x 7 e 39 ยืม 1 wstETH จาก Balancer ผ่านการยืมแฟลชโดยการโจมตีสัญญา 0x d 996

จากนั้น จำนอง 1 wstETH และยืมหนี้จำนวน 2,000 mkUSD บวกค่าธรรมเนียม สำหรับหนี้รวมจำนวน 2,200 mkUSD

4. เช่นเดียวกับขั้นตอนที่ 2 ให้เรียกใช้ฟังก์ชัน flashLoan ในสัญญาหนี้ mkUSD ในที่นี้ ตัวรับพารามิเตอร์ยังคงตั้งค่าเป็น MigrateTroveZap และจำนวนเงินคือหนี้ทั้งหมดหลังจากการจำนำครั้งล่าสุดที่ 1 wstETH ซึ่งเท่ากับ 2,000 mkUSD ในฟังก์ชัน FflashLoan ฟังก์ชัน onFlashLoan ในเครื่องรับจะถูกเรียก จากนั้นจึงเรียกใช้ฟังก์ชัน closeTrove และ openTrove

อย่างไรก็ตาม บัญชีพารามิเตอร์ในฟังก์ชัน closeTrove และ openTrove ไม่ใช่ที่อยู่ 0x 56 a 2 ข้างต้นอีกต่อไป แต่เป็นสัญญาการโจมตี 0x d 996 ที่ให้คำมั่นสัญญา 1 wstETH

(1) ฟังก์ชั่น closeTrove ชำระหนี้และถอนหลักประกันทั้งหมด (1 swtETH) จาก troverManager ไปยังผู้รับ (นี่คือสัญญา MigrateTroveZap) ขณะนี้มี 1281.90 + 1 = 1282.90 wstETH ในตัวรับ

(2) ฟังก์ชั่น openTrove ผู้รับจำนอง 1282.80 wstETH (เกือบทั้งหมด) อีกครั้งใน troverManager และก่อหนี้จำนวน 2001.8 mkUSD

ในความเป็นจริง 1281.80 wstETH ในหลักประกันที่นี่ไม่ได้เป็นของสัญญาการโจมตี 0x d 996 แต่เป็นของที่อยู่ข้างต้น 0x 56 a 2

5. ในที่สุด ผู้โจมตี 0x 7 e 39 แยกเรียกฟังก์ชัน closeTrove ผ่านสัญญาการโจมตี 0x d 996 และแยกจำนอง 1282.80 wstETH ลงในสัญญาการโจมตี 0x d 996

หลังจากชำระคืนเงินกู้แฟลชแล้ว ผู้โจมตียังคงทำกำไรได้ 1281.80 wstETH ซึ่งมีมูลค่าประมาณ 2.30 M USD

2. การวิเคราะห์ช่องโหว่

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

ในที่สุด wstETH ที่ผู้โจมตีได้รับคือหลักประกันของที่อยู่เดิม 0x 56 a 2 ในสัญญา troverManager ด้วยฟังก์ชัน flashLoan ของสัญญา mkUSD พารามิเตอร์ของฟังก์ชัน onFlashLoan ในสัญญา MigrateTroveZap จะได้รับการปรับแต่ง และใช้ MigrateTroveZap เพื่อ แปลงเป็นหลักประกันสัญญาโจมตีแล้วดึงออกมา

ผู้โจมตีจัดการการจำนองและการถอนที่อยู่บัญชีอื่น ๆ ผ่านฟังก์ชัน flashLoan ในสัญญา mkUSD และฟังก์ชัน onFlashLoan ในสัญญา MigrateTroveZap

(1) ฟังก์ชัน flashLoan ขาดการตรวจสอบความถูกต้องของที่อยู่ตัวรับพารามิเตอร์ เนื่องจากผู้รับในฟังก์ชัน onFlashLoan จะได้รับหลักประกันทั้งหมดของบัญชี ดังนั้นผู้รับจึงต้องได้รับการยืนยันว่าเชื่อถือได้

(2) ฟังก์ชัน onFlashLoan ขาดการตรวจสอบที่อยู่บัญชี เนื่องจากฟังก์ชัน closeTrove และ openTrove เป็นทรัพย์สินของบัญชีปฏิบัติการ ดังนั้นจึงจำเป็นต้องเพิ่มการตรวจสอบสิทธิ์ในบัญชี

นอกจากการตรวจสอบพารามิเตอร์ที่อยู่ทั้งสองนี้แล้ว ยังอาจจำเป็นต้องตรวจสอบพารามิเตอร์ปริมาณและตรรกะการใช้งานในฟังก์ชัน flashLoan ด้วย

3. คำแนะนำด้านความปลอดภัย

เพื่อตอบสนองต่อการโจมตีนี้ เราควรปฏิบัติตามข้อควรระวังต่อไปนี้ในระหว่างกระบวนการพัฒนา:

(1) ในระหว่างกระบวนการออกแบบและพัฒนาโครงการต้องรักษาความสมบูรณ์และความเข้มงวดของตรรกะโดยเฉพาะอย่างยิ่งเมื่อเกี่ยวข้องกับการโอนสินทรัพย์ นอกจากนี้ ยังจำเป็นต้องเสริมสร้างการตรวจสอบสิทธิ์การวิจัยฟังก์ชันเพื่อให้แน่ใจว่าผู้เรียก ฟังก์ชันการเรียก และพารามิเตอร์ฟังก์ชัน ลอจิกการถ่ายโอน ฯลฯ ทั้งหมดปลอดภัยและเชื่อถือได้

(2) ก่อนที่โปรเจ็กต์จะออนไลน์ จำเป็นต้องค้นหาทีมตรวจสอบมืออาชีพจากภายนอกเพื่อทำการตรวจสอบสัญญา

About Us

วิสัยทัศน์ของ SharkTeam คือการรักษาความปลอดภัยให้กับโลกของ Web3 ทีมงานประกอบด้วยผู้เชี่ยวชาญด้านความปลอดภัยที่มีประสบการณ์และนักวิจัยอาวุโสจากทั่วโลก ซึ่งมีความเชี่ยวชาญในทฤษฎีพื้นฐานของบล็อคเชนและสัญญาอัจฉริยะ โดยให้บริการต่างๆ เช่น การระบุและการบล็อกความเสี่ยง การตรวจสอบสัญญาอัจฉริยะ KYT/AML การวิเคราะห์ออนไลน์ ฯลฯ และได้สร้างแพลตฟอร์มการระบุความเสี่ยงและการบล็อกอัจฉริยะแบบออนไลน์ ChainAegis ซึ่งสามารถต่อสู้กับภัยคุกคามขั้นสูงแบบต่อเนื่อง (ขั้นสูง) ได้อย่างมีประสิทธิภาพ ภัยคุกคามแบบถาวร) ในโลก Web3 , APT) ได้สร้างความสัมพันธ์ความร่วมมือระยะยาวกับผู้เล่นหลักในด้านต่างๆ ของระบบนิเวศ Web3 เช่น Polkadot, Moonbeam, polygon, Sui, OKX, imToken, Collab.Land เป็นต้น

เว็บไซต์อย่างเป็นทางการ: https://www.sharkteam.org

Twitter:https://twitter.com/sharkteamorg

Telegram:https://t.me/sharkteamorg

Discord:https://discord.gg/jGH9xXCjDZ

ความปลอดภัย
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
เมื่อวันที่ 28 มีนาคม 2024 Prisma Finance ประสบกับการโจมตีด้วยสินเชื่อแฟลช ส่งผลให้ฝ่ายของโครงการสูญเสียเงินประมาณ 12.21 ล้านดอลลาร์สหรัฐ SharkTeam ดำเนินการวิเคราะห์ทางเทคนิคของเหตุการณ์นี้และสรุปข้อควรระวังด้านความปลอดภัย เราหวังว่าโครงการต่อ ๆ ไปจะสามารถเรียนรู้จากสิ่งนี้และร่วมกันสร้างแนวป้องกันความปลอดภัยสำหรับอุตสาหกรรมบล็อคเชน
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android