Trong một lượt hoán đổi, kẻ tấn công đã nhận 4.421.023,357469 USDT từ pool thanh khoản TENDRIL trên BNB Chain vào ngày 5. Tuy nhiên, dòng USDT ròng chảy khỏi pool sau khi tính toàn bộ giao dịch thấp hơn số USDT đầu ra của lượt swap này.
Theo dữ liệu giao dịch trên BNBScan, giao dịch được thực hiện lúc 1 giờ 2 phút 45 giây ngày 5, theo giờ Hàn Quốc, và được ghi vào khối 131.653.427. Mã băm giao dịch là 0xfdff4fba4327821c204af07944076ecaaee163a994398fdf4063d08712e40059.
Trong pool TENDRIL-USDT trên PancakeSwap V2, số tiền 4.421.023,357469 USDT được chuyển tới hợp đồng của kẻ tấn công là lượng đầu ra của lượt swap. Con số này cần được phân biệt với dòng tiền ròng ra khỏi pool trong toàn bộ giao dịch.
Trong cùng giao dịch, tổng lượng USDT rời khỏi pool là 5.117.517,824288 USDT, còn lượng đi vào pool là 4.561.847,285535 USDT. Chênh lệch giữa hai luồng, tức dòng chảy ra ròng, là 555.670,538753 USDT.
Trong pool thanh khoản của sàn giao dịch phi tập trung (DEX), tài sản có thể luân chuyển nhiều lần trong một giao dịch. Vì vậy, lượng đầu ra của một lượt swap và chênh lệch giữa tổng tiền ra với tổng tiền vào trong toàn bộ giao dịch là hai chỉ số khác nhau.
Giao dịch này cũng ghi nhận khoản vay 30.641.402,469693 USDT và việc hoàn trả toàn bộ số tiền đó. Vay nhanh (flash loan) là hình thức vay và hoàn trả trong cùng một giao dịch.
BlockSec Phalcon phân tích rằng kẻ tấn công đã dùng USDT vay được để mua TENDRIL rồi bán ra. Công ty bảo mật này chú ý đến thứ tự xử lý khoản thuế 30% áp dụng cho giao dịch bán token.
Theo phân tích của BlockSec Phalcon, trong lúc thuế bán được xử lý, số dư TENDRIL trong pool bị đốt và lượng dự trữ được cập nhật. Công ty cho biết lượng dự trữ được ghi nhận đã giảm xuống gần 0 trước khi phần còn lại của lượng token bán ra được chuyển vào pool.
sync() là lệnh gọi để hợp đồng pool ghi lại lượng dự trữ theo số dư token. Theo phân tích của công ty bảo mật, điểm mấu chốt là lệnh này được thực hiện trước khi phần còn lại của lượng token bán ra đi vào pool.
ExVul cho biết số dư TENDRIL được ghi nhận trong pool ngay sau khi đồng bộ dự trữ là 6.678 wei. Đây là kết quả phân tích mã nguồn và giao dịch của công ty bảo mật.
BNBScan cũng ghi nhận một giao dịch chuyển 308.959,367543 USDT tới một địa chỉ riêng. Chỉ dựa trên khoản chuyển này thì chưa thể kết luận lợi nhuận cuối cùng của kẻ tấn công.
Không thể tính toàn bộ lãi lỗ chỉ từ lịch sử chuyển tiền của giao dịch, vì còn phải tính chi phí mua token, vị thế thanh khoản có từ trước và phí gas. Tìm kiếm công khai chưa xác nhận tuyên bố chính thức, biện pháp khắc phục hay thông báo thu hồi tiền từ phía TENDRIL.
Comment 0