Diễn giải hợp đồng thông minh: Làm thế nào mà cây cầu xuyên chuỗi của Harmony lại đánh cắp 100 triệu đô la?
十四君
2022-07-11 10:11
本文约4195字,阅读全文需要约17分钟
Vào ngày 24 tháng 6 năm 2022, Horizon, một cầu nối liên chuỗi tài sản giữa Ethereum và Harmony được phát triển bởi chuỗi công khai Lớp 1 Harmony, đã bị tấn công, gây thiệt hại khoảng 100 triệu đô la Mỹ

trừu tượng

tiêu đề phụ

trừu tượng

Vào ngày 24 tháng 6 năm 2022, Horizon, một cầu nối liên chuỗi tài sản giữa Ethereum và Harmony được phát triển bởi chuỗi công khai Lớp 1 Harmony, đã bị tấn công, gây thiệt hại khoảng 100 triệu đô la Mỹ.

  • Chính xác thì điều gì đang xảy ra vậy?

  • Mặc dù vào ngày xảy ra vụ tấn công của hacker, có thể kết luận rằng "khóa riêng của công chứng viên đã bị đánh cắp", vì VIP đã nhấp vào nó, bạn cũng có thể đến và trò chuyện. Đừng lo lắng, có một vài khó khăn- mã nguồn cốt lõi, nhưng toàn bộ bài viết bằng tiếng bản ngữ và dễ hiểu!

  • Diễn giải báo cáo kiểm toán hợp đồng Horizon

Phân tích lại và tóm tắt nguyên nhân mất trộm

1. Nguyên lý kỹ thuật cầu xích chéo

Chuỗi chéo, như tên gọi của nó, là vấn đề làm thế nào để chuyển thông tin tài sản giữa các chuỗi khối khác nhau, còn được gọi là khả năng tương tác.Hiện tại, có hơn 50 giải pháp chuỗi chéo với nhiều định nghĩa khác nhau."Từ iosg-

Danh sách các giải pháp cầu nối chuỗi chéo, những người có thể thu thập thanh khoản đa chuỗi

tiêu đề phụ

1.1.Các giải pháp chuỗi chéo là gì?

Tóm lại, để đạt được giá trị tài sản không đổi trên một chuỗi khác, có hai con đường chính: neo theo "giá" và neo theo "vật lý"

Thoạt nhìn thì có vẻ phức tạp, nhưng trên thực tế, neo theo giá là một loại tiền tệ ổn định như USDT trên các chuỗi công khai khác nhau, được neo theo tỷ lệ 1:1 với đồng đô la Mỹ, vì vậy nó cũng là một loại tài sản xuyên chuỗi.

  • Ngoài tất cả các loại tiền ổn định, một giải pháp chuỗi chéo trực quan hơn là neo vật lý, nghĩa là tổng lượng thanh khoản không đổi và có nhiều giải pháp (công chứng, chuỗi bên, chuỗi chuyển tiếp, khóa băm, v.v.) , chúng tôi tập trung vào mô hình công chứng.

  • Có ba điểm khác biệt trong mô hình công chứng dựa trên “ai là công chứng viên”:

  • Được đảm bảo bởi sàn giao dịch: Ví dụ: Binance rút tiền, tất cả các loại giao dịch được thực hiện trên sàn giao dịch tập trung và tiền được rút ra

Loại bắc cầu pool thanh khoản: chẳng hạn như bridge.connext, o3swap

Loại đúc hợp đồng bị khóa: nhiều giải pháp chung cầu chính thức đa giác/arbitrum/avax/celer và sự hài hòa của nhân vật chính ngày nay

Tất cả những điều trên đều có ưu và nhược điểm riêng, cho dù họ sợ sàn giao dịch chạy trốn, thanh khoản cạn kiệt hay khóa riêng của công chứng viên bị đánh cắp, hiện tại vẫn chưa có giải pháp xuyên chuỗi nào thực hiện hoàn hảo tam giác bất khả thi.

Mô tả hình ảnh

