คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末
CertiK
特邀专栏作者
2024-02-04 04:30
บทความนี้มีประมาณ 1236 คำ การอ่านทั้งหมดใช้เวลาประมาณ 2 นาที
2024年1月16日,Socket Tech遭到攻击,损失约330万美元,本文详解攻击事件始末。

เมื่อวันที่ 16 มกราคม 2024 Socket Tech ถูกโจมตี ส่งผลให้สูญเสียเงินประมาณ 3.3 ล้านเหรียญสหรัฐ ผู้โจมตีใช้ประโยชน์จากช่องโหว่ในลิงก์ตรวจสอบข้อมูลของสัญญา Socket และขโมยเงินผู้ใช้ของสัญญาที่ได้รับอนุญาตผ่านการป้อนข้อมูลที่เป็นอันตราย การโจมตีครั้งนี้ทำให้เกิดการสูญเสียที่อยู่ทั้งหมด 230 แห่ง โดยการสูญเสียที่อยู่เดียวที่ใหญ่ที่สุดคือประมาณ 656,000 ดอลลาร์

การแนะนำความเป็นมา

Socket เป็นโปรโตคอลการทำงานร่วมกันที่ให้บริการข้อมูลและการรับส่งข้อมูลที่ปลอดภัยและมีประสิทธิภาพแบบข้ามสายโซ่ สัญญา Socket Gateway เป็นจุดเชื่อมต่อสำหรับการโต้ตอบทั้งหมดกับชั้นสภาพคล่องของซ็อกเก็ต โดยที่บริดจ์สินทรัพย์และ DEX ทั้งหมดมารวมกันเป็นเมตาบริดจ์เดียว และเลือกธุรกรรมที่ดีที่สุดตามการตั้งค่าของผู้ใช้ เช่น ต้นทุน เวลาแฝง หรือการกำหนดเส้นทางความปลอดภัย

สามวันก่อนการแฮ็ก ผู้ดูแลระบบสัญญา Socket ดำเนินการคำสั่ง addRoute เพื่อเพิ่มเส้นทางใหม่ให้กับระบบ วัตถุประสงค์ของการเพิ่มการกำหนดเส้นทางคือเพื่อขยายขีดความสามารถของ Socket Gateway แต่ทำให้เกิดช่องโหว่ร้ายแรงโดยไม่ได้ตั้งใจ

รูปภาพด้านล่างแสดงบันทึกการกำหนดเส้นทางที่เพิ่มผ่านผู้ดูแลสัญญา:

รูปภาพ

สรุปเหตุการณ์

1. เมื่อเวลา 15:03 น. ของวันที่ 16 มกราคม ตามเวลาปักกิ่ง กระเป๋าเงินของผู้โจมตีได้โอนเงินที่ใช้สำหรับการโจมตี การวิเคราะห์เวลาของเราแสดงให้เห็นว่าเงินมาจาก 0x e 620 และเกี่ยวข้องกับ 10 BNB ที่ถอนออกจาก Tornado Cash

2. เงินเหล่านี้ถูกใช้เพื่อสร้างและดำเนินการสัญญาสองฉบับเพื่อใช้ประโยชน์จากช่องโหว่ของซ็อกเก็ต สัญญาฉบับแรกกำหนดเป้าหมายไปที่ USDC ในที่อยู่ที่ได้รับอนุญาตจาก SocketGateway (ภาพหน้าจอด้านล่าง) เหยื่อ 127 รายถูกฉ้อโกงจากเงินประมาณ 2.5 ล้านเหรียญสหรัฐ

3. ถัดไป สัญญาฉบับที่สองกำหนดเป้าหมายไปที่ WETH, USDT, WBTC, DAI และ MATIC ในที่อยู่ของเหยื่อ ส่งผลให้เหยื่ออีก 104 รายสูญเสียทรัพย์สินโดยประมาณดังต่อไปนี้:

-42.48 WETH

-347, 005.65 USDT

-2.89 WBTC

-13, 821.01 DAI

-165, 356.99 MATIC

4. ผู้โจมตีแปลง USDC และ USDT เป็น ETH

แหล่งที่มาของช่องโหว่

ช่องโหว่ที่ถูกโจมตีโดยผู้โจมตีมีอยู่ในฟังก์ชัน PerformanceAction ภายในที่อยู่การกำหนดเส้นทางที่อยู่เส้นทางที่เพิ่มใหม่

ฟังก์ชันดั้งเดิมของฟังก์ชัน PerformAction ในที่อยู่นี้คือเพื่อช่วยเหลือฟังก์ชัน Wrapping และ Unwrapping

