Vài ngày trước, LayerZero, giao thức cơ bản của cầu nối chuỗi chéo Stargate, đã cập nhật hợp đồng xác minh giao dịch mặc định. Theo phân tích của nhóm bảo mật chuỗi khối Cobo, bản cập nhật này đã khắc phục một lỗ hổng nghiêm trọng trong phiên bản trước, có thể khiến tất cả các chuỗi chéo được xây dựng trên LayerZero đến Tài sản của dự án bị ảnh hưởng.
Stargate FinanceĐây là dự án cầu xuyên chuỗi gây chú ý nhất trong những ngày gần đây, tính đến thời điểm công bố, TVL đã vượt quá 3,5 tỷ đô la Mỹ.
Lớp dưới cùng của cầu nối chuỗi chéo Stargate dựa trên LayerZero để đạt được thông điệp chuỗi chéo. Các nguyên tắc cơ bản đằng sau thông điệp chuỗi chéo của LayerZero là:
Oracle sẽ gửi blockhash và chặn các biên nhậnRoot trên chuỗi nguồn tới chuỗi mục tiêu
Relayer sẽ gửi biên nhận giao dịch trên chuỗi nguồn và mối quan hệ đường dẫn giữa biên nhận và khối biên laiRoot đến chuỗi mục tiêu. Tại thời điểm này, hợp đồng xác minh giao dịch trên chuỗi mục tiêu sẽ dựa trên mối quan hệ phụ thuộc của Ethereum MPT [ 1]. Xác minh mối quan hệ tương ứng giữa biên nhận đã gửi và biên nhậnRoot do Oracle gửi
Nếu xác minh vượt qua, biên nhận được coi là biên nhận hợp pháp và được chuyển tiếp đến giao thức lớp trên, kích hoạt các hoạt động tài sản chuỗi chéo tiếp theo
LayerZero đã cập nhật hợp đồng xác minh để sử dụng chuỗi chéo vào ngày 28 tháng 3 mà không có bất kỳ thông báo nào [2]. Nhóm bảo mật Cobo nhận thấy rằng bản cập nhật này là bản sửa lỗi cho lỗ hổng bảo mật lớn trước đó bằng cách so sánh mã của hợp đồng xác minh ban đầu (MPTValidator) và hợp đồng xác minh mới (MPTValidatorV2) [3].
Mã lõi bản vá như sau:
Khi mã lỗ hổng ban đầu thực hiện xác minh MPT, nó sẽ nhận được hashRoot được sử dụng cho lớp tính toán tiếp theo thông qua con trỏ được truyền vào từ bên ngoài. Ở đây, solidity cơ bản add, mload và các lệnh assembly khác được sử dụng để lấy hashRoot từ proofBytes. hợp đồng đọc dữ liệu khác với proofBytes dưới dạng hashRoot của lớp tiếp theo. Theo cách này, có khả năng giả mạo hashRoot, điều này càng dẫn đến thực tế là biên lai giao dịch giả mạo có thể vượt qua xác minh MPT. Hậu quả cuối cùng là, với tiền đề rằng Oracle hoàn toàn đáng tin cậy, Relayer vẫn có thể đơn phương tấn công giao thức chuỗi chéo bằng cách giả mạo dữ liệu nhận, phá vỡ giả định bảo mật trước đó của LayerZero.
Oracle của giao thức LayerZero hiện tại là một hợp đồng tương tự như đa chữ ký, sau khi hai trong số ba quản trị viên gửi cùng một dữ liệu, dữ liệu sẽ được coi là hợp lệ. Tuy nhiên, Relayer được kiểm soát bởi EOA có một chữ ký và bất kỳ Relayer nào cũng có thể gửi dữ liệu tấn công để hoàn tất tất cả các quy trình tấn công.
Mã được vá sử dụng đường dẫn đến và sử dụng hàm safeGetItemByIndex để lấy hashRoot của lớp tiếp theo của MPT, đảm bảo rằng hashRoot tồn tại trong proofBytes hiện tại để quá trình xác minh MPT có thể tiến hành chính xác.
Mã làm lộ lỗ hổng lần này là mã của phần xác minh giao dịch MPT cốt lõi của giao thức LayerZero và là nền tảng cho hoạt động bình thường của toàn bộ LayerZero và các giao thức lớp trên (chẳng hạn như Stargate). Mặc dù nhóm dự án LayerZero đã sửa các lỗ hổng rõ ràng hiện tại, nhưng không thể loại trừ khả năng các lỗ hổng khác bị khai thác. Ngoài ra, hầu hết các hợp đồng chính của dự án LayerZero hiện do EOA kiểm soát và không có cơ chế đa chữ ký hoặc cơ chế khóa thời gian nào được áp dụng. Nếu khóa riêng của các EOA đặc quyền này bị rò rỉ, tài sản của tất cả các giao thức lớp trên cũng có thể bị ảnh hưởng.
Tại đây, nhóm bảo mật chuỗi khối Cobo nhắc nhở các nhà đầu tư chú ý đến rủi ro của các dự án mới, đồng thời kêu gọi bên dự án LayerZero tiến hành kiểm tra chuyên sâu mã hợp đồng và chuyển các đặc quyền do EOA kiểm soát hiện tại sang hợp đồng đa chữ ký hoặc khóa thời gian càng sớm càng tốt.
Reference:
https://eth.wiki/fundamentals/patricia-tree
https://etherscan.io/tx/0xf4f0495bfed37d4d95b3342ead0962433c7973f240b9b0739faa91e6ccac9d40
https://www.diffchecker.com/RJdDTCx7