"Tổng thanh khoản và khối lượng giao dịch, từ trang web chính thức của o3swap"

tiêu đề phụ

1.2.Nguyên tắc xuyên chuỗi của Horizon Bridge

Cầu Horizon do Harmony phát triển là một loại khóa đúc công chứng khá chuẩn.

Tại sao đúc bị khóa có thể được tin cậy?

Đó là bởi vì hợp đồng trên chuỗi khối là bất biến, nếu không có cửa sau, cho dù một khi nó được triển khai, sẽ không có cách nào ảnh hưởng đến hoạt động của nó, giống như Boring Ape chính thức chuyển tất cả các quyền về địa chỉ 0. Sau khi từ bỏ quyền sở hữu, không Theo bất kỳ cách nào, những con khỉ mới có thể được đúc thêm và tổng thanh khoản của chúng sẽ bị khóa.

  • Theo cách tương tự, mặc dù các hợp đồng khác nhau giữa các chuỗi công khai khác nhau, nhưng nếu 10 ETH bị khóa bằng một hợp đồng trên Ethereum, thì 10 wETH sẽ được phát hành với cùng một hợp đồng đáng tin cậy trên một chuỗi công cộng khác. miễn là wETH có thể được chuyển trở lại Ethereum bất cứ lúc nào và đổi lấy ETH, thì wETH có thể được coi là có giá trị tương đương với ETH.

  • Do đó, hoạt động cốt lõi của nó là

  • Ghi và phát hành: Chuỗi B phá hủy mã thông báo đóng gói + Chuỗi A mở khóa tính thanh khoản của một lượng mã thông báo cơ bản bằng nhau

Công chứng viên: Chịu trách nhiệm khám phá sự kiện Khóa chuỗi A, đến B-chain Mint để đúc mã thông báo neo và chuyển chúng đến địa chỉ mục tiêu.

Sơ đồ quy trình của cầu Horizon, từ github chính thức

Mô tả hình ảnh

Sơ đồ cầu chuỗi chân trời TVL, từ cồn cát

tiêu đề cấp đầu tiên

2. Diễn giải báo cáo kiểm toán Hợp đồng cầu chân trời

Đối với nhiều dự án Web3, nếu một sự cố không an toàn 100%, thì về cơ bản nó bằng giá trị 0. Do đó, để kiểm tra tính bảo mật của hợp đồng, nó thường kiểm tra và mô phỏng các tình huống tấn công khác nhau, đồng thời tiến hành đánh giá bảo mật thông qua danh sách kiểm tra để đảm bảo an ninh của hợp đồng.

Quá trình phát triển có thể chỉ mất vài ngày, nhưng để đủ tin cậy thì cần nhiều quy trình và tốn kém (báo giá chung bắt đầu từ 10W dựa trên thời gian)

Thông tin cốt lõi của báo cáo kiểm tra là: tên rủi ro, mô tả lỗ hổng, mức độ rủi ro, khuyến nghị bảo mật, tình trạng sửa chữa và kết quả kiểm tra, v.v.

Báo cáo kiểm toán hợp đồng của Horizon Bridge được thực hiện bởi công ty kiểm toán có uy tín PeckShield và năm lỗ hổng đã được tìm thấy

2.1. Điểm rủi ro thấp và trung bình 1 - Không đủ khả năng tương thích

Thật khó để tưởng tượng rằng 3 dòng mã có thể có lỗi?

Trên thực tế, logic khóa mã thông báo rất đơn giản, đó là người dùng đặt số tiền và địa chỉ mục tiêu, sau khi ủy quyền cho cơ quan giữ lại, hợp đồng sẽ chuyển USDT sang hợp đồng này để khóa và gửi một sự kiện bị khóa, vì vậy rằng công chứng viên dưới chuỗi có thể biết rằng tài sản đã bị khóa.

Nhưng nếu đó là mã thông báo "giảm phát" thì sao? Tôi nên làm gì nếu số tiền giảm trong safeTransferFrom? Điều này sẽ dẫn đến rủi ro là số tiền khóa thấp hơn số tiền giải phóng của B-chain[Giải thích mã nguồn] NFT bạn đã mua chính xác là gì?

