BTC
ETH
HTX
SOL
BNB
Xem thị trường
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Mất hơn 150 triệu đô la, giao thức cầu nối chuỗi chéo Nomad phân tích phân tích hack

DeFi之道
特邀专栏作者
2022-08-02 03:06
Bài viết này có khoảng 1318 từ, đọc toàn bộ bài viết mất khoảng 2 phút
Một lỗ hổng chết người về "xác thực".
Tóm tắt AI
Mở rộng
Một lỗ hổng chết người về "xác thực".

Tác giả gốc:Samczsun, Đối tác tại Paradigm

Tổng hợp văn bản gốc: The Way of DeFi

Tổng hợp văn bản gốc: The Way of DeFisamczsunVào ngày 2 tháng 8, giao thức cầu nối xuyên chuỗi Nomad đã bị tấn công và hơn 150 triệu đô la tiền của người dùng đã bị tin tặc chuyển đi.

Sự cố bảo mật này đã được phân tích.

Nomad vừa mất 150 triệu đô la trong một trong những vụ hack lộn xộn nhất mà Web3 từng thấy. Vì vậy, làm thế nào chính xác điều này xảy ra và nguyên nhân gốc rễ là gì? Cho phép tôi đưa bạn đến hậu trường của cuộc tấn công này.

Tất cả bắt đầu với một tweet @spreekaway được chia sẻ bởi @officer_cia trong kênh điện tín ETHSecurity và mặc dù tôi không biết chuyện gì đang xảy ra vào thời điểm đó, nhưng lượng tài sản rời khỏi cây cầu liên chuỗi Nomad rõ ràng không phải là một dấu hiệu tốt .

Suy nghĩ đầu tiên của tôi là có một số cấu hình sai dấu thập phân của mã thông báo. Xét cho cùng, cây cầu liên chuỗi dường như đang chạy chương trình khuyến mãi "gửi 0,01 WBTC, nhận lại 100 WBTC".

https://moonscan.io/tx/0xcca9299c739a1b538150af007a34aba516b6dade1965e80198be021e3166fe4c

https://etherscan.io/tx/0xa5fe9d044e4f3e5aa5bc4c0709333cd2190cba0f4e7f16bcf73f49f83e4a5460

Tuy nhiên, sau một số lần đào thủ công khó khăn trên mạng Moonbeam, tôi đã xác nhận rằng giao dịch Moonbeam đã thực hiện chuỗi chéo 0,01 WBTC, nhưng bằng cách nào đó, giao dịch Ethereum đã liên kết chéo 100 WBTC.

Hơn nữa, các giao dịch xuyên chuỗi WBTC không thực sự chứng minh bất cứ điều gì. Nó chỉ gọi trực tiếp ` process`, điều này có thể nói là rất tệ khi có thể xử lý một tin nhắn mà không chứng minh nó trước

Tại thời điểm này, có hai khả năng xảy ra, hoặc bằng chứng đã được gửi riêng trong một khối trước đó hoặc có một lỗ hổng nghiêm trọng trong hợp đồng Bản sao. Tuy nhiên, hoàn toàn không có dấu hiệu cho thấy bất cứ điều gì đã được chứng minh gần đây.

Điều đó chỉ còn lại một khả năng, đó là một lỗ hổng chết người trong hợp đồng Bản sao. Vậy chuyện gì đang xảy ra thế? Một cái nhìn nhanh cho thấy rằng thông báo đã cam kết phải thuộc về một gốc có thể chấp nhận được, nếu không, việc kiểm tra trên dòng 185 sẽ không thành công.

May mắn thay, có một cách dễ dàng để kiểm tra giả định này. Tôi biết thư gốc chưa được chứng nhận sẽ là 0x00 vì message[_messageHash] sẽ chưa được khởi tạo. Tất cả những gì tôi phải làm là kiểm tra xem hợp đồng có chấp nhận điều này không.

Tại sao……

Hóa ra là trong quá trình nâng cấp định kỳ, nhóm Nomad đã khởi tạo gốc tin cậy thành 0x00. Để rõ ràng, thông thường sử dụng số 0 làm giá trị khởi tạo. Thật không may, trong trường hợp này, nó có tác dụng phụ nhỏ là tự động xác thực mọi tin nhắn.

Đây là điều khiến việc hack trở nên lộn xộn, bạn không cần biết bất cứ thứ gì như cây Solidity hay Merkle, tất cả những gì bạn phải làm là tìm một giao dịch hợp lệ, tìm/thay thế địa chỉ của người khác bằng địa chỉ của bạn và phát lại địa chỉ đó.

Nhìn chung, một bản nâng cấp thông thường đã đánh dấu hàm băm bằng 0 là gốc hợp lệ, tác dụng của nó là cho phép giả mạo các tin nhắn trên Nomad, những kẻ tấn công đã lạm dụng tính năng này để sao chép/dán các giao dịch và nhanh chóng cạn kiệt trong một cuộc hỗn chiến điên cuồng Tài trợ cho cuộc giao tranh chéo này Cầu dây xích.

Sự an toàn
chuỗi chéo
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Nhóm trò chuyện
https://t.me/Odaily_CryptoPunk
Tài khoản chính thức
https://twitter.com/OdailyChina
Nhóm trò chuyện
https://t.me/Odaily_CryptoPunk