Ví nóng của Binance bị hack 6,28 tỷ USD; theo dõi on-chain tiết lộ cách kẻ tấn công sử dụng ủy quyền EIP-7702 để chiếm đoạt ví và chuyển tiền trước khi Tether và các tổ chức phát hành khác kịp đóng băng, cung cấp bản tái dựng đầy đủ về sự cố bảo mật lớn nhất này.
Tác giả: Dickson (@DicksonWuML)
Biên soạn: Shenchao TechFlow
Giới thiệu của Shenchao: Vụ trộm từ ví nóng của Binance là sự kiện lớn nhất trên thị trường tiền mã hóa ngày hôm nay. Kỹ sư CertiK và thành viên SEAL Dickson đã lần theo các bản ghi trên chuỗi từng giao dịch một, tái dựng toàn bộ quá trình kẻ tấn công chuẩn bị vốn bằng cách rút từ Tornado Cash, sử dụng ủy quyền EIP-7702 để chiếm quyền kiểm soát các ví nóng Ethereum của Binance, và chạy đua với Tether, Circle cùng các tổ chức phát hành khác để đóng băng tiền. Số tiền và thời gian trong bài viết này là số liệu thống kê trên chuỗi tính đến thời điểm tác giả đăng bài (khoảng 8 giờ sáng giờ Bắc Kinh ngày 30 tháng 10), thời gian theo UTC (+8 giờ bằng giờ Bắc Kinh), và chưa được Binance xác nhận chính thức.
Các ví nóng của Binance đã mất khoảng 6,28 tỷ USD trên 8 chuỗi trong ngày hôm nay. Trong đó, 6,07 tỷ USD được chuyển ra trong 55 phút đầu tiên, sau đó kẻ tấn công liên tục quét một trong các ví Ethereum trong hơn hai giờ.
Kể từ đó, Tether, Circle, Ripple, Paxos, World Liberty và Binance đã đóng băng khoảng 2,80 tỷ USD. Khoảng 3,27 tỷ USD vẫn có thể được di chuyển tự do, chủ yếu là BTC và ETH.
Tôi đã lần theo toàn bộ sự việc trên chuỗi, bao gồm cách kẻ tấn công di chuyển tiền trước khi bị đóng băng 🧵
Phân tích 6,28 tỷ USD (theo giá lúc 20:24 UTC):
• Ethereum 3,74 tỷ USD
• Bitcoin 18.270,2 BTC, 1,47 tỷ USD
• Tron 612,7 triệu USDT + 46,4 triệu TRX, 627,5 triệu USD
• XRP 233,5 triệu XRP, 296,5 triệu USD
• Solana 970.522 SOL, 96,1 triệu USD
• Arbitrum 8.426 ETH + 74,6 triệu ARB, 31,8 triệu USD
• Avalanche 1,81 triệu AVAX + 8,41 triệu USDt, 24,3 triệu USD
• Optimism 44,2 triệu OP, 4,8 triệu USD
3,74 tỷ USD trên Ethereum chảy ra theo năm đợt:
• 20:24:23, một lệnh sweep() duy nhất trên Binance 14: 167.464,25 ETH, 1,615 tỷ USDT và 61 token khác, tổng cộng 2,53 tỷ USD
• 20:41 và 20:59, 780 triệu + 43 triệu USDC được chuyển ra từ một ví thông minh của Binance đã tin cậy Binance 14, tổng cộng 822,6 triệu USD
• 20:24:47, Binance 16 ký 9 giao dịch gửi trực tiếp đến kẻ tấn công: 28.005,6 ETH, 55,7 triệu USDT, 25,9 triệu RLUSD, 84,5 WBTC, 820.000 UNI, 1.199 XAUt, 18,8 triệu ENA, 304.600 LINK, 583,6 tỷ PEPE, tổng cộng 174,2 triệu USD
• 21:04 và 21:44, hai lần quét bổ sung Binance 14: 2.070 ETH và 204,3 triệu USDT, tổng cộng 209,6 triệu USD
• 22:39, lần quét cuối cùng đến một ví mới: 128,5 ETH và 122 token vốn hóa nhỏ, khoảng 500.000 USD
Theo tài sản: 1,87 tỷ USD USDT, 823 triệu USD USDC, 457 triệu USD ETH (197.668 ETH), 88,5 triệu USD RLUSD, 76,8 triệu USD wBETH, 50,5 triệu USD XAUt, 49,6 triệu USD UNI, 44,7 triệu USD ENA, 40,1 triệu USD PEPE, 29,6 triệu USD LINK, 27,8 triệu USD USD1, cộng với khoảng 50 token nhỏ hơn.Công tác chuẩn bị bắt đầu từ ngày hôm trước. Vào ngày 28 tháng 10 lúc 07:39 UTC, ví chính của kẻ tấn công 0x7c8601d4645b93cea45f71e118a729332e6b5ca0 lần đầu rút 0,1 ETH từ Tornado Cash, sau đó rút thêm hai lần nữa. Một ví thứ hai sau đó rút 1 ETH từ Tornado và chuyển đến ví chính vào ngày 29 tháng 10 lúc 18:20.
Vào ngày 29 tháng 10 lúc 02:28, chúng triển khai một hợp đồng sweeper. Từ 13:51 đến 16:47, chúng diễn tập trên ví của chính mình: sử dụng ủy quyền EIP-7702, quét thử USDT và USDC, rồi rút. Lúc 15:59, chúng triển khai phiên bản v2 với một hàm gọi tổng quát, và chính hàm này sau đó đã chuyển 823 triệu USD USDC.
Lúc 20:04:52 UTC, bước đầu tiên thất bại. Ví XRP của Binance gửi 42.750.000,1 RLUSD đến kẻ tấn công, nhưng tài khoản XRP của kẻ tấn công chưa tồn tại, nên giao dịch đã bị hoàn trả.
Tám giây sau, 185.017.485,5 XRP được chuyển thành công, qua đó tạo ra tài khoản. Đến 20:09, bốn ví XRP khác của Binance cũng đã bị rút sạch.
Một phản ứng dây chuyền tiếp theo:
20:10 Solana, 965.455,1 SOL được di chuyển trong một giao dịch duy nhất
20:18 Optimism, 44,2 triệu OP
20:20 Bitcoin, 18.270,2 BTC được di chuyển trong 11 giao dịch và chia thành các khối 1.000 BTC trong cùng một block
20:20 đến 20:22 Tron, 612,7 triệu USD USDT + 46,4 triệu TRX
20:30 đến 20:35 Arbitrum và Avalanche
Ethereum đã tiết lộ phương thức tấn công. Lúc 20:20:59, kẻ tấn công gửi một giao dịch mang 50 ủy quyền EIP-7702, tất cả đều được ký bởi khóa riêng của Binance 14, tương ứng với các nonce từ 18.914.775 đến 18.914.824.
Bản thân Binance 14 vừa sử dụng 18.914.775 lúc 20:17:47, cho thấy các ủy quyền này chỉ được ký vài phút trước khi sử dụng.
Ủy quyền với nonce 18.914.809 khớp. Giao dịch của chính Binance 14 trong cùng block sử dụng 18.914.808, và từ thời điểm đó trở đi, Binance 14 đang chạy mã của kẻ tấn công.
Lúc 20:24:23, một lệnh sweep() duy nhất đã chuyển 167.464 ETH và 1,615 tỷ USD USDT ra khỏi nó. Hai mươi bốn giây sau, Binance 16 ký 9 giao dịch gửi trực tiếp đến kẻ tấn công. Lúc 20:41 và 20:59, kẻ tấn công sử dụng Binance 14 để chuyển 823 triệu USD USDC ra khỏi một ví thông minh của Binance tin tưởng nó.
Tiếp theo là cuộc đua với các lệnh phong tỏa. Kẻ tấn công nhanh chóng chia nhỏ USDT:
• Lúc 20:30, 500 triệu USD USDT được chuyển đến 0x9749…c762. Đến 20:59, 325 triệu USD trong số đó đã được hoán đổi thành ETH thông qua các nhà tạo lập thị trường RFQ, và 175 triệu USD còn lại được chuyển tiếp
• Lúc 20:33, 200 triệu USD USDT được chuyển đến 0x0ddf…697e. Khoảng 10 triệu USD được bán trên các DEX, và 190 triệu USD được chuyển đến 0x8d53…639a, nơi đã gửi 60 triệu USD vào Aave và vay ETH dựa trên đó
Đợt đưa vào danh sách đen đầu tiên của Tether có hiệu lực lúc 21:01:35: 0x5227, nơi vẫn còn giữ 971 triệu USD USDT; và 0x9749, nơi đã bị rút sạch. Circle đóng băng 823 triệu USD USDC lúc 21:04:59.
Một số quỹ đã thoát được trong những giây cuối cùng:• Lúc 21:01:59, 0x8d53 đã chuyển 130 triệu USDT đến 0x77ed…c3eb. Bốn mươi tám giây sau, lúc 21:02:47, Tether đã đóng băng 0x8d53• 21:04 đến 21:06, 0x77ed đã bán khoảng 50 triệu USDT trên một DEX và chuyển 80 triệu đến 0x7aa4…bfd1
• 21:08 đến 21:11, 0x7aa4 đã bán thêm khoảng 50 triệu và chuyển 30 triệu cuối cùng ra ngoài. Vào thời điểm Tether đóng băng 0x7aa4 lúc 21:12:35, ví này đã bị rút sạch
• 21:16:11, 0xccbe…a263 đã chuyển ra 30 triệu. 36 giây sau Tether đóng băng 0xccbe, và lúc 21:18:59 đã chặn giữ 30 triệu tại 0xb171…c8c3
• 175 triệu được chuyển ra bởi 0x9749 vẫn nằm tại 0xaa24…54a0 cho đến khi Tether đóng băng nó lúc 21:14:59
Tổng cộng, trong số 1,875 tỷ USDT trên Ethereum, khoảng 435 triệu đã được bán trước khi danh sách đen bắt kịp. 1,38 tỷ đã bị đóng băng, và 60 triệu bị mắc kẹt làm tài sản thế chấp trên Aave.
Hành động của các tổ chức phát hành khác, theo thứ tự thời gian:
• 20:57:47 World Liberty đưa 48,5 triệu WLFI vào danh sách đen tại 0x5227
• 21:07:55 Tether đóng băng 8,41 triệu USDt trên Avalanche. Kẻ tấn công đã cố gắng chuyển số tiền này lúc 21:40:47, và giao dịch đã bị hoàn ngược
• 21:09 đến 21:21 Tether đóng băng 378,7 triệu USDT trong ba ví trên Tron. Trước đó, 234 triệu đã được hoán đổi thành TRX qua SunSwap
• 21:11:23 Tether đóng băng 12.574 XAUt (khoảng 50 triệu USD)
• 22:00:59 Ripple đóng băng RLUSD. Kẻ tấn công đã chuyển nó đến 0xe702…958d lúc 21:33 và bán 48 triệu thành ETH, với lệnh bán cuối cùng và lệnh đóng băng rơi vào cùng một block. 40,5 triệu đã bị chặn giữ
• 22:10:35 World Liberty đóng băng 27,8 triệu USD1
• 22:30:47 Paxos đóng băng 1.907 PAXG
• 22:48:35 Binance đưa 29.934 wBETH (khoảng 75 triệu USD) vào danh sách đen; kẻ tấn công đã chuyển nó đến 0x7f9d…15e3 lúc 21:52
3,45 triệu FDUSD của First Digital vẫn có thể chuyển nhượng.
Binance 14 vẫn được ủy quyền cho hợp đồng của kẻ tấn công, biến thành một cuộc giằng co:
• Lúc 21:04 và 21:44, kẻ tấn công quét thêm: đầu tiên 1.700 ETH, sau đó 370 ETH và 200,4 triệu USDT. Số USDT này rơi vào 0x5227, ví đã bị Tether đóng băng
• Lúc 22:06:23, Tether đưa chính Binance 14 vào danh sách đen. Các giao dịch USDT của chính Binance từ địa chỉ đó đã thất bại lúc 22:15 và 23:01
• Lúc 22:39, kẻ tấn công quét thêm, lần này đến một ví mới: 128,5 ETH và 122 token vốn hóa nhỏ
• Từ 22:55 đến 23:07, chính Binance đã rút sạch Binance 14: 46 lần chuyển token đến Binance 8, khoảng một lần mỗi 12 giây
• Từ 23:36 đến 23:38, kẻ tấn công gọi sweep() thêm bốn lần, và cả bốn lần đều không thu được gì
Ngoài Ethereum:
• Arbitrum, 21:35 đến 21:38: toàn bộ 8.426 ETH và 74,6 triệu ARB đã được chuyển đến một ví 7702 mới 0x3e2b…32d5, ví này đã ủy quyền ARB để giao dịch lúc 21:41. Tính đến 23:50 số tiền vẫn ở đó
• Avalanche, 21:45:34: 1.813.999 AVAX đã được chuyển đến 0x8035…c397. Sau đó 200.005 AVAX được chuyển ra từ 0xc39e…9824, và lúc 23:27:35 cùng địa chỉ đó nhận 1.563.812,78 USDC trên Ethereum qua cầu xuyên chuỗi CCTP của Circle. Bốn phút sau, lúc 23:31:59, Circle đưa nó vào danh sách đen• Quỹ trên Bitcoin, XRP, Solana và Optimism vẫn chưa được di chuyển. BTC được phân tán trên 19 ví, trong đó 17 ví mỗi ví giữ đúng 1.000 BTC
Trạng thái tính đến khoảng 23:50 UTC:
Đã đóng băng, khoảng 2,80 tỷ USD
• 1,38 tỷ USDT trên Ethereum, 378,7 triệu trên Tron, 8,41 triệu trên Avalanche (Tether)
• 824,6 triệu USDC (Circle)
• 40,5 triệu RLUSD (Ripple), 27,8 triệu USD1 (World Liberty), 12.574 XAUt (Tether), 29.934 wBETH (Binance), 1.907 PAXG (Paxos), 48,5 triệu WLFI
Chưa đóng băng, khoảng 3,27 tỷ USD
• 18.270 BTC, 1,42 tỷ USD
• 458.770 ETH phân tán trên 9 ví, 1,03 tỷ USD
• 233,5 triệu XRP, 289 triệu USD
• 684,6 triệu TRX, 243 triệu USD
• Khoảng 136 triệu USD các token khác trên Ethereum
• 970.500 SOL, 93 triệu USD, cộng với ARB, AVAX và OP, khoảng 48 triệu USD
Thêm 60 triệu USDT bị mắc kẹt làm tài sản thế chấp trên Aave.
Lưu ý: Các giao dịch trên BTC, XRP và Tron được liên kết qua thời điểm và dấu vết giao dịch: cùng khung thời gian, địa chỉ nhận hoàn toàn mới, phí và định dạng giao dịch khác với các lệnh rút tiền của chính Binance. Số tiền bị đánh cắp được tính theo giá lúc 20:24 UTC; lượng nắm giữ hiện tại được tính theo giá khoảng 23:50 UTC.
Bằng chứng on-chain cho từng giao dịch và lệnh đóng băng được đính kèm trong bài đăng bên dưới. Nếu bạn thấy tôi bỏ sót điều gì, xin hãy cho tôi biết!