Bạn có thể đọc bài viết trước:

[Giải thích mã nguồn] NFT bạn đã mua chính xác là gì?

Trong giao thức tiêu chuẩn, chức năng ảo được sử dụng như một phương thức hook để thêm logic trước và sau khi chuyển. Một số mã thông báo có thể làm tăng tổn thất giao dịch tại đây _beforeTokenTransfer, để kiểm soát lưu thông và đạt được giảm phát.

Tất nhiên, cuối cùng thì sự hài hòa phải được sửa đổi và tối ưu hóa, đồng thời phương pháp đọc số dư hai lần trước và sau khi chuyển được sử dụng để tính số tiền bị khóa thực tế.

Vẫn là đoạn mã này, thật khó để tưởng tượng rằng không chỉ có BUG trong 3 dòng mã mà có tới 2![Giải thích mã nguồn] NFT bạn đã mua chính xác là gì?

[Giải thích mã nguồn] NFT bạn đã mua chính xác là gì?

Trên thực tế, đối với Mint an toàn, giao thức tiêu chuẩn cấm đúc địa chỉ 0. Nếu người nhận địa chỉ đích được điền bằng địa chỉ 0 khi khóaToken, quá trình truyền trên chuỗi B sẽ không thành công, dẫn đến việc khóa hợp đồng này nhưng không có hiệu ứng chuỗi chéo .Hợp đồng ngân quỹ này không bảo lưu phương thức chuyển nhượng phù hợp và nó sẽ bị khóa vĩnh viễn.

tiêu đề phụ

2.3. Điểm rủi ro cao

Trong thủ tục ban đầu, việc mở khóa và giải phóng tài sản đúc tiền chỉ có thể được thực hiện bởi các công chứng viên được chỉ định.

Đây chính xác là lý do cho thủ thuật này Harmony cuối cùng đã thay đổi công chứng thành ví đa chữ ký, nhưng chỉ thay đổi thành 3 và nếu 2 trong số các khóa riêng tư bị đánh cắp, chúng có thể chạy loạn.

Mô tả hình ảnh

Báo cáo Kiểm toán của PeckShield về Cầu Horizon

Nói thế nào nhỉ, bạn nói anh ấy thay đổi, tôi luôn cảm thấy có chút chiếu lệ, ngay cả khi hacker lấy trộm tài sản, cây cầu hài hòa vẫn hoạt động, điều đó có nghĩa là khóa riêng của anh ấy thậm chí còn được lưu dưới dạng văn bản thuần túy và đã bị sao chép bởi tin tặc

Để biết hướng dẫn sử dụng trình duyệt blockchain, hãy xem:Chúng ta đang nhìn gì khi nhìn vào Etherscan?

Chúng ta đang nhìn gì khi nhìn vào Etherscan?

tiêu đề phụ

  • wallet1:0x0d043128146654C7683Fbf30ac98D7B2285DeD00

  • wallet2:0x9E91ae672E7f7330Fc6B9bAb9C259BD94Cd08715

  • wallet3:0x58f4baccb411acef70a5f6dd174af7854fc48fa9

3.1. Thông tin chính

  • MultiSigWallet:0x715cdda5e9ad30a0ced14940f9997ee611496de6

  • ví kẻ tấn công

  • Địa chỉ liên quan đến cầu chuỗi chéo

  • Địa chỉ kho ETH: 0xF9Fb1c508Ff49F78b60d3A96dea99Fa5d7F3A8A6

Địa chỉ kho tiền ERC20: 0x2dccdb493827e15a5dc8f8b72147e6c4a5620857

Địa chỉ công chứng ăn cắp: 0x812d8622c6f3c45959439e7ede3c580da06f8f25

3.2.Phân tích quá trình trộm cắp

Trộm 13100 Ether, xem chi tiết tại Link giao dịch (trích dẫn trong phụ lục)

Việc thực thi là để xác nhận một ID giao dịch nhất định (một phần của biểu quyết đa chữ ký)

