Vào ngày 13 tháng 10 năm 2022, theo nền tảng giám sát bảo mật EagleEye Web3 của Beosin, sàn giao dịch FTX đã bị một cuộc tấn công ăn cắp gas khi nó bị thao túng để trả tất cả phí gas nhằm đúc một lượng lớn mã thông báo XEN cho tin tặc.
Để đối phó với cuộc tấn công này, Coinlive đã mời Beosin, một công ty bảo mật Web3 có trụ sở tại Singapore, phân tích quy trình khai thác cụ thể.
1. Thông tin liên quan đến sự kiện
A few transactions of the attacks: 0xc96b84cd834655290aa4bae7de80a3c117cc19d414f5bcf2fb85b8c5544300890x8eb73bd5c08318a4cfd233940c3a58744830cda999e59ecbc56f094618a91d690x6bada8e084f8d3b62311f0b6eda10f2690e7542dab75a0de436a640036bccf94
Một trong những địa chỉ của kẻ tấn công: 0x1d371CF00038421d6e57CFc31EEff7A09d4B8760
Một trong những hợp đồng bị tấn công: 0xCba9b1Fd69626932c704DAc4CB58c29244A47FD3
Địa chỉ ví nóng FTX bị tấn công: 0xC098B2a3Aa256D2140208C3de6543aAEf5A94444
2. Luồng tấn công
Ví dụ: chúng tôi sẽ tập trung vào một giao dịch tấn công cụ thể: (0x8eb73bd5c08318a4cfd233940c3a58744830cda999e59ecbc56f094618a91d69)
Trong bước đầu tiên, kẻ tấn công đã triển khai một địa chỉ hợp đồng độc hại trên chuỗi (0xCba9b1Fd69626932c704DAc4CB58c29244A47FD3)
Trong bước thứ hai, tin tặc đã sử dụng địa chỉ ví nóng FTX của mình để chuyển một lượng tiền nhỏ đến địa chỉ hợp đồng độc hại (0xCba9...7FD3) và sau đó sử dụng hợp đồng này để tạo các hợp đồng phụ theo lô.
Vì nhiều hợp đồng được tạo ra trong toàn bộ cuộc tấn công và mỗi khi hợp đồng phụ được thực thi, hợp đồng phụ sẽ tự hủy, vì vậy hình dưới đây được hiển thị làm ví dụ.
Trong bước thứ ba, chức năng dự phòng () của hợp đồng phụ sẽ bắt đầu yêu cầu đúc cho hợp đồng $XEN. Hàm khiếu nạiRank() vượt qua thời hạn (>= 1 ngày) để đúc, chỉ yêu cầu trả phí gas khi gọi mà không có bất kỳ chi phí nào khác liên quan.
Hàm ClaimMintRewardAndShare() dùng để xác nhận quyền sở hữu, chỉ xác định thời hạn có đạt hay không (trường hợp này do hacker đặt là 1 ngày), sau đó có thể rút vô điều kiện về bất kỳ địa chỉ nào. Tuy nhiên, trong quy trình gọi này, người khởi tạo giao dịch là địa chỉ ví nóng FTX, do đó, gas của toàn bộ quá trình gọi được thanh toán bằng địa chỉ ví nóng FTX và địa chỉ đúc $XEN là địa chỉ của kẻ tấn công.
Ba bước trên được lặp lại liên tục theo một chu kỳ. Mỗi lần rút các mã thông báo đã hết hạn và đồng thời bắt đầu một yêu cầu đúc mới.
3. Phân tích lỗ hổng
Cuộc tấn công này chủ yếu lợi dụng thực tế là FTX không áp đặt bất kỳ hạn chế nào đối với địa chỉ hợp đồng của người nhận, cũng như không áp đặt các hạn chế đối với giới hạn gas của ETH, điều này cho phép tin tặc khai thác và đúc mã thông báo $XEN để kiếm lợi nhuận.
Tại thời điểm viết bài, sàn giao dịch FTX đã mất tổng cộng 81 ETH và hacker đã đổi mã thông báo $XEN để chuyển ETH thông qua các sàn giao dịch phi tập trung như DODO và Uniswap.
Biểu đồ theo dõi và chuyển động quỹ của Beosin