อย่างไรก็ตาม ช่องโหว่ร้ายแรงปรากฏในฟังก์ชันนี้: ผู้ใช้เรียกใช้ข้อมูลภายนอกโดยตรงผ่าน swapExtraData ใน .call() โดยไม่มีการตรวจสอบ ซึ่งหมายความว่าผู้โจมตีสามารถเรียกใช้ฟังก์ชันที่เป็นอันตรายได้ตามอำเภอใจ

ในเหตุการณ์นี้ ผู้โจมตีได้สร้างอินพุต swapExtraData ที่เป็นอันตรายซึ่งทริกเกอร์ฟังก์ชัน TransferFrom การโทรที่เป็นอันตรายใช้ประโยชน์จากการอนุญาตของผู้ใช้ต่อสัญญา SocketGateway และขโมยเงินจากพวกเขา

แม้ว่าสัญญาจะทำให้แน่ใจว่ายอดคงเหลือของผู้ใช้จะเปลี่ยนแปลงอย่างถูกต้องหลังจากเรียก fromToken.call() โดยการตรวจสอบการตรวจสอบยอดคงเหลือ ฟังก์ชันนี้จะไม่คำนึงถึงสถานการณ์ที่ผู้โจมตีตั้งค่าจำนวนเป็น 0

ฟื้นฟูกระบวนการโจมตี

1. การใช้สัญญาการโจมตี ผู้โจมตีเรียก 0x 00000196() ในสัญญา Socket Gateway

2.fallback() เรียกสัญญาที่อยู่การกำหนดเส้นทางที่มีช่องโหว่ (ที่อยู่เราเตอร์) โดยใช้ลายเซ็นเลขฐานสิบหก 196

3. ในภาพหน้าจอด้านล่าง เราจะเห็นอินพุตปลอมที่ผู้โจมตีใช้ และหมายเลขการสลับคือ 0 ทั้งหมด

4. ถัดไป WrappedTokenSwapperImpl.performAction() จะถูกเรียกให้ทำการสลับ

5. SwapExtraData ปลอมได้รับการยอมรับและดำเนินการโดย fromToken (WETH) โดยไม่มีการตรวจสอบใดๆ

6. ผู้โจมตีทำซ้ำขั้นตอนข้างต้นจนกว่าทรัพย์สินของเหยื่อจะหมด หลังจากที่ธุรกรรมที่เป็นอันตรายปรากฏขึ้น Socket ก็รีบเรียก DisableRoute เพื่อบล็อกเส้นทางที่มีช่องโหว่ก่อนหน้านี้และป้องกันการโจมตีในวงกว้าง

7. เมื่อวันที่ 23 มกราคม Socket ประกาศว่าได้กู้คืน 1,032 ETH แล้ว และประกาศเมื่อวันที่ 25 ว่าจะชดเชยการสูญเสียทั้งหมดให้เต็มจำนวน เหตุการณ์ที่เกิดขึ้นนี้ได้รับการแก้ไข.

สรุปเหตุการณ์

การโจมตีข้อมูลการโทรที่เป็นอันตรายไม่ใช่เรื่องแปลกในสัญญาการกำหนดเส้นทางที่มีการอนุญาตผู้ใช้แบบไม่จำกัด

การโจมตีที่คล้ายกันก่อนหน้านี้ ได้แก่ Dexible และ Hector Bridge

เมื่อวันที่ 17 กุมภาพันธ์ 2023 Dexible การแลกเปลี่ยนแบบกระจายอำนาจถูกโจมตี ทำให้เกิดการสูญเสียมากกว่า 1.5 ล้านดอลลาร์ ผู้โจมตีป้อนข้อมูลการโทรที่เป็นอันตรายลงในฟังก์ชัน fill() ของ Dexible เพื่อขโมยทรัพย์สินของผู้ใช้

เมื่อวันที่ 2 มิถุนายน 2023 โปรโตคอลของเครือข่าย Hector ถูกโจมตี ผู้โจมตีปรับใช้สัญญา USDC ปลอมและโอน USDC จริง 652,000 USDC จากสัญญาของเหยื่อผ่านข้อมูลการโทรที่เป็นอันตราย

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

ไม่ต้องสงสัยเลยว่าการแก้ปัญหาเหตุการณ์ Socket นั้นเป็นผลมาจากความพยายามของทุกฝ่าย CertiK จะยังคงมุ่งมั่นที่จะให้การตรวจสอบและการทดสอบที่ครอบคลุมสำหรับแพลตฟอร์ม ช่วยลดความเสี่ยงโดยรวม และปรับปรุงความไว้วางใจของชุมชนและระดับความปลอดภัยของอุตสาหกรรมทั้งหมด .

ความปลอดภัย
ETH
USDC
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
2024年1月16日,Socket Tech遭到攻击,损失约330万美元,本文详解攻击事件始末。
คลังบทความของผู้เขียน
CertiK
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android