Xác nhận của công chứng viên -> Số lượng công chứng viên chờ xác nhận đạt tiêu chuẩn -> Mở khóa tài sản kho quỹ và chuyển đến địa chỉ mục tiêu

Có thể thấy từ logic trong mã hợp đồng hợp đồng nhiều chữ ký, chức năng này sẽ đưa ra phán quyết không được xác nhận, vì vậy chỉ có thể gọi địa chỉ công chứng do hệ thống đặt trước đó

Phương thức execTransaction sẽ được thực thi sau đó, và sau đó phương thức isConfirmed sẽ được gọi để đưa ra phán quyết. Nếu số lượng quản trị viên xác thực giao dịch đạt đến 2, phương thức unlockEth của hợp đồng EthManager sẽ được gọi nội bộ và cuối cùng là ETH sẽ được gửi đến ví của kẻ tấn công.

Đến bây giờ, rõ ràng là không có khả năng xảy ra lỗi cụ thể nào trong một hợp đồng đơn giản và dễ hiểu như vậy, ngoài việc đánh cắp khóa riêng.

Nhân tiện, tôi đã xem số dư của kho ETH của cầu nối chuỗi chéo và vẫn còn 94 Eth, và kho ERC20 vẫn còn 300.000 đô la các loại mã thông báo khác nhau

4. Suy nghĩ tóm tắt

4.1 Điều gì sẽ xảy ra với tên trộm?

Mặc dù Harmony đã ngay lập tức đưa ra 1 triệu đô la Mỹ, đề nghị hacker trả lại tài sản và hứa không truy cứu trách nhiệm, nhưng ngay cả khi hacker quay lại và quan chức không truy cứu, các nhóm xã hội khác sẽ khởi tố. tin tặc phải làm mọi thứ có thể để che đậy tài sản bị đánh cắp.

Tính đến ngày 29 tháng 6, những kẻ tấn công đã chuyển khoảng 35.000 ETH (khoảng 39 triệu đô la) sang Tornado Cash, một máy trộn tiền phổ biến, mặc dù chuỗi khối là một sổ cái công khai và mọi giao dịch đều có thể bị hack. giao dịch cho 100 người và nó không thể xác định chính xác số tiền nào cuối cùng sẽ rơi vào tay người nào.

4.2.Làm thế nào để an toàn hơn?

Để tối ưu hóa, phương pháp lưu trữ phân tán có thể được áp dụng và nó được lưu trữ trên mạng công chứng MPC (Tính toán nhiều bên) và không quá một tỷ lệ phần trăm nhất định các nút hoạt động xấu cùng một lúc để đảm bảo an ninh

Ngay cả khi công chứng viên khan hiếm, bạn có thể tham khảo công nghệ điện toán đáng tin cậy của SGX được áp dụng bởi cây cầu tuyết lở

Avalanche Bridge: Bảo mật tài sản xuyên chuỗi với Intel SGX

Trích dẫn:

iosg-Về bản chất, nó vẫn thờ ơ với tầm quan trọng của bảo mật, kế hoạch thực hiện được viết bằng mã nguồn mở của cầu nối chuỗi đã hiện thực hóa cầu chuỗi có thể sử dụng được 2 năm trước, nhưng nó đã không được tối ưu hóa thêm trong một thời gian dài.

Trích dẫn:

Danh sách các giải pháp cầu nối chuỗi chéo, những người có thể thu thập thanh khoản đa chuỗi

GIT chính thức của cầu Horizon: https://github.com/harmony-one/ethhmy-bridge

https://etherscan.io/tx/0x27981c7289c372e601c9475e5b5466310be18ed10b59d1ac840145f6e7804c97

Sơ đồ TVL cầu xích chân trời: https://dune.com/queries/118245

https://docs.harmony.one/home/general/bridges/horizon-bridge/audit

Liên kết giao dịch ăn cắp:

https://medium.com/avalancheavax/avalanche-bridge-secure-cross-chain-asset-transfers-using-intel-sgx-b04f5a4c7ad1

十四君
作者文库