CertiK: Khách hàng của bạn đã bị đánh cắp? Bài viết này khôi phục phần đầu và phần cuối của sự cố tấn công Mạng Axion
CertiK
2020-11-03 03:23
本文约2660字,阅读全文需要约11分钟
Các lỗ hổng trong Mạng Axion đã dẫn đến việc vô tình tạo ra gần 80 tỷ AXN. Sự cố này không liên quan gì đến cuộc kiểm toán do CertiK hoàn thành.

Giá của mã thông báo Mạng Axion, AXN, đã giảm mạnh 100% chỉ vài giờ sau khi nó được phát hành vào ngày 2 tháng 11. Sự cố giảm giá này đã bộc lộ các lỗ hổng của nó và sau đây là phân tích đầy đủ về sự cố của nhóm kiểm toán bảo mật CertiK.

Vào khoảng 7:00 tối theo giờ Bắc Kinh ngày 2 tháng 11 năm 2020➀, tin tặc đã đào được khoảng 80 tỷ mã thông báo AXN bằng cách sử dụng chức năng hủy đặt cọc của hợp đồng Axion Staking.

Sau đó, tin tặc đã đổi mã thông báo AXN lấy Ethereum trên sàn giao dịch Uniswap và lặp lại quy trình cho đến khi Ether cho cặp giao dịch ETH-AXN trong Uniswap cạn kiệt và giá của mã thông báo AXN giảm xuống 0.

Trong vòng vài phút sau vụ tấn công, nhóm kiểm toán bảo mật CertiK đã được thông báo về vụ tấn công và ngay lập tức mở cuộc điều tra.

Nhóm kiểm toán bảo mật CertiK tin rằng cuộc tấn công rất có thể là do một hoạt động nội bộ gây ra nhằm đưa mã độc vào các phần phụ thuộc OpenZeppelin mà dự án phụ thuộc vào khi triển khai mã.

Các chức năng hợp đồng thông minh bị khai thác một cách ác ý không nằm trong phạm vi kiểm toán của CertiK.

tiêu đề phụ

tấn công có tính toán trước

Các tin tặc đã sử dụng số tiền ẩn danh➂ thu được từ Tornado.cash➁ một ngày trước đó để khởi động cuộc tấn công, cho thấy đây là một cuộc tấn công có tính toán trước.

Có thể là để tiết kiệm một số tiền trong trường hợp cuộc tấn công thất bại, sau khi nhận được tiền, tài khoản hacker đã ngay lập tức chuyển 2,1 đồng ether thông qua Tornado.cash.

tiêu đề phụ

chuẩn bị tấn công

Vào lúc 4:00 chiều theo giờ Bắc Kinh ➄, trước tiên, tin tặc gọi hàm cổ phần với số lượng bằng 0 và thời gian thế chấp liên tục là 1 ngày làm tham số để tạo thế chấp "trống" trong hợp đồng thế chấp của Axion Network.

Thao tác này tạo mục nhập Phiên cho tin tặc với ID phiên là 6, số lượng là 0 và giá cổ phiếu là 0.

Dự đoán rằng cuộc tấn công sẽ thành công, kể từ đó, tin tặc đã ủy quyền trước AXN không giới hạn cho sàn giao dịch Uniswap.

Sau đó, họ đã phê duyệt hợp đồng NativeSwap của Axion để chuyển đổi số tiền thành mã thông báo AXN.

Tin tặc đã gọi chức năng gửi tiền của hợp đồng NativeSwap vào khoảng 5:00 chiều giờ Bắc Kinh➅, nhưng tin tặc đã không gọi chức năng rút tiền của hợp đồng để lấy AXN mà nó đã trao đổi, điều này có thể thấy rõ trong chức năng hoán đổiTokenBalanceOf của hợp đồng NativeSwap .

tiêu đề phụ

thực hiện tấn công

Các giao dịch được đề cập ở trên chỉ là quả bom khói để tin tặc che đậy cuộc tấn công unstake thực sự.

Do ánh xạ sessionDataOf không bị thay đổi bởi giao dịch do tin tặc thực hiện nên có thể kết luận rằng đây là một cuộc tấn công đa địa chỉ.

Để tìm ra những lý do có thể gây ra tác động của ánh xạ sessionDataOf, nhóm kiểm toán bảo mật CertiK đã xem xét mã nguồn hợp đồng được chia sẻ bởi bên dự án và CertiK trong kho lưu trữ mã GitHub.

tiêu đề phụ

véc tơ tấn công

Sau khi phân tích mã nguồn của hợp đồng Staking đã triển khai, nhóm kiểm toán bảo mật CertiK đã tìm thấy một đoạn mã trong mã nguồn đã triển khai của hợp đồng Staking ➆ dòng 665-671, xảy ra trong thư viện OpenZeppelin đã sửa đổi. Hợp đồng thông minh AccessControl.

Hàm checkRole trong liên kết không phải là một phần của quá trình triển khai OpenZeppelin v3.0.1, được liệt kê dưới dạng phụ thuộc trong kho lưu trữ mã GitHub của dự án.

Trong hàm checkRole, tồn tại các mô-đun lắp ráp sau:

Chức năng này cho phép một địa chỉ cụ thể ghi vào hợp đồng một cách tùy ý thông qua lệnh gọi cơ bản theo các tham số được truyền vào. Một mô-đun lắp ráp được chú thích trông như thế này:

Tóm lại là

Tóm lại là

Mã liên quan đến cuộc tấn công này đã được cố ý thêm vào trước khi hợp đồng được triển khai.

Sự cố này không liên quan gì đến cuộc kiểm toán do CertiK hoàn thành và người chịu trách nhiệm cho cuộc tấn công này phải là nhân viên có liên quan tham gia vào việc triển khai hợp đồng Mạng Axion.

Tại đây, CertiK cũng đặc biệt nhấn mạnh rằng để đảm bảo tính hợp lệ của báo cáo kiểm toán và đảm bảo tính bảo mật của dự án, báo cáo kiểm toán cần bao gồm địa chỉ của các hợp đồng thông minh đã triển khai. Mã của hợp đồng được trỏ tới bởi địa chỉ phải giống với mã nguồn đã được kiểm tra. Do đó, vui lòng không theo dõi một cách mù quáng mà không thực hiện bất kỳ kiểm tra lý lịch nào chỉ vì bạn thấy rằng dự án đã được "kiểm toán".

Oracle bảo mật CertiK, với tư cách là một công cụ phát hiện bảo mật có thể tương tác trong thời gian thực trên chuỗi, nó có thể đảm bảo và xác minh một cách hiệu quả rằng hợp đồng thông minh đã triển khai khớp với phiên bản đã được kiểm toán.

Nó có thể truy xuất một tập hợp các điểm bảo mật từ mạng của nhà điều hành bảo mật phi tập trung, lấy mã nguồn an toàn và đáng tin cậy để đánh giá mạng và mọi người có thể xác minh tính bảo mật của hợp đồng bằng cách sử dụng máy tiên tri.

Liên kết tham khảo:

Liên kết tham khảo:

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

https://tornado.cash/

https://etherscan.io/tx/0x86f5bd9008f376c2ae1e6909a5c05e2db1609f595af42cbde09cd39025d9f563/advanced

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

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

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

https://etherscan.io/address/0xcd5f8dcae34f889e3d9f93f0d281c2d920c46a3e

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.0.1/contracts/access/AccessControl.so

CertiK
作者文库