เมื่อเร็ว ๆ นี้ Cork Protocol บนห่วงโซ่ Ethereum ถูกโจมตีและผู้โจมตีทํากําไรได้ 12 ล้านดอลลาร์ผ่านช่องโหว่เชิงตรรกะในสัญญาของโครงการ (ไม่สามารถตรวจสอบพารามิเตอร์หลักได้) บทความนี้ให้การวิเคราะห์โดยละเอียดของการโจมตีและการติดตามเงินทุน
เขียนโดย: Beosin
เมื่อเร็ว ๆ นี้ Cork Protocol บนห่วงโซ่ Ethereum ถูกโจมตีและผู้โจมตีทํากําไรได้ 12 ล้านดอลลาร์ผ่านช่องโหว่เชิงตรรกะในสัญญาของโครงการ (พารามิเตอร์หลักไม่ได้รับการยืนยัน) ทีมรักษาความปลอดภัยของ Beosin ได้ทําการวิเคราะห์โดยละเอียดและติดตามการโจมตีทางการเงินและแบ่งปันผลลัพธ์ดังนี้:
ก่อนที่จะวิเคราะห์การโจมตีเราจําเป็นต้องเข้าใจตรรกะทางธุรกิจพิเศษของ Cork Protocol มันแนะนํากลไกการแลกเปลี่ยนเครดิตเริ่มต้นคล้ายกับการเงินแบบดั้งเดิม (เรียกว่า Depeg Swap) ซึ่งโทเค็นความเสี่ยงในการยกเลิกการตรึงของสินทรัพย์ที่ถูกตรึง (เช่น stETH) และผู้ใช้สามารถป้องกันความเสี่ยงหรือแลกเปลี่ยนความเสี่ยงในการตรึงของสินทรัพย์ที่ตรึงไว้ ประเภทของโทเค็นคือ:
ทรัพย์สินคืน (Redemption Asset, RA): สินทรัพย์พื้นฐาน (เช่น Ether)
สินทรัพย์ที่ตรึง (Pegged Asset, PA): สินทรัพย์ที่ตรึงกับสินทรัพย์พื้นฐาน (เช่น stETH)
Depeg Swaps(DS):คล้ายกับออปชันขาย ใช้ในการป้องกันความเสี่ยงจากการลดลงของราคา
โทเค็นคัฟเวอร์ (Cover Token, CT) — คล้ายกับออปชั่นซื้อ หากไม่เกิดการแยกตัว สามารถทำกำไรได้; หากเกิดการแยกตัว จะต้องรับผิดชอบต่อการขาดทุน
เมื่อผู้ใช้ฝาก RA Cork Protocol จะสร้างเหรียญ DS และ CT ผู้ใช้สามารถทำการซื้อขายหรือไถ่ถอนเพื่อนำไปเดิมพันหรือป้องกันความเสี่ยงได้
การโจมตีครั้งนี้เกี่ยวข้องกับตลาดโทเคนจริงและตลาดปลอมที่ผู้โจมตีสร้างขึ้น:
(1) ผู้โจมตีเริ่มต้นด้วยการสร้างตลาดปลอม ตลาดนี้มี RA เป็น weETH8DS-2 โทเค็น และ PA เป็น wstETH สามารถสังเกตได้ว่า weETH8DS-2 เดิมทีในตลาดจริงทำหน้าที่เป็น DS แต่สามารถทำหน้าที่เป็น RA ในตลาดปลอมได้ ซึ่งควรจะถูกห้ามโดยการตรวจสอบโทเค็นข้ามตลาด.
(2) ผู้โจมตีซื้อ weETH8CT-2 จากตลาดจริง
ผู้โจมตี (3) ใช้ประโยชน์จากการขาดการควบคุมการเข้าถึงที่เหมาะสมของฟังก์ชัน beforeSwap ในฟังก์ชัน CorkHook เพื่อส่งข้อมูล Hook ที่กําหนดเองไปยังฟังก์ชัน CorkCall บังคับให้แยก weETH8DS-2 ออกเป็น fake_DS และ fake_CT นี้เป็นไปได้เพราะ weETH8DS-2 เป็น RA ของตลาดปลอม, และฟังก์ชั่นถือว่าปลอม \ _DS และปลอม \ _CT เป็นของผู้โจมตี.
หลังจาก (4) โทเค็นปลอม_DS และปลอม_CT จะถูกโอนไปยังผู้โจมตีตามกฎของ Cork Protocol: โทเค็น DS และ CT สามารถแลกเปลี่ยนเป็นโทเค็น RA ได้ ผู้โจมตีแลกเปลี่ยนโทเค็นปลอม _DS _CT และปลอมที่ได้รับสําหรับ weETH8DS-2 ผ่านตลาดเสมือน
(5) ขณะนี้ผู้โจมตีมี weETH8CT-2 ที่ซื้อจากขั้นตอนที่ 2 และ weETH8DS-2 ที่ประกอบใหม่ ซึ่งสามารถแลกเปลี่ยนเป็น RA (คือ wstETH) จากตลาดจริงได้.
ดังนั้น ผู้โจมตีสามารถย้ายสภาพคล่อง DS จากตลาดจริงไปยังตลาดอื่น (ตลาดปลอมที่สร้างขึ้น) เพื่อทำการแลกคืนเป็น RA และดึงสภาพคล่อง RA จากตลาดจริง ผู้โจมตีขโมย wstETH จำนวน 3761 รายการในเหตุการณ์นี้ และแลกเปลี่ยนเป็น ETH มูลค่าประมาณ 12 ล้านดอลลาร์
จากกระบวนการโจมตีข้างต้น เราสามารถเห็นเหตุผลของการใช้ช่องโหว่ในเหตุการณ์ทั้งหมดได้สามประการดังนี้:
ขาดการตรวจสอบความถูกต้อง: ไม่ตรวจสอบว่า DS ที่ใช้เป็น RA มีการใช้งานในตลาดอื่นแล้วหรือไม่
CorkCall ข้อมูลการเรียกกลับที่ให้โดยผู้ใช้ที่เชื่อถือได้ซึ่งไม่ได้รับการตรวจสอบอย่างเหมาะสม.
โปรโตคอลนี้อนุญาตให้สร้างตลาดที่ไม่ต้องขออนุญาตและไม่มีข้อจำกัด.
แม้ว่า Cork Protocol จะผ่านการตรวจสอบความปลอดภัยและการแข่งขันการตรวจสอบหลายครั้ง แต่ช่องโหว่เชิงตรรกะนี้ก็ถูกมองข้ามไป การโจมตีนี้อาจหลีกเลี่ยงได้หากมีการตรวจสอบที่เข้มงวดมากขึ้นเกี่ยวกับการนําโทเค็นกลับมาใช้ใหม่การตรวจสอบข้อมูลการเรียกกลับอย่างเข้มงวดและการควบคุมที่เข้มงวดยิ่งขึ้นในการสร้างตลาด
Beosin Trace ได้ทำการติดตามเงินที่ถูกขโมย พบว่า: ที่อยู่ของผู้โจมตี 0xea6f30e360192bae715599e15e2f765b49e4da98 ได้รับผลกำไรประมาณ 3761 wstETH จากนั้นได้ทำการแลกเปลี่ยน wstETH เป็น ETH ผ่านโปรโตคอล DeFi เช่น Uniswap, 1inch โดยรวมมีจำนวนทั้งสิ้น 4530.6.
ขณะนี้เงินที่ถูกขโมยยังไม่ได้ถูกโอนย้าย Beosin Trace ได้เพิ่มที่อยู่ที่เกี่ยวข้องกับแฮ็กเกอร์ลงในฐานข้อมูลที่อยู่ดำ และจะติดตามต่อไป
ตามการวิเคราะห์ของ Beosin Trace เงินที่ถูกขโมยทั้งหมดยังคงอยู่ที่อยู่ของผู้โจมตี
หัวใจของการโจมตีคือช่องโหว่ทางตรรกะทางธุรกิจหลักใน Cork Protocol ซึ่งส่งผลให้ผู้โจมตีขโมย wstETH จํานวนมากผ่านโทเค็นปลอม โปรโตคอล DeFi ที่ซับซ้อนเช่น Cork Protocol ต้องการการทดสอบโดยละเอียดและการตรวจสอบตรรกะทางธุรกิจของสัญญาผ่านการตรวจสอบความปลอดภัยหลายแง่มุมและหลายชั้น ก่อนหน้านี้ทีมรักษาความปลอดภัยของ Beosin ได้ทําการตรวจสอบความปลอดภัยของโปรโตคอล DeFi หลายตัว (เช่น Surf Protocol, SyncSwap, LeverFi, Owlto Finance) โดยมุ่งเน้นไปที่การค้นหาข้อบกพร่องทางตรรกะของสัญญาและกรณีขอบที่อาจถูกมองข้ามเพื่อให้แน่ใจว่าโปรโตคอลได้รับการทดสอบอย่างสมบูรณ์