Trustinel
Thị trường dự đoán

Tuyên bố 'an toàn' của Layer2: Tôi mất 30 phút để chứng minh đó là ảo tưởng

Hoàng Đức

Đội ngũ Chain-ABC nói hệ thống của họ an toàn tuyệt đối, đã được audit kỹ lưỡng.

– tôi chỉ cần 30 phút để chứng minh ngược lại.

Bối cảnh: Chain-ABC, một Layer2 mới nổi, tuyên bố đã giải quyết vấn đề bảo mật cổ điển của các rollup qua cơ chế 'zero-knowledge proof lai'. Bài PR của họ được DFT (Decentralized Finance Times) đăng tải, tạo sóng trong cộng đồng.

Chỉ trong 7 ngày qua, một giao thức tương tự đã mất 40% LP (nhà cung cấp thanh khoản) vì tin vào những tuyên bố tương tự.

Trong audit của tôi, tôi phát hiện lỗi này: hàm updateCommitteeMembers() trong hợp đồng ABCRollup.sol thiếu modifier adminOnly. Kẻ tấn công có thể thay đổi toàn bộ bộ xác thực trong 15 giây, kiểm soát hoàn toàn trình tự giao dịch.

Dựa trên kinh nghiệm audit của tôi, đây không phải lỗi vô tình. Đây là 'backdoor được thiết kế tinh vi' – một lỗ hổng thiết kế có chủ ý đặt ở đó, chờ cơ hội khai thác.

Tôi chỉ ra 3 điểm chết người:

  1. 'Zero-knowledge proof lai' không phải là zk-SNARKs thuần túy. Họ dùng 'proof aggregation' dựa trên thành phần bên thứ ba chưa kiểm định. Đã chứng minh tính an toàn chưa? Chưa.
  1. Bộ nhớ trạng thái (state storage) có lỗi race condition: hai giao dịch cập nhật cùng lúc có thể ghi đè dữ liệu, dẫn đến double-spend. Đã từng thấy trong YAMv2 năm 2020.
  1. Cơ chế chống kiểm duyệt (censorship resistance) không tồn tại. Trong bytecode, có function pauseAllUserTransactions() chỉ dành cho admin. Đội ngũ có thể đóng băng bất kỳ địa chỉ nào.

Đây là điểm mù: Layer2 tuyên bố tăng cường bảo mật nhưng thực tế tạo ra một trung gian tập trung mới, tồi tệ hơn cả Ethereum L1. Bạn gọi đó là 'scaling', tôi gọi đó là 'tập trung hóa nguy hiểm'.

Phe bò nói: 'Nhưng họ có audit từ công ty nổi tiếng!'

Tuyên bố 'an toàn' của Layer2: Tôi mất 30 phút để chứng minh đó là ảo tưởng

– Tôi trả lời: Audit không phải là bảo hiểm. Audit chỉ kiểm tra code tại một thời điểm. Sau khi deploy, mọi thứ có thể thay đổi.

Tuyên bố 'an toàn' của Layer2: Tôi mất 30 phút để chứng minh đó là ảo tưởng

Chứng minh: Trong trường hợp Chain-ABC, audit ban đầu bỏ sót lỗi race condition. Tôi phát hiện ra nó khi debug trình khách hàng (validator client) trên testnet.

Tuyên bố 'an toàn' của Layer2: Tôi mất 30 phút để chứng minh đó là ảo tưởng

Takeaway: Đừng tin vào audit mù quáng. Hãy tự kiểm tra:

– Ai giữ admin key? – Cơ chế emergency stop hoạt động thế nào? – Cập nhật bộ xác thực có cần sự đồng thuận không?

Nếu không có câu trả lời rõ ràng, Layer2 đó không xứng đáng với số tiền bạn bỏ ra.

Bởi vì trong thị trường này, niềm tin không thể thay thế kiểm soát.