เมื่อเวลา 01:58 น. ของวันที่ 3 กุมภาพันธ์ 2565 ตามเวลาปักกิ่ง โครงการสะพานข้ามโซ่ Solana Wormhole ถูกโจมตีโดยผู้โจมตี แฮ็กเกอร์ข้ามขั้นตอนการตรวจสอบ Wormhole Bridge บน Solana และสร้าง Wormhole ETH (wETH) ขึ้นมาใช้เอง
ในเหตุการณ์นี้ ผู้โจมตีได้ข้ามขั้นตอนการยืนยันระบบโดยแทรกบัญชี sysvar ปลอม และสร้าง "ข้อความ" ที่เป็นอันตรายได้สำเร็จโดยระบุว่าควรสร้าง 120,000 wETH ในที่สุด ผู้โจมตีประสบความสำเร็จในการสร้างมูลค่า 120,000 wETH มูลค่าประมาณ 320 ล้านดอลลาร์โดยใช้ "ข้อความ" ที่เป็นอันตรายเพื่อเรียกใช้ฟังก์ชัน "complete_wrapped"
ชื่อเรื่องรอง
รู้เบื้องต้นเกี่ยวกับรูหนอน
Wormhole (Wormhole) หรือที่เรียกว่าสะพาน Einstein-Rosen ก็แปลว่ารูหนอนเช่นกัน เป็นอุโมงค์แคบๆ ที่อาจมีอยู่จริงในจักรวาลเพื่อเชื่อมต่อเวลาและอวกาศที่แตกต่างกันสองแห่ง
ในความเป็นจริงแล้ว ใกล้บ้านมากขึ้น Wormhole Protocol (โปรโตคอลรูหนอน) ของสะพานข้ามโซ่ของ Solana มีความหมายและการวางตำแหน่งเดียวกันกับรูหนอนในวิทยาศาสตร์และแม้แต่นิยายวิทยาศาสตร์
ใช้ประโยชน์จากธุรกรรม
ใช้ประโยชน์จากธุรกรรม
มิ้นต์ 120,000 รูหนอน ETH:
https://solscan.io/tx/2zCz2GgSoSS68eNJENWrYB48dMM1zmH8SZkgYneVDv2G4gRsVfwu5rNXtK5BKFxn7fSqX9BvrBc1rdPAeBEcD6Es
ชื่อเรื่องรอง
https://etherscan.io/address/0x629e7da20197a5429d30da36e77d06cdf796b71a#internaltx
กระบวนการโจมตีช่องโหว่
ขั้นตอนที่ 1: ผู้โจมตีใช้บัญชี sysvar ปลอมเพื่อเรียกใช้ฟังก์ชัน "verify_signatures": https://solscan.io/tx/25Zu1L2Q9uk998d5GMnX43t9u9eVBKvbVtgHndkc2GmUFed8Pu73LGW6hiDsmGXHykKUTLkvUdh4yXPdL3Jo4wVS①ด้วยของปลอม " บัญชี sysvar" เป็นอาร์กิวเมนต์ของฟังก์ชัน "verify_signatures":
ในทางตรงกันข้าม ภาพหน้าจอด้านล่างใช้ฟังก์ชัน "verify_signatures" กับ "บัญชี sysvar" จริงเป็นอาร์กิวเมนต์:
② ฟังก์ชัน “verify_signatures” โหลดคำสั่งปัจจุบันจาก sysvar (L92)
③ อย่างไรก็ตาม ฟังก์ชัน "load_current_index" ไม่สามารถตรวจสอบได้ว่า "บัญชี sysvar" เป็น "sysvar ระบบ" จริงหรือไม่ เนื่องจากคำสั่งปัจจุบัน (L92) ที่ดึงมาจาก "sysvar" ถูกควบคุมโดยผู้โจมตี จึงสามารถผ่านกระบวนการตรวจสอบต่อไปนี้ได้สำเร็จ
ขั้นตอนที่ 2: จากนั้นผู้โจมตีจะใช้ลายเซ็นที่ผ่านการตรวจสอบในขั้นตอนก่อนหน้าเพื่อเรียกใช้ฟังก์ชัน "post_vaa" และสร้างบัญชีข้อความที่เป็นอันตราย โดยอ้างว่าสร้าง 120,000 wETH: https://solscan.io/tx/2SohoVoPDSdzgsGCgKQPByKQkLAXHrYmvtE7EEqwKi3qUBTGDDJ7DcfYS7YJC2f8xwKVVa 6SFUph5MZ5 xcyn1BCK
① Account2 คือชุดลายเซ็นที่สร้างขึ้นโดยคำสั่ง "verify_signatures" ② Account3 คือบัญชีข้อความที่จะใช้ในฟังก์ชัน "complete_wrapped"
ขั้นตอนที่ 3: ผู้โจมตีเรียกใช้ฟังก์ชัน "complete_wrapped" เพื่ออ่านข้อมูลในบัญชีข้อความที่เป็นอันตรายและทำมิ้นต์ 120,000 wETH ป.1พ.ศ.6ส
① Account3 คือบัญชีข้อความที่สร้างขึ้นโดยฟังก์ชัน "post_vaa"
② บัญชี 6 คือที่อยู่ "ผู้รับ" สำหรับรับ Wormhole ETH ที่ขุดแล้ว ③ Account9 เป็นสถาบันโรงกษาปณ์ของ Wormhole ETH ซึ่งเป็น PDA (Program Derived Address) นี่คือเหตุผลที่ผู้โจมตีสามารถสร้างโทเค็นได้โดยตรงหลังจากผ่านการยืนยันลายเซ็น
สาเหตุหลักของช่องโหว่นี้คือในกระบวนการตรวจสอบลายเซ็น ("verify_signatures") โปรแกรมใช้ฟังก์ชัน "load_current_index" ซึ่งเลิกใช้งานเมื่อ Solana อัปเดตเป็น 1.8.0 ฟังก์ชันนี้จะไม่ตรวจสอบว่าอินพุต "บัญชี sysvar" เป็น "sysvar ระบบ" จริงหรือไม่ ดังนั้นผู้โจมตีสามารถใช้โอกาสนี้ปลอมแปลงบัญชีที่สำคัญนี้ได้
https://solscan.io/tx/j3jUDG43di8Dsg7Q3jQhstamtBovu1GLqnDJ7yNvM3r4pnK9e7uqgt9uBobCjT5S1BKhZZFQNQwDxypEYqLknec
https://solscan.io/tx/5UaqPus91wvAzKNve6L8YAHsESomZQ7GWi37gPFyzTHcXNMZA641bb8m8txo7bS7A5cAnzKDKYyiKcQC8GgDcAuf
https://solscan.io/tx/3AugXqrXunBa96YfqENhPBiWZWpnSnJdqAHS64qcHTVU9KtfGon8cN9cUuXsDmBobBBXjYUtuRxnYxgERS42nh6G
การวิเคราะห์ช่องโหว่ของสัญญา
สาเหตุหลักของช่องโหว่นี้คือในกระบวนการตรวจสอบลายเซ็น ("verify_signatures") โปรแกรมใช้ฟังก์ชัน "load_current_index" ซึ่งเลิกใช้งานเมื่อ Solana อัปเดตเป็น 1.8.0 ฟังก์ชันนี้จะไม่ตรวจสอบว่าอินพุต "บัญชี sysvar" เป็น "sysvar ระบบ" จริงหรือไม่ ดังนั้นผู้โจมตีสามารถใช้โอกาสนี้ปลอมแปลงบัญชีที่สำคัญนี้ได้
สรุป
สรุป
ขณะนี้ทีมงาน Wormhole ได้แก้ไขช่องโหว่และกู้คืนเครือข่ายแล้ว ที่นี่ CertiK เสนอคำแนะนำต่อไปนี้แก่นักพัฒนา:
เมื่อนักพัฒนาใช้ฟังก์ชันที่ต้องพึ่งพาภายนอก พวกเขาจำเป็นต้องมีความเข้าใจเพียงพอเกี่ยวกับฟังก์ชันนี้
จับตาดูการอัปเดตที่สำคัญของฐานโค้ดที่พึ่งพาภายนอก และทำการปรับเปลี่ยนที่สอดคล้องกันกับฐานโค้ดของคุณเองอย่างทันท่วงทีเมื่อมีการเปลี่ยนแปลงเวอร์ชันหลัก
เมื่อมีการอัปเดตเวอร์ชันของรหัส ยังจำเป็นต้องดำเนินการตรวจสอบอย่างครอบคลุมในเวลาที่เหมาะสม และอัปเดตรหัสที่ตรวจสอบแล้วเป็นรหัสที่ถูกปรับใช้บนห่วงโซ่ในเวลาที่เหมาะสม
วันที่ห้าของปฏิทินจันทรคติใกล้เข้ามาแล้ว ฉันหวังว่าทุกคนจะ "ทำลายห้าคนจน" ในขณะเดียวกัน ก็หวังว่าแต่ละโครงการจะถูกนำไปใช้ทางออนไลน์หลังจากการตรวจสอบอย่างเข้มงวด เพื่อให้ได้รับความปลอดภัยที่สูงขึ้นและลดความเป็นไปได้ที่จะสูญเสียทรัพย์สิน ความโชคดีเริ่ม "หมุนเวียน" ต่อเนื่องตั้งแต่ปีใหม่ ความปลอดภัยเริ่มต้นจากการตรวจสอบที่เข้มงวด และทุกโครงการมี "การเริ่มต้น" ที่ดีกว่า!
จนถึงตอนนี้ CertiK ได้รับการยอมรับจากลูกค้าองค์กร 2,500 ราย ปกป้องทรัพย์สินดิจิทัลมูลค่ากว่า 311 พันล้านดอลลาร์จากการสูญหาย ยินดีต้อนรับสู่คลิกกล่องโต้ตอบที่ด้านล่างของบัญชีสาธารณะ CertiK ฝากข้อความเพื่อรับคำปรึกษาและใบเสนอราคาฟรี!


