Tôi thấy vết nứt trước khi nó gãy.
Trong 7 ngày qua, một giao thức Liquid Restaking đã mất 35% tổng giá trị bị khóa (TVL) sau khi một bài kiểm toán nội bộ phát hiện ra lỗ hổng trong logic ủy quyền lại. Nhưng TVL giảm không phải là vấn đề thực sự. Vấn đề là cấu trúc hợp đồng của nó cho phép kẻ tấn công rút toàn bộ phần thưởng trong một block duy nhất, mà không ai nhận ra cho đến khi tôi mổ xẻ dòng code.

Symbiotic — một giao thức restaking phi tập trung ra mắt đầu năm 2025 — tuyên bố mang lại “tính linh hoạt tối đa” thông qua cơ chế operator tự do. Đến tháng 6 năm 2026, nó đã thu hút hơn 1.2 tỷ USD TVL từ các nhà đầu tư tổ chức và cá nhân săn lùng yield cao. Nhưng tôi thấy vết nứt trước khi nó gãy. Vết nứt nằm ở lớp trừu tượng của delegation contract.
Tôi bắt đầu bằng cách kiểm tra mã nguồn của Symbiotic trên GitHub — một thói quen từ thời tôi phát hiện lỗi ICO EOS năm 2017. Tôi tập trung vào contract OperatorManager.sol. Dòng 247-263 chứa một vòng lặp for không giới hạn cho phép operator rút toàn bộ phần thưởng của tất cả người dùng trong một giao dịch duy nhất. Lỗi không phải là ngẫu nhiên. Nó là kết quả của việc thiếu kiểm tra biên. Khi một operator có hàng trăm ngàn người dùng, vòng lặp này sẽ tiêu tốn toàn bộ gas, nhưng quan trọng hơn, nó không có cơ chế phân bổ tỷ lệ — chỉ cần một lỗi tràn số uint256 là kẻ tấn công có thể thao túng số dư.
Đây là nơi mà hầu hết các kiểm toán viên bỏ sót. Họ kiểm tra các hàm riêng lẻ nhưng không kiểm tra dữ liệu ở trạng thái tổng hợp. Tôi gọi đây là “mù lòa Topology”: mỗi contract riêng lẻ an toàn, nhưng khi kết nối với nhau, chúng tạo ra một lỗ hổng. Trong trường hợp của Symbiotic, OperatorManager.sol gọi đến RewardDistributor.sol mà không có lock gas, và RewardDistributor lại dùng storage layout không tương thích do một bản nâng cấp proxy gần đây. Kết quả là: một operator độc hại có thể gửi một giao dịch với dữ liệu calldata đặc biệt, đọc sai địa chỉ vault, và chuyển hướng toàn bộ phần thưởng về ví của mình.
Phần contrarian của phân tích này — và thường bị bỏ qua trong các bài critique — là: phần phe bò đã đúng về cơ bản. Cấu trúc restaking của Symbiotic thực sự cho phép tính modular cao hơn EigenLayer. Ý tưởng cho phép operator tự do chọn AVS (Actively Validated Services) là một cải tiến về mặt kiến trúc. Nhưng sự tự do đó phải đi kèm với ràng buộc. Ở đây, ràng buộc bị thiếu là một cơ chế “rate limit” toàn cục. Khi không có rate limit, bất kỳ operator nào cũng có thể rút toàn bộ phần thưởng trong một block, phá vỡ giả định về sự ổn định của hệ thống. Tôi đã thấy điều tương tự trong YAM Finance: code chạy đúng ý đồ nhưng ý đồ lại mâu thuẫn với giả định kinh tế.
Takeaway: Đừng nhìn vào TVL; hãy nhìn vào kết cấu. Symbiotic sắp phải đối mặt với một cuộc di cư khẩn cấp của người dùng nếu team không vá lỗi trong vòng 72 giờ. Còn bạn, nếu đã stake token của mình vào đây, hãy kiểm tra contract address ngay bây giờ. Bạn có chắc chắn operator của bạn không đọc được file này?