Sai sót nhỏ gây thiệt hại lớn, tại sao GYM Network lại ở đây?
创宇区块链安全实验室
2022-06-09 04:12
本文约1582字,阅读全文需要约6分钟
Mạng GYM, một dự án NFT trên chuỗi BSC, đã bị tấn công do các vấn đề kiểm soát quyền, dẫn đến thiệt hại khoảng $216W.

lời tựa

Vào ngày 8 tháng 6 năm 2022, giờ Bắc Kinh,Biết Phòng thí nghiệm bảo mật chuỗi khối ChuangyuBiết Phòng thí nghiệm bảo mật chuỗi khối Chuangyu"Public depositFromOtherContract"Vấn đề kiểm soát quyền hạn đã bị tấn công và tổn thất bao gồm 7.475 BNB, tổng trị giá khoảng 216 W USD. Hiện tại, ETH được đổi lấy 70 W USD thông qua DEX đã được liên kết chéo với Ethereum thông qua Celer. 2.000 BNB được trộn bằng BSC-Tornado và 3.000 BNB còn lại tại địa chỉ của kẻ tấn công.

Biết Phòng thí nghiệm bảo mật chuỗi khối ChuangyuTheo dõi và phân tích vụ việc này càng sớm càng tốt.

thông tin cơ bản

thông tin cơ bản

Hợp đồng bị tấn công: 0x0288fba0bf19072d30490a0f3c81cd9b0634258a

Địa chỉ kẻ tấn công: 0xB2C035eee03b821cBe78644E5dA8B8eaA711D2e5

tx:0xfffd3aca0f53715f4c76c4ff1417ec8e8d00928fe0dbc20c89d875a893c29d89

Hợp đồng proxy GymSinglePool: 0xa8987285e100a8b557f06a7889f79e0064b359f2

phân tích lỗ hổng

phân tích lỗ hổng

Trong quá trình triển khai hợp đồng GymSinglePool, bên dự án thiếu quyền kiểm soát đối với hàm 0x0288fba0bf19072d30490a0f3c81cd9b0634258a#depositFromOtherContract, cho phép kẻ tấn công gọi hàm _autoDeposit nội bộ thông qua hàm này để đạt được cam kết không tiêu thụ:

Chức năng bên trong của cam kết sẽ được mở cho người dùng là chức năng _deposit, thực hiện phê duyệt mã thông báo, như thể hiện trong hình sau:"Hàm _autoDeposit tương ứng thực hiện"Cam kết, tức là không cần chuyển Token để cầm cố. Đồng thời, chức năng được tiếp xúc trực tiếp với người dùng, so sánh chức năng như sau:

quá trình tấn công

quá trình tấn công

Để ngăn chặn MEV trên chuỗi và rô bốt ưu tiên, kẻ tấn công đã triển khai và thực hiện hợp đồng từng bước, đồng thời triển khai/gọi nhiều lần cùng một lúc để hoàn thành việc khai thác hoàn toàn Mã thông báo GYMNET trong hợp đồng GymNetwork (0x3a0d9d7764FAE860A659eb96A500F1323b411e68) , và một trong các cuộc gọi triển khai Ví dụ:"1. Sau khi triển khai hợp đồng, hãy gọi DepositFromOtherContract"đặc quyền

Cam kết, tương ứng với phương thức 0xfd4a2266:

Chi tiết cuộc gọi nội bộ như sau:

2. Gọi 0x30649e15 để thực hiện rút Token của cam kết đặc quyền trước đó:

3. Sử dụng chức năng 0x1d111d13 để bán GYM-Token đã mua:"lặp lại nhiều lần"đặc quyền

Các bước cam kết--rút tiền--bán, kẻ tấn công cuối cùng đã lấy được 7475 BNB:

Để ngăn chặn việc chạy trước, kẻ tấn công đã tách các bước thêm cam kết và rút tiền, cả hai bước đều là thao tác cốt lõi, đồng thời, Giá xăng khi thêm một số bước đã được cố tình tăng lên 15/20gwei, điều này cho thấy kẻ tấn công đã làm nó cố ý.

truy xuất nguồn gốc

Lý do cho cuộc tấn công này là do quyền kiểm soát chức năng đặc quyền được thực hiện bởi bên dự án là không đúng. Một giờ sau khi cuộc tấn công được phát hiện, bên dự án đã sửa đổi hợp đồng logic của hợp đồng proxy GymSinglePool nhiều lần và thêm quyền kiểm soát vào đó:

Và thêm chức năng xử lý tài khoản khẩn cấp vào hợp đồng logic sau 20 phút:

Đối với phân tích địa chỉ Deployer của bên dự án, nhiều hợp đồng GymSinglePool do bên đó triển khai chỉ có sơ hở ở hợp đồng GymSinglePool triển khai 2 ngày trước theo theo dõi, còn hợp đồng 4 ngày trước không có chức năng này:

Việc chuẩn bị tài chính của kẻ tấn công (Từ Tornado) đã có từ khoảng 6 giờ trước, và danh tính của kẻ tấn công cũng đáng để suy nghĩ.

tóm tắt

tóm tắt

创宇区块链安全实验室
作者文库