

"Hacker đã lấy chứng chỉ của chủ sở hữu để tìm tài sản để lấy chìa khóa. Bằng chứng là giả, nhưng anh ta đã lấy được chìa khóa thật từ tài sản."
"Hacker đã lấy chứng chỉ của chủ sở hữu để tìm tài sản để lấy chìa khóa. Bằng chứng là giả, nhưng anh ta đã lấy được chìa khóa thật từ tài sản."
tiêu đề phụ
Vào ngày 10 tháng 8 năm 2021, PolyNetwork đã hứng chịu một cuộc tấn công xuyên chuỗi và 600 triệu đô la Mỹ tài sản mã hóa đã bị chuyển (sau đó những kẻ tấn công lần lượt trả lại tài sản bị đánh cắp). Kẻ tấn công đã thực hiện các giao dịch tấn công trên nhiều chuỗi công khai và hoàn thành cuộc tấn công thông qua các hợp đồng quản lý chuỗi chéo và các thành phần lặp lại.
Sử dụng ví dụ về tài sản ở trên để giải thích, tin tặc đã sử dụng chứng chỉ chủ nhà giả (giao dịch không hợp lệ trên chuỗi nguồn) để lấy khóa thực (chứng chỉ Merkle đã ký trên Chuỗi liên minh) từ tài sản (bộ lặp).
tiêu đề phụ
phân tích tấn công
1. Tin tặc đã khởi tạo một giao dịch tấn công lẽ ra không hợp lệ trên chuỗi nguồn.
2. Giao dịch tấn công được ghi vào chuỗi nguồn mà không được kiểm tra đầy đủ, sau đó được bộ lặp đưa vào cây Merkle của Chuỗi liên minh và ký tên, sau đó được phát hành vào khối Chuỗi liên minh.
4. Sau khi có được sự cho phép của người quản lý, tin tặc có thể tùy ý mở khóa tài sản trên nhiều chuỗi công khai.
Điều đáng chú ý ở đây là các bộ lặp của Poly Network trên một số chuỗi đã không vượt qua giao dịch tấn công, vì vậy mặc dù các hợp đồng thông minh tương tự nhau nhưng một số tài sản trên chuỗi mục tiêu không bị ảnh hưởng.
tiêu đề phụ
https://explorer.ont.io/tx/F771BA610625D5A37B67D30BF2F8829703540C86AD76542802567CAAFFFF280C#
phân tích chi tiết
1. Tin tặc bắt đầu giao dịch tấn công vào chuỗi nguồn vào lúc 17:32:32 ngày 10 tháng 8 năm 2021 theo giờ Bắc Kinh."66313231333138303933"Chúng tôi đã giải mã giao dịch và nhận được bản đồ tham số sau.
https://explorer.poly.network/tx/1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80
2. Giao dịch tấn công này gọi một phương thức
và chữ ký tương ứng của nó bằng 0x41973cd9 (giống như chữ ký của hàm putCurEpochConPubKeyBytes được gọi sau này). Giao dịch này phải là một giao dịch không hợp lệ, nhưng nó đã được ghi vào chuỗi nguồn và được bộ lặp đưa vào cây Merkle của Chuỗi liên minh, được ký và sau đó xuất bản lên khối Chuỗi liên minh. Cây Merkle được sử dụng để chứng minh liệu giao dịch có thực sự tồn tại hay không. Các giao dịch chuỗi chéo kết quả như sau:
https://etherscan.io/tx/0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581
4. Chức năng này phân tích bằng chứng Merkle và thấy rằng bằng chứng hợp lệ và giao dịch tấn công tồn tại trong cây Merkle đã ký. Sau đó, gọi hàm EthCrossChainManager._executeCrossChainTx() để thực hiện giao dịch, nghĩa là gọi toContract để trỏ đến phương thức (0x6631313231333138303933) trong hợp đồng (0xcf2afe102057ba5c16f899271045a0a37fcb10f2) và chuyển tham số args ( 010000000000000014a87fb85a93ca072cd4e5f0d4f178bc831df8a00b). Và phương thức này trỏ đến putCurEpochConPubKeyBytes(byte), vì chữ ký hàm của nó giống với chữ ký phương thức được đề cập ở bước 2 (cả hai đều là 0x41973cd9, đây là xung đột hàm băm), vì vậy nó được thực thi thành công và khóa chung của người giữ được đổi thành khóa công khai của hacker. Các giao dịch trên Ethereum như sau:
5. Sau khi tin tặc thay đổi khóa công khai, chúng có thể mở khóa tài sản theo ý muốn.
tiêu đề phụ
Tóm tắt sự kiện
Cuộc tấn công này bao gồm một loạt các giao dịch và nguyên nhân gốc rễ của cuộc tấn công được phân tích như sau:"makeFromOntProof"1. Giao dịch tấn công được ghi vào chuỗi nguồn mà không cần kiểm tra đầy đủ.
2. Bộ lặp sẽ nhận được bất kỳ
Giao dịch sự kiện.
3. Bộ lặp xuất bản giao dịch ở bước 1 lên Chuỗi liên minh.
“The management contract fetches the block headers from chain A, verifies whether or not the cross chain parameters and the proof are valid, and then transmits the necessary information to chain B in the form of an event;”
"4. Ở bước 2, giao dịch tấn công được tích hợp vào cây Merkle của Chuỗi liên minh, tạo ra bằng chứng Merkle hợp lệ."
5. Hợp đồng ECCM trên chuỗi gốc đã thông qua chứng chỉ Merkle được tạo ở bước 2, chứng chỉ này xác minh rằng giao dịch "thực sự tồn tại" trên chuỗi nguồn và dữ liệu gốc không bị hủy hoặc sửa đổi. Tuy nhiên, điều quan trọng cần nhấn mạnh là các giao dịch phải được xác minh đầy đủ trước khi xây dựng bằng chứng Merkle sẽ được gửi đến chuỗi mục tiêu. Như thể hiện trong tài liệu thiết kế.
Hợp đồng quản lý lấy tiêu đề khối từ chuỗi A, xác minh xem các tham số và bằng chứng chuỗi chéo có hợp lệ hay không, sau đó truyền thông tin cần thiết đến chuỗi B dưới dạng sự kiện;
