BTC $78,761.8 +0.20%
ETH $2,495.88 +2.19%
SOL $97.73 +0.66%
BNB $702.6 +1.36%
XRP $1.4 -2.87%
DOGE $0.0861 -0.52%
ADA $0.2084 -0.76%
AVAX $7.33 -0.39%
DOT $0.8481 -1.41%
LINK $11.45 +0.86%
⛽ ETH Gas 28 Gwei
Sợ&Tham
65

Chiến tranh tiêu hao trên Layer 2: Bài học từ 7 đêm tấn công liên tiếp vào zkSync Era

Ngành | Trương Hưng |

Tại sao một dự án ZK-Rollup vừa huy động 100 triệu USD lại để lộ lỗ hổng nghiêm trọng chỉ sau 3 ngày ra mắt? Câu trả lời nằm ở bản chất của cuộc chiến tiêu hao giữa bảo mật và tốc độ trên Layer 2 – một cuộc chiến mà không ai nói thẳng ra.

Hook: 7 đêm, 7 lỗ hổng

Đêm thứ 7 liên tiếp, một lỗ hổng mới xuất hiện trên zkSync Era. Lần này là một bug trong cơ chế xác thực proof aggregation – cho phép kẻ tấn công giả mạo block cuối cùng. Cộng đồng im lặng. Không có bài đăng chính thức. Chỉ có một dòng code bị sửa trên GitHub vào lúc 3 giờ sáng giờ Việt Nam. Tôi nhìn vào log, thấy timestamp: 7 đêm trước, cũng giờ đó, cũng một hotfix tương tự.

Bảy đêm. Bảy lỗ hổng. Không phải ngẫu nhiên. Đây là dấu hiệu của một cuộc chiến tiêu hao: nhóm phát triển đang chạy đua với tốc độ ra mắt tính năng, và bảo mật là thứ hy sinh.

Dựa trên kinh nghiệm audit của tôi với zkSync Lite từ năm 2020, tôi nhận ra một mô hình lặp lại: mỗi lần mainnet được nâng cấp, lại có 2-3 lỗ hổng mới xuất hiện trong vòng 48 giờ. Nhưng lần này, tần suất dày đặc hơn – tín hiệu cho thấy đội ngũ đã đẩy code vượt quá khả năng kiểm soát chất lượng.

Context: Cơ chế giao thức và vũ khí hoá tốc độ

zkSync Era là một ZK-Rollup sử dụng bằng chứng không kiến thức (zero-knowledge proof) để tổng hợp hàng nghìn giao dịch thành một batch. Mỗi batch được xác thực bởi một proof duy nhất. Điểm yếu: nếu một lỗi trong quá trình tạo proof (witness generation) không được phát hiện, kẻ tấn công có thể chèn một giao dịch độc hại mà không ai kiểm tra.

Trong 7 đêm vừa qua, tất cả các lỗ hổng đều nằm ở khâu này: hoặc là do không kiểm tra số dư, hoặc do nhầm lẫn trong Merkle tree, hoặc do tối ưu hoá quá mức để giảm gas. Nhóm phát triển đã chọn tốc độ thay vì bảo mật – một lựa chọn có chủ đích, vì thị trường tăng giá đang thưởng cho ai ra mắt nhanh nhất.

Core: Phân tích kỹ thuật và trade-off

Tôi đã phân tích mã nguồn của 5 lỗ hổng trong số đó. Điểm chung: tất cả đều liên quan đến việc tái sử dụng code cũ mà không kiểm tra lại bối cảnh mới. Ví dụ, trong bản nâng cấp gần đây, nhóm đã thêm một tính năng “batch aggregation” cho phép gộp nhiều proof nhỏ thành một proof lớn. Nhưng họ quên cập nhật logic xác thực signature cho các batch mới. Kết quả: kẻ tấn công có thể tạo một proof giả mạo với chữ ký không hợp lệ.

Mỗi lỗi có thể dễ dàng phát hiện nếu có một audit độc lập trước khi deploy. Nhưng thị trường tăng giá không cho phép chờ đợi. Các VC thúc ép ra mắt nhanh để thu hút thanh khoản. Nhóm phát triển, với nguồn lực hạn chế, buộc phải cắt giảm quy trình kiểm tra.

Đây là điểm mù kỹ thuật mà tôi muốn nhấn mạnh: sự phân mảnh thanh khoản không phải vấn đề thực sự – đó là câu chuyện do các VC tạo ra để bán sản phẩm mới. Vấn đề thực sự là tốc độ phát triển vượt quá khả năng bảo mật, tạo ra một cuộc chiến tiêu hao giữa các Layer 2: ai ra mắt nhanh hơn, ai thu hút được nhiều TVL hơn, và ai chấp nhận rủi ro nhiều hơn.

Contrarian: Góc nhìn phản trực giác

Hầu hết các nhà đầu tư đều nghĩ rằng ZK-Rollup là an toàn vì có proof toán học. Sai lầm. Proof chỉ chứng minh tính đúng đắn của một phép tính, không chứng minh rằng phép tính đó là ý định đúng đắn của người dùng. Lỗi xảy ra ở tầng ứng dụng: khi người dùng ký một giao dịch, họ tin rằng nó sẽ được thực thi theo ý mình. Nhưng nếu có bug trong trình tự witness, giao dịch có thể bị biến đổi thành một giao dịch khác mà vẫn có proof hợp lệ.

Tôi đã từng thấy điều này trong một audit cho Scroll năm 2022: một lỗi opcode SELFDESTRUCT cho phép kẻ tấn công xoá contract và tạo lại với code độc hại, và ZK-proof vẫn xác thực vì nó chỉ kiểm tra các bước thực thi, không kiểm tra ý đồ. Điều tương tự đang xảy ra ở đây, nhưng với quy mô lớn hơn.

Điểm mù bảo mật thứ hai: không có cơ chế dừng khẩn cấp (emergency pause) trong hầu hết các ZK-Rollup. Nếu một lỗ hổng bị khai thác, tiền của người dùng có thể mất vĩnh viễn trước khi nhóm phát triển có thể can thiệp. Trong 7 đêm qua, không có lần nào team kích hoạt pause – họ chỉ fix code sau khi lỗi được phát hiện. Điều này có nghĩa là nếu một hacker biết trước, họ có thể khai thác trước khi hotfix được deploy.

Takeaway: Dự báo lỗ hổng tiếp theo

Dựa trên chu kỳ 7 đêm, tôi dự đoán rằng trong vòng 2 tuần tới, sẽ có thêm ít nhất 3 lỗ hổng nghiêm trọng trên zkSync Era, và một trong số đó sẽ bị khai thác thực tế. Lý do: nhóm phát triển đang chạy theo deadline của một bản nâng cấp lớn (EIP-4844 support) – họ sẽ đẩy code nhanh hơn, và quy trình kiểm tra sẽ càng lỏng lẻo hơn.

Khi đó, thị trường sẽ giật mình. Nhưng lúc đó đã muộn.

Câu hỏi dành cho bạn: Bạn có sẵn sàng đặt tiền vào một giao thức mà mỗi đêm đều có một hotfix mới không? Hay bạn sẽ chờ cho đến khi cuộc chiến tiêu hao kết thúc? Lịch sử của DeFi đã cho thấy: kẻ chiến thắng không phải là kẻ ra mắt nhanh nhất, mà là kẻ sống sót lâu nhất.