Cảnh báo rủi ro: Đề phòng huy động vốn bất hợp pháp dưới danh nghĩa 'tiền điện tử' và 'blockchain'. — Năm cơ quan bao gồm Ủy ban Giám sát Ngân hàng và Bảo hiểm
Tìm kiếm
Đăng nhập
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
Xem thị trường
Bị đánh cắp 610 triệu đô la Mỹ, hiện trường vụ hacker tấn công Poly Network và O3 Swap
蓝贝壳学院
特邀专栏作者
2021-08-13 08:33
Bài viết này có khoảng 3155 từ, đọc toàn bộ bài viết mất khoảng 5 phút
Bị đánh cắp 610 triệu đô la Mỹ, hiện trường vụ hacker tấn công Poly Network và O3 Swap

O3, dự án ngôi sao nổi tiếng trước đây, chắc hẳn mọi người đều nhớ, nhưng nó đã bị sập cách đây một ngày và nhóm O3Swap đã bị đánh cắp. Do tiền của O3 được đặt trong poly, poly đã bị hack và O3 đã bị phá hủy vào tối ngày 8 tháng 8 Vào ngày 10 tháng 10, Giao thức chuỗi chéo Poly Network đã bị tấn công và gần 600 triệu đô la Mỹ đã bị đánh cắp từ ba chuỗi Ethereum, BinanceChain và Polygon. Vì hai nền tảng bị tấn công được hỗ trợ bởi cùng một nhóm kỹ thuật với sự chứng thực của NEO, nên lý do xảy ra vụ trộm là bên dự án đã dành quyền siêu cấp cho mình trong hợp đồng và tin tặc sử dụng cửa hậu siêu quyền lực này để chuyển tất cả tiền trong hồ bơi để đi bộ.

Học viện LBank Blue Shell ở đây để phổ biến khoa học. PolyNetwork đã từng được coi là giao thức có khả năng tương tác xuyên chuỗi tốt nhất trên thị trường hiện tại và nó thực sự đạt được chuỗi chéo không đồng nhất. Hiện tại, các giao thức chuỗi chéo không đồng nhất được hỗ trợ bao gồm: Bitcoin, Ethereum, NEO, Ontology, Elornd, Ziliqa, Binance Smart Chain, Switcheo, Huobi Ecological Chain, v.v.

Đánh giá các sự kiện:

Vụ tấn công đầu tiên xảy ra vào lúc 17:55 ngày 10 tháng 8. Hacker đã liên tiếp chuyển 96,38 triệu USDC, 1032 WBTC và các tài sản khác từ hợp đồng thông minh Poly Network bằng Ethereum, với tổng giá trị hơn 260 triệu đô la Mỹ, 85,08 triệu USDC là chuyển từ hợp đồng thông minh của dự án, từ 18:08, hacker đã chuyển 87,6 triệu USDC, 26629 ETH và các tài sản khác từ hợp đồng thông minh của dự án tại BSC.

Đây là vụ hack lớn nhất trong lịch sử tiền mã hóa, vượt qua vụ Mt.Gox nổi tiếng (744.408 BTC, với tổng giá trị khoảng 400 triệu đô la Mỹ vào thời điểm đó) và vụ Coincheck năm 2018 (523 triệu XEM, tại thời điểm đó). tổng giá trị thời gian khoảng 534 triệu đô la Mỹ). Về lý do cụ thể của sự cố này, nhóm kỹ thuật của tổ chức bảo mật ngành đã tiến hành giám sát thời gian thực để theo dõi nguyên tắc và chi tiết kỹ thuật của lỗ hổng.

Sau khi phân tích, kẻ tấn công đã lợi dụng lỗ hổng logic trong hợp đồng EthCrossChainManager, được gọi là hàm putCurEpochConPubKeyBytes trong hợp đồng EthCrossChainData thông qua hợp đồng để thay đổi Keeper thành địa chỉ của chính nó, sau đó sử dụng địa chỉ này để ký giao dịch rút token, từ đó chuyển Một số lượng lớn bộ mã thông báo được rút.

Hacker đã thành công như thế nào?

Địa chỉ kẻ tấn công:

BSC:

0x0D6e286A7cfD25E0c01fEe9756765D8033B32C71

ETH:

0xC8a65Fadf0e0dDAf421F28FEAb69Bf6E2E589963

Polygon:

Hợp đồng bị tấn công:

BSC:

A:

0x7ceA671DABFBa880aF6723bDdd6B9f4caA15C87B(EthCrossChainManager)

B:

0x2f7ac9436ba4B548f9582af91CA1Ef02cd2F1f03(LockProxy)

ETH:

C:

0x838bf9E95CB12Dd76a54C9f9D2E3082EAF928270(EthCrossChainManager)

D:

0x250e76987d838a75310c34bf422ea9f1AC4Cc906(LockProxy)

Polygon:

E:

0xABD7f7B89c5fD5D0AEf06165f8173b1b83d7D5c9(EthCrossChainManager)

F:

Giao dịch tấn công:

BSC:

0x3eba3f1fb50c4cbe76e7cc4dcc14ac7544762a0e785cf22034f175f67c8d3be9

