Chào buổi sáng, các bạn đang kiểm toán ở tầng ứng dụng, nhưng lỗ hổng sinh thái đã chuyển sang tầng đồng thuận.
Mỗi lần kiểm toán là một lần tôi đặt câu hỏi: “Tại sao địa chỉ ví này lại im lặng suốt 6 tháng, rồi đột nhiên bắt đầu tương tác với hợp đồng đa chữ ký?”
Hai ngày trước, trong lúc đọc mã nguồn của một dự án Lending mới trên Arbitrum, tôi phát hiện một pattern lạ. Hợp đồng quản trị (GovernorBravo) của họ đã được fork từ Compound, nhưng tham số votingPeriod bị đặt thành 1 block. Sửa lỗi này? Dễ thôi. Nhưng câu hỏi lớn hơn là: Ai đứng sau sự thay đổi này? Và tại sao họ muốn một cuộc bỏ phiếu diễn ra trong 12 giây?
Context
Để hiểu, bạn cần nhìn vào bức tranh lớn hơn. Layer2 đang bùng nổ, nhưng tài nguyên cơ bản — thanh khoản, người dùng, sự chú ý — lại phân mảnh. Các giao thức DeFi, để tồn tại, phải cạnh tranh bằng tokenomics. Tokenomics, đến lượt nó, lại phụ thuộc vào quản trị. Quản trị, đến lượt nó, lại phụ thuộc vào việc ai kiểm soát đa số phiếu bầu.
Và đó là nơi tôi thấy một lỗ hổng sinh thái. Không phải lỗi trong mã nguồn Solidity. Mà là lỗ hổng trong cấu trúc quyền lực. Các giao thức đang trở nên giống các quốc gia nhỏ. Và các quốc gia nhỏ thì luôn có nguy cơ bị thâu tóm.
Core
Tôi đã trace ngược dòng lịch sử của địa chỉ ví đó. Nó thuộc về một quỹ đầu tư mạo hiểm lớn, chuyên đầu tư vào các dự án Layer2. Họ đã gom một lượng lớn token quản trị từ nhiều dự án khác nhau, rồi im lặng. Im lặng là chiến lược. Họ chờ đợi. Khi thị trường giảm, giá token rẻ, họ mua thêm. Khi một dự án cần một đề xuất cấp bách (như nâng cấp hợp đồng để vá lỗi), họ đột nhiên xuất hiện với 51% quyền biểu quyết.
Đây không phải là tấn công flash loan. Đây là tấn công quản trị âm thầm. Nó không để lại dấu vết trên blockchain, ngoại trừ một vài giao dịch chuyển token từ ví lạnh sang ví nóng. Nó không vi phạm bất kỳ quy tắc nào của giao thức. Nó hoàn toàn hợp lệ. Và nó hoàn toàn phá hủy tính phi tập trung.
Tôi nhớ lại dự án kiểm toán ICO Bancor năm 2017. Khi đó, tôi tìm ra lỗi trong logic token swap. Đội ngũ Bancor cảm ơn, nhưng chỉ sửa 3/7 lỗi. Lý do? Họ không muốn làm chậm tiến độ ICO. Bài học: lý thuyết whitepaper thường bỏ qua bug triển khai.
Bây giờ, bài học mới: mã nguồn sạch không đảm bảo an toàn sinh thái. Một giao thức có thể hoàn hảo về mặt kỹ thuật, nhưng vẫn bị kiểm soát bởi một nhóm nhỏ qua quản trị viên.
Contrarian
Điểm mù của các nhà kiểm toán bảo mật là chúng tôi chỉ nhìn vào mã. Chúng tôi ít khi nhìn vào ai đang nắm giữ token quản trị. Tại sao? Vì dữ liệu on-chain là public, nhưng phân tích nó đòi hỏi công cụ và thời gian. Và vì chúng tôi nghĩ rằng “nếu mã an toàn, giao thức an toàn”. Sai.
Bảo mật không chỉ là không có lỗi trong hợp đồng. Bảo mật là ai có quyền sửa lỗi đó. Và nếu quyền đó tập trung vào một nhóm nhỏ, thì giao thức đó không khác gì một cơ sở dữ liệu tập trung có blockchain làm vỏ bọc.
Tôi đã thử nghiệm lý thuyết này với bộ test tự động tôi viết cho Uniswap V2 năm 2021. Tôi thêm một module phân tích quyền biểu quyết. Kết quả: 4/10 giao thức tôi kiểm tra có nguy cơ bị thâu tóm bởi một nhóm dưới 5 địa chỉ. Tôi đã không submit bug bounty. Tôi chỉ đăng lên GitHub. Nó thu hút 200 star, nhưng không ai sửa.
Dựa trên kinh nghiệm kiểm toán của tôi, tín hiệu kỹ thuật lớn nhất của một giao thức sắp gặp vấn đề không phải là một dòng code lỗi, mà là sự im lặng kéo dài của các địa chỉ ví lớn.
Takeaway
Vậy câu hỏi cho bạn là: Bạn đang kiểm toán ở tầng nào? Tầng ứng dụng (hợp đồng thông minh) hay tầng đồng thuận (quyền lực quản trị)? Tôi đặt cược rằng, trong vòng 12 tháng tới, một trong những giao thức Layer2 hàng đầu sẽ bị thâu tóm qua cửa sau quản trị. Và khi điều đó xảy ra, đừng nói là không được cảnh báo.
Mỗi lần kiểm toán là một lần tôi đặt câu hỏi: “Ai thực sự đứng sau hợp đồng này?”