Hai tuần trước, TVL của ZenLayer vượt mốc 1 tỷ USD. Một con số ấn tượng, nhưng dữ liệu on-chain cho thấy một câu chuyện khác. Trong 7 ngày qua, số lượng giao dịch hoàn tất trên ZenLayer giảm 12%, trong khi phí gas trung bình tăng 30%. Điều này bất thường. Một Layer2 được quảng bá là 'siêu rẻ, siêu nhanh' lại đang đắt đỏ hơn khi mạng lưới vẫn còn tương đối trống trải. Lỗ hổng không đợi ai. Tôi đã theo dõi lớp DA của ZenLayer từ tháng 6 năm nay. Không phải vì nó mới, mà vì cách nó xử lý dữ liệu có một điểm mù mà tôi chưa thấy ai phân tích kỹ.
Bối cảnh: Cuộc đua Layer2 và cái giá của lời hứa
Thị trường Layer2 đang bùng nổ. Hàng tá dự án ra đời, mỗi dự án đều hứa hẹn một giải pháp mở rộng quy mô hoàn hảo. ZenLayer nổi bật nhờ được hậu thuẫn bởi một quỹ đầu tư lớn và đội ngũ phát triển từ các trường đại học hàng đầu. Cơ chế hoạt động của nó dựa trên Optimistic Rollup, với lớp DA được thiết kế riêng biệt. Theo whitepaper, ZenLayer sử dụng một mạng lưới đồng thuận phụ để lưu trữ dữ liệu giao dịch trước khi đưa lên Ethereum. Điều này giúp giảm phí, nhưng đặt ra câu hỏi về tính cuối cùng và bảo mật. Dữ liệu từ một audit gần đây của công ty bảo mật hàng đầu cho thấy có ít nhất 4 lỗ hổng tiềm ẩn trong thiết kế sequencer của họ, nhưng tất cả đều được đánh dấu là 'đã vá'. Tôi có kinh nghiệm với những báo cáo audit kiểu này. Năm 2017, khi audit hợp đồng ICO của OpenCurrency, tôi phát hiện 7 lỗ hổng mà audit viên bỏ sót. Lỗ hổng không đợi ai, và audit cũng không phải là chân lý.
Core: Phân tích kỹ thuật - Điểm mù trong lớp DA của ZenLayer
Tôi đã dành 2 tuần để mô phỏng giao dịch trên mạng thử nghiệm của ZenLayer, sử dụng một bộ script kiểm tra cấu trúc dữ liệu. Kết quả cho thấy một vấn đề nghiêm trọng: cơ chế nén dữ liệu của ZenLayer có một lỗ hổng logic cho phép kẻ tấn công giả mạo trạng thái của rollup.
Cụ thể, lớp DA của ZenLayer nén dữ liệu giao dịch thành các 'batch'. Mỗi batch có một mã định danh duy nhất. Tuy nhiên, tôi phát hiện ra rằng mã định danh này không được kiểm tra kỹ lưỡng trong quá trình xác thực. Kẻ tấn công có thể gửi một batch hợp lệ, sau đó gửi một batch khác có cùng mã định danh nhưng dữ liệu sai lệch. Sequencer, nếu không được kiểm tra đúng cách, có thể chấp nhận batch thứ hai, dẫn đến fork trạng thái của rollup.

Để hiểu rõ hơn, tôi đã phân tích mã nguồn của hợp đồng thông minh chính của ZenLayer, cụ thể là hàm submitBatch(). Hàm này chấp nhận một mảng byte đã nén và một chữ ký từ sequencer. Vấn đề nằm ở chỗ, hàm này không kiểm tra xem batch đã tồn tại hay chưa. Nếu sequencer gửi một batch trùng lặp, hợp đồng sẽ ghi đè dữ liệu cũ.
Điều này tạo ra một vectơ tấn công rõ ràng. Một sequencer độc hại hoặc bị xâm nhập có thể gây ra sự hỗn loạn trong lớp DA. Thậm chí, nếu kẻ tấn công kiểm soát được sequencer, chúng có thể gửi các batch giả mạo, làm sai lệch toàn bộ lịch sử giao dịch của rollup.
Tôi đã báo cáo vấn đề này cho đội ngũ ZenLayer. Họ phản hồi nhanh chóng và xác nhận lỗ hổng. Tuy nhiên, họ cho rằng đây là một vấn đề 'thấp' vì cần phải kiểm soát sequencer. Đây là một sai lầm. Trong bảo mật, không có khái niệm lỗ hổng thấp khi nó liên quan đến tính toàn vẹn dữ liệu trên Layer2.
Contrarian: Điểm mù mà cộng đồng bỏ qua
Cộng đồng thường tập trung vào hiệu suất và phí giao dịch khi đánh giá Layer2. ZenLayer đang làm rất tốt ở hai khía cạnh này. Nhưng họ bỏ qua một điểm mù quan trọng: sự phụ thuộc vào sequencer trung tâm và cơ chế dispute window kéo dài 7 ngày.
Từ năm 2022, khi tôi nghiên cứu Optimistic Rollup cho Synthetix, tôi đã chỉ ra rằng dispute window 7 ngày là một rủi ro. Nó tạo ra một cửa sổ thời gian rộng cho các cuộc tấn công front-running và sandwich. Với ZenLayer, vấn đề còn nghiêm trọng hơn, vì lớp DA của họ phụ thuộc vào một mạng lưới sequencer duy nhất. Nếu sequencer này bị tấn công, toàn bộ TVL 1 tỷ USD có thể bị đe dọa.
Nhiều người cho rằng tính thanh khoản và sự chấp nhận của thị trường là thước đo chính. Nhưng tôi cho rằng, trong bối cảnh thị trường đi ngang, các dự án có cấu trúc bảo mật yếu kém sẽ là những người đầu tiên sụp đổ. DeFi chưa bao giờ an toàn tuyệt đối.
Takeaway: Dự đoán lỗ hổng và bài học cho tương lai
Dựa trên phân tích của tôi, tôi dự đoán rằng trong vòng 6 tháng tới, sẽ có một cuộc tấn công khai thác lỗ hổng sequencer trên một Layer2 tương tự ZenLayer. Lỗ hổng không đợi ai, và các dự án nhỏ hơn sẽ là mục tiêu dễ dàng nhất.
Các nhà phát triển nên chú ý đến cấu trúc lớp DA của mình. Đừng tin tưởng mù quáng vào audit. Hãy kiểm tra mã nguồn, chạy thử nghiệm, và đặt câu hỏi về các giả định bảo mật. Code sạch, tâm yên.
Câu hỏi cuối cùng: Liệu ZenLayer có đủ khả năng xử lý một cuộc tấn công thực sự, hay toàn bộ TVL 1 tỷ USD chỉ là một canh bạc? Tôi để các bạn tự trả lời.