0x50105b6d07b4d738cd11b4b8ae16943bed09c7ce724dc8b171c74155dd496c25

0xd65025a2dd953f529815bd3c669ada635c6001b3cc50e042f9477c7db077b4c9

0xea37b320843f75a8a849fdf13cd357cb64761a848d48a516c3cac5bbd6caaad5

ETH:

0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581

Polygon:

0x1d260d040f67eb2f3e474418bf85cc50b70101ca2473109fa1bf1e54525a3e01

0xfbe66beaadf82cc51a8739f387415da1f638d0654a28a1532c6333feb2857790

Trên BSC, trước tiên kẻ tấn công gọi hàm verifyHeaderAndExecuteTx (0xd450e04c) trong hợp đồng EthCrossChainManager bằng cách chuyển dữ liệu được xây dựng cẩn thận. Do hàm verifyHeaderAndExecuteTx gọi hàm bên trong _executeCrossChainTx và lệnh gọi được sử dụng trong hàm bên trong, nên kẻ tấn công kiểm soát tham số _method của lệnh gọi thông qua dữ liệu được xây dựng cẩn thận (lấy dữ liệu được ký bởi Keeper ban đầu thông qua các lỗ hổng khác), đã gọi thành công putCurEpochConPubKeyBytes trong hợp đồng EthCrossChainData dưới dạng hợp đồng EthCrossChainManager để thay đổi Keeper thành địa chỉ của chính nó (0xa87fb85a93ca072cd4e5f0d4f178bc831df8a00b). Bước này là để có được giao dịch được ký bởi Keeper hợp lệ trong tương lai, sau đó rút các mã thông báo trong hợp đồng.

_method được tạo bởi kẻ tấn công cuộc gọi ở trên không thực sự là putCurEpochConPubKeyBytes, bởi vì chỉ có tên hàm trong lệnh gọi là người dùng có thể kiểm soát và các tham số được cố định về số lượng và loại. Kẻ tấn công đã nhận ra lệnh gọi hàm putCurEpochConPubKeyBytes trong hợp đồng EthCrossChainData bằng cách xây dựng hàm f1121318093 có cùng chữ ký hàm như putCurEpochConPubKeyBytes.

Sau khi sửa đổi Keeper, kẻ tấn công có thể ký các giao dịch tùy ý. Kẻ tấn công rút tất cả các mã thông báo ETH, BTCB, BUSD và USDC trong hợp đồng B thông qua nhiều giao dịch được ký bởi Keeper hợp lệ (chữ ký đã bị kẻ tấn công sửa đổi thành địa chỉ của chính anh ta).

Do ETH và Polygon có cùng mã và Keeper giống như BSC nên sau khi hoàn thành cuộc tấn công vào BSC, kẻ tấn công sẽ phát lại dữ liệu đã tạo trước đó trên ETH và Polygon, đồng thời sửa đổi Keeper trên ETH và Polygon thành địa chỉ của chính nó (0xa87fb85a93ca072cd4e5f0d4f178bc831df8a00b).

Sau đó, sử dụng cùng một phương thức tấn công, tất cả ETH, USDC, WBTC, UNI, DAI, SHIB, WETH, FEI, USDT và renBTC trong hợp đồng D và tất cả USDC trong hợp đồng F đã bị lấy đi.

Kẻ tấn công đã trả lại 1,01 triệu USDC cho Polygon. Ps: Bây giờ có rất nhiều người đang gửi coin đến địa chỉ của hacker để lại tin nhắn hỏi coin, vì nghe nói có người xin sẽ được 13,5 eth

Chúng ta cần chú ý những điều gì?

Lý do chính của cuộc tấn công này là có vấn đề với logic quản lý cơ quan hợp đồng, bất kỳ người dùng nào cũng có thể gọi hàm verifyHeaderAndExecuteTx để thực hiện giao dịch và khi gọi nó bên trong, tên hàm có thể được kiểm soát bởi người dùng. gọi bằng cách cẩn thận xây dựng chức năng một phần ngoại lệ dữ liệu. Đồng thời, hợp đồng EthCrossChainManager có quyền sửa đổi Keeper. Thông thường, nó được sửa đổi thông qua chức năng changeBookKeeper. Tuy nhiên, trong cuộc tấn công này, kẻ tấn công đã sửa đổi thành công địa chỉ Keeper thông qua lệnh gọi trong chức năng verifyHeaderAndExecuteTx thông qua dữ liệu được xây dựng cẩn thận và địa chỉ Keeper có thể Giao dịch được ký kết và do đó, sự kiện tấn công có tổn thất lớn nhất kể từ khi Defi ra đời được tạo ra.

Học viện LBank Blue Shell xin nhắc nhở mọi người rằng khi sử dụng lệnh gọi, các nhà phát triển cần đặc biệt chú ý đến thực tế là người dùng có thể kiểm soát các thông số, một số hợp đồng và chức năng đặc biệt cần kiểm soát chặt chẽ quyền hạn để tránh những tổn thất không thể khắc phục do các lệnh gọi bất thường gây ra.

O3Swap
PolyNetwork
Sự an toàn
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Tài khoản chính thức
https://twitter.com/OdailyChina