Vào lúc 4:22:49 sáng ngày 16 tháng 5 năm 2022, giờ Bắc Kinh, nhóm công nghệ bảo mật CertiK đã theo dõi rằng FEG đã phải chịu một cuộc tấn công flash loan quy mô lớn vào chuỗi Ethereum và BNB, dẫn đến tổn thất tài sản trị giá khoảng 1,3 triệu đô la Mỹ.
Cuộc tấn công này là do lỗ hổng trong chức năng "swapToSwap()", sử dụng trực tiếp "đường dẫn" do người dùng nhậpvới tư cách là bên đáng tin cậy mà không sàng lọc và xác minh các tham số đến, cho phép tham số "đường dẫn" (địa chỉ) không được xác thực đến sử dụng tài sản của hợp đồng hiện tại.
Do đó, bằng cách gọi liên tục "depositInternal()" và "swapToSwap()", kẻ tấn công có thể xin phép sử dụng tài sản của hợp đồng hiện tại mà không bị hạn chế , do đó đánh cắp tất cả tài sản trong hợp đồng.
Một trong những địa chỉ hợp đồng bị ảnh hưởng: https://bscscan.com/address/0x818e2013dd7d9bf4547aaabf6b617c1262578bc7
giao dịch dễ bị tổn thương
Địa chỉ lỗ hổng: https://bscscan.com/address/0x73b359d5da488eb2e97990619976f2f004e9ff7c
Mẫu giao dịch dễ bị tổn thương: https://bscscan.com/tx/0x77cf448ceaf8f66e06d1537ef83218725670d3a509583ea0d161533fda56c063
Theo dõi tiền bị đánh cắp: https://debank.com/profile/0x73b359d5da488eb2e97990619976f2f004e9ff7c/history
địa chỉ liên quan
Địa chỉ kẻ tấn công: https://bscscan.com/address/0x73b359d5da488eb2e97990619976f2f004e9ff7c
Hợp đồng của kẻ tấn công: https://bscscan.com/address/0x9a843bb125a3c03f496cb44653741f2cef82f445
Địa chỉ mã thông báo FEG: https://bscscan.com/token/0xacfc95585d80ab62f67a14c566c1b7a49fe91167
FEG Wrapped BNB(fBNB): https://bscscan.com/address/0x87b1acce6a1958e522233a737313c086551a5c76#code
các bước tấn công
Luồng tấn công sau dựa trên giao dịch lỗ hổng này: https://bscscan.com/tx/0x77cf448ceaf8f66e06d1537ef83218725670d3a509583ea0d161533fda56c063
① Kẻ tấn công mượn 915 WBNB và gửi 116 BNB vào fBNB.
② Kẻ tấn công đã tạo 10 địa chỉ để sử dụng cho các cuộc tấn công tiếp theo.
③Kẻ tấn công gửi fBNB vào hợp đồng FEGexPRO bằng cách gọi "depositInternal()".
"_balances2[msg.sender]" được tăng lên theo số dư của địa chỉ hiện tại.
④ Kẻ tấn công gọi "swapToSwap()" và tham số đường dẫn là địa chỉ của hợp đồng đã tạo trước đó.
Chức năng này cho phép "đường dẫn" nhận 114 fBNB của hợp đồng FEGexPRO.
⑤ Kẻ tấn công liên tục gọi "depositInternal()" và "swapToSwap()" (bước ③ và ④), cho phép nhiều địa chỉ (được tạo ở bước ②) lấy được mã thông báo fBNB vì những lý do sau:
Mỗi khi gọi "depositInternal() ", _balance2[msg.sender] sẽ tăng thêm khoảng 114 fBNB.
Mỗi khi lệnh "swapToSwap()" được gọi, hợp đồng do kẻ tấn công tạo ra có thể lấy được quyền sử dụng của 114 fBNB.
⑥ Vì kẻ tấn công kiểm soát 10 địa chỉ và mỗi địa chỉ có thể tiêu 114 fBNB từ địa chỉ hiện tại nên kẻ tấn công có thể đánh cắp tất cả fBNB trong hợp đồng bị tấn công.
⑦ Kẻ tấn công lặp lại các bước ④⑤⑥ để sử dụng hết các mã thông báo FEG trong hợp đồng.
⑧ Cuối cùng, kẻ tấn công bán tất cả tài sản đã cạn kiệt, hoàn trả khoản vay chớp nhoáng và cuối cùng lấy phần lợi nhuận còn lại.
Nơi ở của tài sản
Kể từ 6:43 ngày 16 tháng 5 năm 2022, số tiền bị đánh cắp vẫn được lưu trữ trong ví của kẻ tấn công (0x73b359d5da488eb2e97990619976f2f004e9ff7c) trên cả chuỗi Ethereum và BSC.
Tiền gốc từ Tornado cash trên Ethereum và BSC: https://etherscan.io/tx/0x0ff1b86c9e8618a088f8818db7d09830eaec42b82974986c855b207d1771fdbe
https://bscscan.com/tx/0x5bbf7793f30d568c40aa86802d63154f837e781d0b0965386ed9ac69a16eb6ab
Kẻ tấn công đã tấn công 13 hợp đồng FEGexPRO , sau đây là tổng quan: