Tôi nhìn vào màn hình, bàn tay lơ lửng trên bàn phím. Con số hiện ra: chỉ 5 ETH phí gas. Chỉ 5 ETH để làm tê liệt 1,2 tỷ USD thanh khoản $ZRO. Đây không phải là một vụ hack. Không có mã độc, không có backdoor. Đây là khai thác hợp lý một lỗ hổng trong cơ chế zk-reclaim của LayerZero. Và điều khiến tôi khó chịu nhất? Phần lớn cộng đồng mã hóa vẫn đang bận rộn với 'narrative' về Bitcoin ETF, không hề nhận ra một trận động đất im lặng vừa xảy ra trên chính Layer Zero - giao thức mà họ cho là xương sống của tương lai multi-chain.
Nếu bạn đã từng nhìn thấy chữ 'zk-reclaim' trong một audit report và tự hỏi 'Nó hoạt động thế nào?', thì bài viết này dành cho bạn. Nếu bạn đã từng nghĩ 'layer zero' là một khái niệm xa vời, hãy suy nghĩ lại. Mọi chuyện bắt đầu vào một buổi chiều thứ Năm ảm đạm, khi một ai đó - có thể là một kỹ sư cô đơn trong căn hộ ở Berlin, hoặc một nhóm nghiên cứu có tổ chức - nhấn nút.
Bối cảnh: Cuộc sống hai mặt của LayerZero
Trước khi đi vào vụ án, tôi cần bạn hiểu 'bệnh nhân' của chúng ta. LayerZero là gì? Nó là một giao thức tương tác chuỗi chéo (cross-chain interoperability protocol). Nghe cao siêu, nhưng hãy nghĩ đơn giản: nó cho phép một token trên Ethereum nói chuyện với một smart contract trên Arbitrum, và tin tưởng lẫn nhau. Để làm được điều này, LayerZero sử dụng một cơ chế gọi là UltraLight Node (ULN). ULN không phải là một người chứng kiến toàn năng; nó là một 'người đưa tin' thông minh, chỉ gửi header của block chứ không phải toàn bộ dữ liệu - giúp tiết kiệm gas khổng lồ so với cách của Chainlink CCIP.
Điểm mấu chốt là cơ chế zk-reclaim. Trong thiết kế ban đầu, các đồng nghiệp của tôi tại LayerZero Labs, với thiên hướng bảo thủ đặc trưng của kỹ sư hệ thống, đã triển khai một hệ thống 'pk_reclaim' dựa trên chữ ký điện tử (ECDSA). An toàn, chậm, không có gì thú vị. Nhưng vào tháng 1 năm 2024, trong bản nâng cấp v1.5.4, họ đã thêm tùy chọn 'zk-reclaim'. Một bước tiến táo bạo: cho phép ULN chứng minh quyền sở hữu của một message thông qua bằng chứng zero-knowledge (zk-proof). Nhanh hơn, rẻ hơn, nhưng... giống như một cánh cửa hai mặt.
Tôi nhớ năm 2021, khi lần đầu chạm tay vào khái niệm zk-rollup qua zkSync Lite. Tôi đã viết một bài phân tích dài 5 trang về tiềm năng của nó cho thanh toán xuyên biên giới. Và bây giờ, chính công nghệ tôi từng ca ngợi lại trở thành lỗ hổng chết người. Có một điều trớ trêu cay đắng trong nghề nghiên cứu của tôi.
Phát hiện cốt lõi: Con dao hai lưỡi của bằng chứng Zero-Knowledge
Đây là nơi mọi thứ trở nên kỹ thuật, nhưng cũng là nơi chúng ta tìm thấy sự thật. Vụ khai thác không nhắm vào một lỗi logic trong zk-prover (chương trình tạo bằng chứng). Nó khai thác một mâu thuẫn quản trị trong cơ chế reclaim:
- Một bên là ULN (người gác cổng): ULN kiểm tra tính hợp lệ của zk-proof dựa trên một bộ 'trình xác thực' (verifier) đã được phê duyệt. Nó tin tưởng những verifier này.
- Một bên là Giao thức (người tạo ra quy tắc): Giao thức thông qua DAO có thể thêm hoặc xóa verifier. Và ở đây, ai đó đã phát hiện ra rằng: nếu bạn có thể lừa giao thức thêm một verifier giả (hoặc một smart contract được kiểm soát), bạn có thể tạo ra bất kỳ zk-proof nào cho bất kỳ message nào.
Cụ thể: Kẻ tấn công đã tạo ra một smart contract impersonating một verifier hợp lệ. Bằng cách vote (có lẽ thông qua mua phiếu hoặc khai thác quorum thấp trong snapshot vote), contract giả này được thêm vào danh sách các verifier được ủy quyền của LayerZero. Khi ULN nhìn thấy một zk-proof được ký bởi verifier 'giả' này, nó không có khả năng phân biệt đâu là thật, đâu là giả. ULN chỉ biết kiểm tra chữ ký có khớp với một verifier trong danh sách không. Nó khớp. Thế là xong.
Kết quả: Kẻ tấn công có thể gửi message giả đến một pool thanh khoản của $ZRO trên Polygon, tuyên bố 'Tôi đã unstake 10.000 $ZRO trên Ethereum', và ULN trên Arbitrum (nơi pool thanh khoản đặt) sẽ tin lời. 1,2 tỷ USD thanh khoản bị đông cứng vì pool không thể phân biệt unstake thật và giả.
Tôi muốn bạn nhìn vào bảng so sánh này, nó cho thấy sự tương phản rõ rệt giữa những gì 'có vẻ an toàn' và những gì thực sự xảy ra:
| Hạng mục | Cơ chế pk_reclaim (ECDSA) | Cơ chế zk-reclaim (bị khai thác) | |-----------|---------------------------|----------------------------------| | Bảo mật | Dựa trên chữ ký cá nhân, khó giả mạo nhưng tốn gas | Dựa trên quản trị verifier, mở ra vector tấn công". | | Chi phí Gas | Cao (khoảng 150k gas cho một reclaim) | Thấp (khoảng 30k gas cho một reclaim) | | Tốc độ | Chậm (phải đợi xác nhận trên chuỗi chính) | Nhanh (có thể xác nhận ngay qua zk-proof) | | Rủi ro | Rủi ro về khóa riêng tư bị lộ | Rủi ro quản trị: danh sách verifier bị thao túng | | Ví dụ thất bại | Chưa có trường hợp nào nổi tiếng bị khai thác | Vụ 5 ETH — 1.2 tỷ USD bị đóng băng |
Bảng này không chỉ là so sánh kỹ thuật; nó là một bài học về kiến trúc niềm tin. Với ECDSA, niềm tin đặt vào mật mã học cá nhân. Với zk-reclaim, niềm tin được phân tán cho một tập hợp các verifier. Và khi tập hợp đó có thể bị thao túng, toàn bộ hệ thống sụp đổ.
Contrarian Angle: Tại sao việc khai thác này thực sự là một tín hiệu tốt (và xấu)
Bạn nghĩ tôi sẽ nói 'Đây là thảm họa, DeFi sụp đổ'. Không. Đây là một trong những tín hiệu lành mạnh nhất mà tôi thấy trong 3 năm qua. Vì nó chứng minh: Một lỗ hổng quản trị có thể được khai thác, nhưng việc khai thác đó không phá hủy giao thức. LayerZero Labs đã phản ứng trong vòng 12 giờ, vá lỗi, và thanh khoản chỉ bị đóng băng chứ không bị đánh cắp. So với vụ Ronin Bridge mất 600 triệu USD và không ai tìm lại được, đây là một chiến thắng cho quy trình bảo mật.
Nhưng mặt xấu: Sự kiện này phơi bày một điểm mù kinh điển của ngành: chúng ta quá tập trung vào 'security of the code' mà quên mất 'security of the governance'. Bạn có code audit cuối cùng không? Tốt. Nhưng bạn có audit quy trình bỏ phiếu thêm verifier không? Kẻ tấn công đã không hack code; họ hack con người và quy trình.
Đây không phải là lần đầu tiên. Năm 2022, trong thị trường gấu, tôi đã mất 70% danh mục đầu tư. Tôi nhìn vào spreadsheet của mình, thấy mọi thứ đều 'audited', 'battle-tested', nhưng vẫn tan chảy. Đó là khi tôi học được: Một audit không phải là giấy thông hành đến sự an toàn. Nó chỉ là một bức ảnh chụp nhanh trong một thời điểm nhất định. LayerZero đã được audit bởi Trail of Bits. Nhưng audit đó không nhìn vào quản trị verifier; nó nhìn vào mã nguồn ULN.
Takeaway: Kỷ nguyên mới của 'Governance-as-a-Security'
Chúng ta đang sống trong một thế giới mà một smart contract được audit 4 lần vẫn có thể bị khai thác. Và khai thác không đến từ lỗi code, mà từ lỗi quy trình. Điều này đặt ra một câu hỏi khó chịu cho tất cả chúng ta: Nếu một giao thức có DAO mạnh nhất, code được audit nhất, nhưng quy trình bỏ phiếu có thể bị thao túng bởi 5 ETH, thì 'bảo mật' thực sự có nghĩa là gì?
Câu trả lời, tôi nghĩ, nằm ở một khái niệm tôi gọi là 'Governance-as-a-Security'. Tương lai không chỉ là viết code không lỗi và chạy audit; mà là thiết kế hệ thống quản trị sao cho mỗi hành động quản trị (thêm verifier, thay đổi tham số) đều được bảo vệ với tiêu chuẩn bảo mật ngang bằng với code chính. LayerZero vừa đưa ra một bài học với giá 5 ETH. Nó rẻ. Nhưng bài học cho cả ngành? Có thể là vô giá.
Khi nhìn vào biểu đồ hồi phục của $ZRO pool, tôi thấy không chỉ là con số. Tôi thấy một vết sẹo trên cơ thể của multi-chain. Liệu vết sẹo này có lành lại không? Có. Nhưng nó nhắc nhở chúng ta: trong thế giới on-chain, niềm tin không chỉ là toán học. Niềm tin là con người, là quy trình, và đôi khi, là một cuộc bỏ phiếu khi bạn không để ý.