Gần đây, giao thức tương tác đa chuỗi Poly Network đã gặp phải một cuộc tấn công của hacker, gây ra sự chú ý rộng rãi. Theo phân tích của đội ngũ an ninh, cuộc tấn công này không phải do việc rò rỉ khóa riêng của keeper gây ra, mà là do kẻ tấn công đã sử dụng dữ liệu được cấu trúc khéo léo để khai thác lỗ hổng hợp đồng và sửa đổi địa chỉ keeper của hợp đồng EthCrossChainData.
Tấn công lõi
Chìa khóa của cuộc tấn công nằm ở hàm verifyHeaderAndExecuteTx trong hợp đồng EthCrossChainManager. Hàm này có thể thực hiện giao dịch xuyên chuỗi cụ thể thông qua hàm _executeCrossChainTx. Vì chủ sở hữu của hợp đồng EthCrossChainData là hợp đồng EthCrossChainManager, nên hợp đồng sau có quyền gọi hàm putCurEpochConPubKeyBytes của hợp đồng EthCrossChainData để thay đổi keeper.
Kẻ tấn công lợi dụng cơ chế này, thông qua hàm verifyHeaderAndExecuteTx truyền vào dữ liệu được thiết kế tinh vi, khiến hàm _executeCrossChainTx thực hiện cuộc gọi hàm putCurEpochConPubKeyBytes của hợp đồng EthCrossChainData, từ đó thay đổi vai trò keeper thành địa chỉ mà kẻ tấn công chỉ định.
Quá trình tấn công
Kẻ tấn công đầu tiên đã thay đổi keeper thông qua việc gọi hàm putCurEpochConPubKeyBytes từ hàm verifyHeaderAndExecuteTx của hợp đồng EthCrossChainManager.
Sau khi hoàn thành việc thay thế địa chỉ vai trò keeper, kẻ tấn công có thể tự do tạo giao dịch và rút bất kỳ số tiền nào từ hợp đồng.
Sau khi cuộc tấn công hoàn tất, do keeper bị sửa đổi, dẫn đến việc các giao dịch bình thường của người dùng khác bị từ chối thực hiện.
Mô hình tấn công này không chỉ được thực hiện trên chuỗi BSC, mà các hoạt động tương tự cũng đã xảy ra trên mạng Ethereum.
Kết luận
Nguyên nhân cơ bản của cuộc tấn công này là do keeper của hợp đồng EthCrossChainData có thể bị hợp đồng EthCrossChainManager sửa đổi, trong khi hàm verifyHeaderAndExecuteTx của hợp đồng EthCrossChainManager có thể thực thi dữ liệu do người dùng truyền vào. Kẻ tấn công đã lợi dụng khiếm khuyết thiết kế này để cấu trúc dữ liệu cụ thể và sửa đổi địa chỉ keeper của hợp đồng EthCrossChainData, thay vì việc rò rỉ khóa riêng của keeper như đã được đồn đại trước đó.
Sự kiện này lại một lần nữa làm nổi bật tầm quan trọng của thiết kế an toàn cho giao thức liên chuỗi, cũng như yêu cầu nghiêm ngặt về quản lý quyền hợp đồng. Nó cũng nhắc nhở chúng ta rằng, trong hệ sinh thái blockchain, ngay cả những chức năng có vẻ vô hại, nếu bị lợi dụng với mục đích xấu, cũng có thể dẫn đến những lỗ hổng bảo mật nghiêm trọng.
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
Poly Network bị hacker tấn công: Lỗi hợp đồng dẫn đến keeper bị thay đổi
Phân tích sự kiện Poly Network bị Hacker tấn công
Gần đây, giao thức tương tác đa chuỗi Poly Network đã gặp phải một cuộc tấn công của hacker, gây ra sự chú ý rộng rãi. Theo phân tích của đội ngũ an ninh, cuộc tấn công này không phải do việc rò rỉ khóa riêng của keeper gây ra, mà là do kẻ tấn công đã sử dụng dữ liệu được cấu trúc khéo léo để khai thác lỗ hổng hợp đồng và sửa đổi địa chỉ keeper của hợp đồng EthCrossChainData.
Tấn công lõi
Chìa khóa của cuộc tấn công nằm ở hàm verifyHeaderAndExecuteTx trong hợp đồng EthCrossChainManager. Hàm này có thể thực hiện giao dịch xuyên chuỗi cụ thể thông qua hàm _executeCrossChainTx. Vì chủ sở hữu của hợp đồng EthCrossChainData là hợp đồng EthCrossChainManager, nên hợp đồng sau có quyền gọi hàm putCurEpochConPubKeyBytes của hợp đồng EthCrossChainData để thay đổi keeper.
Kẻ tấn công lợi dụng cơ chế này, thông qua hàm verifyHeaderAndExecuteTx truyền vào dữ liệu được thiết kế tinh vi, khiến hàm _executeCrossChainTx thực hiện cuộc gọi hàm putCurEpochConPubKeyBytes của hợp đồng EthCrossChainData, từ đó thay đổi vai trò keeper thành địa chỉ mà kẻ tấn công chỉ định.
Quá trình tấn công
Kẻ tấn công đầu tiên đã thay đổi keeper thông qua việc gọi hàm putCurEpochConPubKeyBytes từ hàm verifyHeaderAndExecuteTx của hợp đồng EthCrossChainManager.
Sau khi hoàn thành việc thay thế địa chỉ vai trò keeper, kẻ tấn công có thể tự do tạo giao dịch và rút bất kỳ số tiền nào từ hợp đồng.
Sau khi cuộc tấn công hoàn tất, do keeper bị sửa đổi, dẫn đến việc các giao dịch bình thường của người dùng khác bị từ chối thực hiện.
Mô hình tấn công này không chỉ được thực hiện trên chuỗi BSC, mà các hoạt động tương tự cũng đã xảy ra trên mạng Ethereum.
Kết luận
Nguyên nhân cơ bản của cuộc tấn công này là do keeper của hợp đồng EthCrossChainData có thể bị hợp đồng EthCrossChainManager sửa đổi, trong khi hàm verifyHeaderAndExecuteTx của hợp đồng EthCrossChainManager có thể thực thi dữ liệu do người dùng truyền vào. Kẻ tấn công đã lợi dụng khiếm khuyết thiết kế này để cấu trúc dữ liệu cụ thể và sửa đổi địa chỉ keeper của hợp đồng EthCrossChainData, thay vì việc rò rỉ khóa riêng của keeper như đã được đồn đại trước đó.
Sự kiện này lại một lần nữa làm nổi bật tầm quan trọng của thiết kế an toàn cho giao thức liên chuỗi, cũng như yêu cầu nghiêm ngặt về quản lý quyền hợp đồng. Nó cũng nhắc nhở chúng ta rằng, trong hệ sinh thái blockchain, ngay cả những chức năng có vẻ vô hại, nếu bị lợi dụng với mục đích xấu, cũng có thể dẫn đến những lỗ hổng bảo mật nghiêm trọng.