Nói một cách đơn giản, kẻ tấn công đã dành một khoảng thời gian chuẩn bị công khai trên chuỗi, sau đó dùng một lần ủy quyền EIP-7702 để biến ví nóng Binance 14 của Binance thành hợp đồng của chính mình, và bắt đầu quét từ rạng sáng. Đến khi trời sáng, các địa chỉ liên quan đến ví nóng Binance đã chảy ra khoảng 5,643 tỷ USD, trải rộng trên Ethereum, Bitcoin, Tron và nhiều L2; Tether, Circle, Ripple, World Liberty và các nhà phát hành khác đã cùng nhau đóng băng khoảng 2,54 tỷ USD, chiếm khoảng 45% lượng chảy ra. Và cho đến nay, ủy quyền độc hại đó vẫn chưa được thu hồi.
Hiện tại, quan điểm chính thức của Binance vẫn luôn là đang điều tra các vấn đề bảo mật tiềm ẩn, tiền của người dùng hoàn toàn an toàn.
Ethereum: 3,528 tỷ USD
Bitcoin: 1,449 tỷ USD
Tron: 628 triệu USD
Arbitrum + Optimism + Base: tổng cộng khoảng 38 triệu USD
Tether khoảng 1,567 tỷ USDT, Circle khoảng 823 triệu USDC (tổng cộng hai bên là 2,316 tỷ), cộng với Ripple khoảng 200 triệu RLUSD, World Liberty Financial khoảng 27,8 triệu USD1 + 2 triệu WLFI, tổng cộng thành 2,54 tỷ.
Từ ngày 28 tháng 10: địa chỉ khởi tạo của kẻ tấn công 0x7C86…5CA0 lần lượt nhận được 3 khoản rút khoảng 0,1 ETH từ Tornado Cash, chuyên dùng để trả Gas. Địa chỉ này trước đó không có bất kỳ liên hệ nào với Binance.
10:29 ngày 29 tháng 10: triển khai hợp đồng quét đầu tiên 0x19be…f2bf. Sau đó bị bỏ không dùng.
21:51 ngày 29 tháng 10: ghi ủy quyền EIP-7702 vào hai ví thử nghiệm. Hai ví này đều không phải của Binance, mà là ví bên ngoài do kẻ tấn công tự tìm.
22:20 và 22:24 ngày 29 tháng 10: lần diễn tập thứ 1 và thứ 2, gọi quét để rút sạch hai ví thử nghiệm này. Lần đầu có thể đã gặp chút vấn đề, bốn phút sau lại làm một lần nữa.
29 tháng 10 23:59: Triển khai hợp đồng đã sửa 0x63e8…6fAe. Cuối cùng có hiệu lực trên Binance
30 tháng 10 00:21 đến 00:30: Diễn tập lần thứ 3, đổi ví thứ ba, hai lần ủy quyền cộng một lần quét.
Sau đó im lặng 3 giờ 51 phút. Cho đến khi ra tay.
04:21:00: Gửi giao dịch loại EIP-7702, ủy quyền mã của 0x63e8…6fAe cho Binance 14, địa chỉ là 0x28C6…1d60. Trong cùng một giao dịch nhét 50 ủy quyền, chỉ 1 cái khớp nonce.
04:24:23: Lần quét chính xảy ra. Binance 14 tự khởi tạo lệnh gọi, chuyển 167.464 ETH cộng 63 loại token đến 0x5227…2f8c, trong đó có khoảng 1,615 tỷ USDT. Phí 0,0004 ETH, chưa đến 1 đô la.
04:24:47: Binance 16 bổ sung thêm 28.005,6 ETH đến cùng địa chỉ, gần như liền mạch.
04:30 đến 04:33: Bắt đầu tách USDT, 500 triệu gửi đến 0x9749…C762, 200 triệu gửi đến 0x0Ddf…697e.
04:38: 195.460 ETH chuyển một lần vào 0x8532…43D4. Đây là lần vận chuyển lớn nhất trong một giao dịch.
04:41 và 04:59: Kẻ tấn công gọi một hàm khác 0x043ff9d2 trên Binance 14; cùng phút đó, Hot Wallet 34 lần lượt chuyển ra 780 triệu và 43 triệu USDC. Kẻ tấn công đã mượn quyền của Binance 14 đối với hợp đồng này.
05:04: Lại một lần quét, quét đi 1.699,92 ETH.
05:22 đến 06:02: Chia nhỏ. RLUSD 88,5 triệu, UNI 7,02 triệu, PEPE 7,77 nghìn tỷ, wBETH 29.934, ENA 217,5 triệu, lần lượt gửi đến địa chỉ hoàn toàn mới, mỗi địa chỉ trước đó được nạp 0,5 đến 1 ETH làm Gas.
05:44: Trong quá trình này, trên Binance 14 lại quét thành công thêm một lần, quét sạch khoản tiền gửi mới vừa vào tài khoản.
Từ lúc ủy thác đến lần quét đầu tiên chỉ cách nhau 3 phút 24 giây. Nhưng hệ thống kiểm soát rủi ro của Binance không có bất kỳ hành động chặn nào.
Sau đó từ 5 giờ, Binance và các bên dự án bắt đầu đóng băng tài sản, Tether khoảng 1,567 tỷ USDT, Circle khoảng 823 triệu USDC (tổng cộng hai bên là 2,316 tỷ), cộng với Ripple khoảng 200 triệu RLUSD, World Liberty Financial khoảng 27,8 triệu USD1 + 2 triệu WLFI, gộp lại thành 2,54 tỷ.
EIP-7702 là khả năng được giới thiệu bởi nâng cấp Pectra của Ethereum: cho phép một ví thông thường (EOA) tạm thời thuê mã của một hợp đồng thông minh. Chủ ví ký một ủy quyền, từ đó mọi lệnh gọi đến địa chỉ này đều thực thi mã ngoại lai đó.
Cách sử dụng của kẻ tấn công là:
Triển khai hợp đồng 0x63e8…6fAe, bên trong chỉ có một hàm sweep(address pool, address[] depositors)——chuyển toàn bộ ETH và một chuỗi token được chỉ định đến địa chỉ được chỉ định.
Lấy được chữ ký ủy quyền của Binance 14, "cài" mã này lên ví nóng của Binance.
Sau khi cài xong 3 phút 24 giây, trực tiếp gọi hợp đồng quét trên địa chỉ ví nóng của Binance.
Vì vậy, nhìn từ bên ngoài thì có vẻ như chính ví nóng của Binance tự chuyển tiền ra. Trên chuỗi không thấy bất kỳ hành động "địa chỉ bên ngoài chuyển tài sản đi" nào, trông giống như Binance 14 đang thực hiện một giao dịch xuất tiền bình thường.
Kẻ tấn công không biết nonce thời gian thực của Binance 14 (ví đó vẫn đang liên tục gửi giao dịch). Thế là hắn nhét 50 ủy quyền vào một giao dịch, nonce xếp từ N đến N+49, đánh cược rằng một trong số đó sẽ trúng. Kết quả chỉ có một cái có hiệu lực.
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia