เมื่อวันที่ 23 พฤศจิกายน 2023 เนื่องจากการจัดการ Tick และการนับสภาพคล่องซ้ำหลายครั้ง KyberSwap จึงถูกแฮ็กบนเครือข่ายหลายแห่ง เช่น Ethereum และ Arbitrum ผู้โจมตีทำกำไรได้ประมาณ 48 ล้านเหรียญสหรัฐ

SharkTeam ดำเนินการวิเคราะห์ทางเทคนิคของเหตุการณ์นี้ทันทีและสรุปข้อควรระวังด้านความปลอดภัย เราหวังว่าโครงการต่อ ๆ ไปจะสามารถเรียนรู้จากสิ่งนี้และร่วมกันสร้างแนวป้องกันความปลอดภัยสำหรับอุตสาหกรรมบล็อคเชน
เหตุการณ์การโจมตีนี้ค่อนข้างซับซ้อนและการดำเนินการโจมตีก็ค่อนข้างฉลาดเช่นกัน เราเลือกหนึ่งในธุรกรรมการโจมตีสำหรับการวิเคราะห์และคำอธิบายโดยละเอียด
ธุรกรรมการโจมตี:
0x09a3a12d58b0bb80e33e3fb8e282728551dc430c65d1e520fe0009ec519d75e8
ที่อยู่ของผู้โจมตี:
0x50275E0B7261559cE1644014d4b78D4AA63BE836
สัญญาผู้โจมตี:
0xaF2Acf3D4ab78e4c702256D214a3189A874CDC13
ในการทำธุรกรรมนี้ ผู้โจมตีได้ดำเนินการชุดปฏิบัติการกับกลุ่มสภาพคล่องที่แตกต่างกัน 3 แห่งเพื่อระบายเงินทุนในพูล เราเลือกกลุ่มสำหรับการวิเคราะห์กระแสการโจมตีที่มีอยู่อย่างเป็นอิสระจากกัน
กระบวนการโจมตี:
1. ผู้โจมตียืม 10,000 wstETH ผ่านทาง flash Loan จากนั้นเพิ่มประมาณ 2,998 wstETH ลงในพูล และแลกประมาณ 2,842 WETH

2. ในขณะนี้ สถานะ Tick ที่สอดคล้องกันในกลุ่มคือ -110,910 และราคาของ wstETH เปลี่ยนจาก 1.05 ETH เป็น 0.000015257 ในเวลานี้สภาพคล่องของพูลเป็น 0 ปูทางสำหรับการสร้างสภาพคล่องปลอมในภายหลัง
2. ในขณะนี้ สถานะ Tick ที่สอดคล้องกันในกลุ่มคือ -110,910 และราคาของ wstETH เปลี่ยนจาก 1.05 ETH เป็น 0.000015257 ในเวลานี้สภาพคล่องของพูลเป็น 0 ปูทางสำหรับการสร้างสภาพคล่องปลอมในภายหลัง

3. ผู้โจมตีเพิ่มสภาพคล่อง 3.4 wstETH ในช่วง [0.000014659, 0.000015260] และลบ 0.56 wstETH ออก



4. ถัดไป ผู้โจมตีทำการแลกเปลี่ยนสองครั้ง ได้แก่ WETH->wstETH และ wstETH->WETH หลังจากสวอปครั้งแรก ราคาถูกผลักไปที่ 0.000014657 ซึ่งต่ำกว่า 0.000014659 เล็กน้อย หลังจากสวอปครั้งที่สอง เพิ่มราคาเป็น 0.000016368


5. ในตอนแรก มีสภาพคล่องประมาณ 3 wstETH ในกลุ่ม (mint3.4 wstETH - burn0.56 wstETH) ขณะนี้มีเหรียญประมาณ (1,056 + 3,911) เหรียญในพูล ซึ่งมากกว่าอย่างเห็นได้ชัด
5. ในตอนแรก มีสภาพคล่องประมาณ 3 wstETH ในกลุ่ม (mint3.4 wstETH - burn0.56 wstETH) ขณะนี้มีเหรียญประมาณ (1,056 + 3,911) เหรียญในพูล ซึ่งมากกว่าอย่างเห็นได้ชัด
6. หลังจากที่การโจมตีส่งคืนเงินกู้แฟลช เงินจะถูกโอนจากสัญญาการโจมตี

