
Đội ngũ an ninh Cobo giải thích: Lỗ hổng bảo mật nghiêm trọng trong giao thức lớp nền LayerZero của cầu nối chéo chuỗi Stargate
Tuyển chọn TechFlowTuyển chọn TechFlow

Đội ngũ an ninh Cobo giải thích: Lỗ hổng bảo mật nghiêm trọng trong giao thức lớp nền LayerZero của cầu nối chéo chuỗi Stargate
Vào ngày 28 tháng 3, LayerZero đã cập nhật hợp đồng xác minh dùng để liên kết chuỗi mà không công bố thông báo nào. Nhóm an ninh Cobo thông qua việc so sánh mã hợp đồng xác minh gốc và mã hợp đồng xác minh mới đã phát hiện ra rằng bản cập nhật lần này là việc sửa chữa một lỗ hổng bảo mật nghiêm trọng trước đó.
Bài viết này do đội nghiên cứu an toàn blockchain Cobo cung cấp. Các thành viên trong đội đến từ các phòng thí nghiệm an toàn nổi tiếng, có nhiều năm kinh nghiệm trong lĩnh vực an toàn mạng và khai thác lỗ hổng, từng hỗ trợ Google, Microsoft xử lý các lỗ hổng nghiêm trọng và nhận được lời cảm ơn từ các hãng như Google, Microsoft, đồng thời đạt được thành tích xuất sắc trong bảng xếp hạng Nhà nghiên cứu An toàn Giá trị cao nhất (Top MSRC) của Microsoft.Hiện tại đội tập trung nghiên cứu vào các lĩnh vực như an toàn hợp đồng thông minh, an toàn DeFi, nghiên cứu và chia sẻ các công nghệ bảo mật blockchain tiên tiến.
Chúng tôi cũng mong muốn những người học hỏi không ngừng, có tinh thần nghiên cứu và phương pháp luận khoa học trong lĩnh vực tiền mã hóa có thể gia nhập đội ngũ của chúng tôi, cùng đóng góp những suy nghĩ, phân tích và quan điểm nghiên cứu cho ngành!
Gần đây, giao thức cơ bản LayerZero của cầu nối xuyên chuỗi Stargate đã cập nhật hợp đồng xác thực giao dịch mặc định. Theo phân tích của đội an toàn blockchain Cobo, bản cập nhật này đã sửa chữa một lỗ hổng bảo mật nghiêm trọng tồn tại trong phiên bản trước đó, lỗ hổng này có thể ảnh hưởng đến tài sản của tất cả các dự án cầu nối xây dựng trên LayerZero.
Stargate Finance (https://stargate.finance/) là dự án cầu nối xuyên chuỗi thu hút sự chú ý nhất gần đây, tính đến thời điểm viết bài, TVL đã vượt quá 3,5 tỷ USD.
Cầu nối Stargate sử dụng LayerZero làm nền tảng để thực hiện truyền tải tin nhắn xuyên chuỗi. Nguyên lý cơ bản của LayerZero trong việc truyền tải tin nhắn xuyên chuỗi là:
-
Oracle sẽ gửi blockhash và receiptsRoot của block trên chuỗi nguồn lên chuỗi đích
-
Relayer sẽ gửi biên lai giao dịch chứa tin nhắn xuyên chuỗi trên chuỗi nguồn cùng với đường dẫn chứng minh mối liên hệ giữa biên lai này và receiptsRoot lên chuỗi đích. Tại thời điểm này, hợp đồng xác thực giao dịch trên chuỗi đích sẽ dựa vào mối phụ thuộc MPT [1] của Ethereum để kiểm tra tính tương ứng giữa biên lai do Relayer gửi và receiptsRoot do Oracle gửi
-
Nếu vượt qua xác thực, biên lai này được coi là hợp lệ và sẽ được chuyển tiếp lên giao thức tầng trên, kích hoạt các thao tác vận chuyển tài sản xuyên chuỗi tiếp theo
Vào ngày 28 tháng 3, LayerZero đã âm thầm cập nhật hợp đồng xác thực dùng cho cầu nối xuyên chuỗi mà không đưa ra bất kỳ thông báo nào [2]. Đội an toàn Cobo thông qua so sánh mã nguồn của hợp đồng xác thực ban đầu (MPTValidator) và hợp đồng xác thực mới (MPTValidatorV2) [3], phát hiện bản cập nhật lần này chính là việc sửa chữa một lỗ hổng bảo mật nghiêm trọng trước đó.
Mã cốt lõi của bản vá như sau:

Trong quá trình xác thực MPT, mã lỗi ban đầu lấy hashRoot dùng để tính toán ở tầng tiếp theo thông qua tham số pointer được truyền từ bên ngoài. Ở đây sử dụng các lệnh assembly底层 add, mload,... của Solidity để lấy hashRoot từ proofBytes. Do không giới hạn pointer nằm trong phạm vi độ dài của proofBytes, nên kẻ tấn công có thể truyền vào một pointer vượt quá giới hạn, khiến hợp đồng đọc dữ liệu ngoài proofBytes làm hashRoot cho tầng tiếp theo. Điều này dẫn đến khả năng giả mạo hashRoot, từ đó khiến biên lai giao dịch giả mạo có thể vượt qua xác thực MPT. Hậu quả cuối cùng là ngay cả khi Oracle hoàn toàn đáng tin cậy, Relayer vẫn có thể đơn phương tấn công giao thức xuyên chuỗi bằng cách giả mạo dữ liệu biên lai, phá vỡ giả thiết an toàn ban đầu của LayerZero.
Hiện tại Oracle của giao thức LayerZero là một hợp đồng tương tự đa ký, dữ liệu chỉ được coi là hợp lệ khi hai trong ba admin gửi dữ liệu giống nhau. Tuy nhiên Relayer lại do một EOA đơn ký kiểm soát, bất kỳ Relayer nào cũng có thể gửi dữ liệu tấn công và hoàn thành toàn bộ quy trình tấn công.
Mã sau khi vá sử dụng path được truyền vào và hàm safeGetItemByIndex để lấy hashRoot ở tầng MPT tiếp theo, đảm bảo hashRoot phải nằm trong proofBytes hiện tại, từ đó giúp xác thực MPT diễn ra đúng đắn.
Mã bị lộ lỗ hổng lần này là phần cốt lõi nhất trong mã xác thực giao dịch MPT của giao thức LayerZero, là nền tảng cho sự vận hành bình thường của toàn bộ LayerZero và các giao thức tầng trên (ví dụ như Stargate). Mặc dù nhóm phát triển LayerZero đã sửa chữa lỗ hổng rõ ràng hiện tại, nhưng không loại trừ khả năng còn tồn tại các lỗ hổng bị tấn công khác. Ngoài ra, các hợp đồng trọng yếu của dự án LayerZero hiện tại phần lớn vẫn đang bị kiểm soát bởi EOA, chưa áp dụng cơ chế đa ký hoặc cơ chế khóa thời gian. Nếu khóa riêng của các EOA đặc quyền này bị rò rỉ, cũng có thể ảnh hưởng đến tài sản của tất cả các giao thức tầng trên.
Tại đây, đội an toàn blockchain Cobo nhắc nhở nhà đầu tư lưu ý rủi ro của các dự án mới, đồng thời kêu gọi nhóm phát triển LayerZero ngoài việc thực hiện kiểm toán sâu về mã hợp đồng, cần nhanh chóng chuyển quyền kiểm soát đặc quyền hiện tại từ EOA sang hợp đồng đa ký hoặc hợp đồng khóa thời gian để giảm thiểu rủi ro bị tấn công.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News














