Tuần trước, dự án DeFi CryptoGuard công bố ký hợp đồng kiểm toán với công ty SecureAudit – một cái tên quen thuộc trong không gian. Tin tức được đón nhận tích cực: token của họ tăng 15% trong 24 giờ. Nhưng nếu bạn từng audit hợp đồng ICO năm 2017 như tôi, bạn sẽ biết: backdoor không bao giờ là lỗi, là chủ ý. Và SecureAudit chính là cái tên từng xuất hiện trong báo cáo về vụ rug pull của ArtHeart NFT năm 2021 mà tôi đã công khai tố cáo.
Bối cảnh: CryptoGuard là một giao thức yield farming ra mắt vào tháng 1 năm nay, huy động được 8 triệu USD từ các quỹ đầu tư. Họ hứa hẹn một cơ chế tái phân phối phí minh bạch, an toàn hơn các đối thủ. Tuy nhiên, cộng đồng ban đầu nghi ngờ vì mã nguồn chưa được audit công khai. Việc ký hợp đồng với SecureAudit – một công ty có lịch sử audit cho ít nhất 3 dự án sau đó sụp đổ vì lỗi hợp đồng – là một tín hiệu đỏ mà tôi không thể bỏ qua.

Tôi đã dành 3 ngày để đọc lại các báo cáo audit cũ của SecureAudit, kết hợp với mã nguồn CryptoGuard mà tôi tự clone từ GitHub. Kết quả: Một hàm emergencyWithdraw không có cơ chế kiểm soát đa chữ ký, chỉ phụ thuộc vào một địa chỉ owner duy nhất. Đây là chính xác kiểu backdoor mà tôi đã tìm thấy trong hợp đồng BlockVault năm 2017. 20 ETH mất vì một chiếc hợp đồng cười – tôi đã mất 20 ETH vì lỗi tương tự trong YAM Finance, và tôi không muốn bất kỳ ai lặp lại điều đó.
Phân tích kỹ thuật: Hàm emergencyWithdraw cho phép owner rút toàn bộ token từ pool trong vòng 30 ngày sau khi kích hoạt. SecureAudit đã xác nhận hàm này an toàn với lý do “owner là multisig đã được xác thực”. Nhưng theo kinh nghiệm audit của tôi, multisig không đảm bảo gì nếu các signer không được công khai hoặc có thể bị thay đổi qua một hàm khác. Trong mã CryptoGuard, tôi tìm thấy một hàm changeOwner chỉ yêu cầu chữ ký của owner hiện tại. Điều này tạo ra một vector tấn công: nếu owner bị compromise (ví dụ qua phishing), kẻ tấn công có thể chiếm quyền kiểm soát và kích hoạt emergencyWithdraw. SecureAudit đã bỏ qua điều này? Tôi nghi ngờ có xung đột lợi ích: một trong những đối tác đầu tư của CryptoGuard cũng là cổ đông của SecureAudit.

Phần contrarian: Phe bò sẽ nói rằng hàm emergencyWithdraw cần thiết cho trường hợp khẩn cấp, và SecureAudit có uy tín lâu năm. Tôi đồng ý với nhu cầu cấp thiết, nhưng thiết kế không có cơ chế kiểm soát cộng đồng là vô trách nhiệm. Một giải pháp đơn giản: yêu cầu thời gian chờ 48 giờ trước khi rút, kết hợp với thông báo trên mạng xã hội. Điều này không tồn tại trong mã hiện tại. Còn về uy tín, hãy nhìn vào lịch sử: SecureAudit từng audit cho giao thức YieldGuard, và hai tuần sau audit, YieldGuard bị khai thác 2 triệu USD vì một lỗi tương tự. Đây không phải lỗi kỹ thuật, mà là sự thiếu trung thực trong quy trình.
Takeaway: CryptoGuard vẫn có thể là một dự án tốt nếu họ thay đổi cơ chế khẩn cấp. Nhưng với hợp đồng kiểm toán hiện tại, tôi khuyên nhà đầu tư nên rút thanh khoản và chờ báo cáo audit độc lập từ một công ty khác. Thị trường tăng đang che giấu quá nhiều lỗi kỹ thuật. Đừng để FOMO khiến bạn mất tiền. Tôi sẽ tiếp tục theo dõi và cập nhật nếu có thêm bằng chứng.