สาเหตุที่แท้จริงของการโจมตีครั้งนี้: ในฟังก์ชัน computeSwapStep มีการสูญเสียความแม่นยำเมื่อคำนวณ Tick เนื่องจาก Tick สามารถจัดการได้ ฟังก์ชัน _updateLiquidityAndCrossTick จึงสามารถข้ามได้สำเร็จ ดังนั้นจึงสามารถเพิ่มสภาพคล่องซ้ำๆ ได้
1. ในการแลกเปลี่ยนครั้งแรก ผู้โจมตีใช้ฟังก์ชัน calcReachAmount เพื่อคำนวณจำนวน wstETH และสุดท้ายก็คำนวณ 1,056.056735638220800000


2. หลังจากการเรียกฟังก์ชันประมาณค่าIncreamentalLiquidityและcalcFinalPrice ปริมาณที่ส่งผ่านเข้าไปคือ 1,056.056735638220799999 หลังจากการประมวลผลการปัดเศษขึ้นและปัดลง Tick จะเป็น -111311 ในขณะนี้ และ Tick ขีดจำกัดล่างคือ -111310 ดังนั้น โดยการใช้ nextTick = currentTick+1 และใช้ "!=" เพื่อตัดสินพารามิเตอร์ sqrtP สองตัว ฟังก์ชัน _updateLiquidityAndCrossTick จะถูกข้ามได้สำเร็จ และหลีกเลี่ยงการอัปเดตสภาพคล่องได้



3. ในระหว่างการแลกเปลี่ยนครั้งที่สอง _updateLiquidityAndCrossTick ถูกเรียกเพื่อเพิ่มสภาพคล่อง เนื่องจากการสูญเสียความแม่นยำในการคำนวณปริมาณระหว่างการแลกเปลี่ยนครั้งแรก สภาพคล่องจึงไม่ได้รับการอัปเดตและลบออก ส่งผลให้เกิดสถานการณ์ซ้ำซ้อนในการคำนวณสภาพคล่องครั้งที่สอง

3. คำแนะนำด้านความปลอดภัย
เพื่อตอบสนองต่อการโจมตีนี้ นักพัฒนาควรใช้มาตรการรักษาความปลอดภัยต่อไปนี้ในการพัฒนารายวัน:
1. ใส่ใจกับการคำนวณค่าคงที่และตรรกะทางคณิตศาสตร์ในธุรกิจอย่างถูกต้องเพื่อหลีกเลี่ยงการสูญเสียความแม่นยำ
2. ก่อนที่โครงการจะออก จำเป็นต้องร่วมมือกับทีมตรวจสอบมืออาชีพบุคคลที่สามเพื่อดำเนินการตรวจสอบสัญญา
วิสัยทัศน์ของ SharkTeam คือการรักษาความปลอดภัยให้กับโลกของ Web3 ทีมงานประกอบด้วยผู้เชี่ยวชาญด้านความปลอดภัยที่มีประสบการณ์และนักวิจัยอาวุโสจากทั่วโลก ซึ่งมีความเชี่ยวชาญในทฤษฎีพื้นฐานของบล็อคเชนและสัญญาอัจฉริยะ ให้บริการต่างๆ เช่น การวิเคราะห์บิ๊กดาต้าบนเชน คำเตือนความเสี่ยงบนเชน การตรวจสอบสัญญาอัจฉริยะ การกู้คืนสินทรัพย์ crypto และบริการอื่น ๆ และได้สร้างการวิเคราะห์บิ๊กดาต้าบนเชนและแพลตฟอร์มเตือนความเสี่ยง ChainAegis แพลตฟอร์มดังกล่าวรองรับระดับของ การวิเคราะห์กราฟเชิงลึกและสามารถต่อสู้กับความเสี่ยง Advanced Persistent Threat (APT) ในโลก Web3 ได้อย่างมีประสิทธิภาพ ได้สร้างความสัมพันธ์ความร่วมมือระยะยาวกับผู้เล่นหลักในด้านต่างๆ ของระบบนิเวศ Web3 เช่น Polkadot, Moonbeam, polygon, Sui, OKX, imToken, ChainIDE เป็นต้น
เว็บไซต์อย่างเป็นทางการ: https://www.sharkteam.org
ทวิตเตอร์: https://twitter.com/sharkteamorg
ดิสคอร์ด: https://discord.gg/jGH9xXCjDZ
ทวิตเตอร์:https://twitter.com/sharkteamorg
ดิสคอร์ด:https://discord.gg/jGH9xXCjDZ
โทรเลข:https://t.me/sharkteamorg
ความคิดเห็นทั้งหมด