Mỗi lần kiểm toán là một lần tôi đặt câu hỏi: “Tại sao cùng một mô hình, cùng một payload, nhưng tỷ lệ tấn công thành công lại chênh lệch đến 2.6 lần chỉ vì framework khác nhau?”
Đầu tháng 8, tôi tình cờ đọc được báo cáo SADF từ nhóm nghiên cứu Julie Brunias. Một bài báo kỹ thuật dài, đầy số liệu, nhưng nó được đăng trên một nguồn tin blockchain/Web3 – điều kỳ lạ với một nghiên cứu về AI Agent. Tôi mở tab, bắt đầu đọc. Và rồi tôi nhận ra: đây không chỉ là một cảnh báo về AI, mà còn là một bài học trực tiếp cho những ai đang xây dựng hệ thống DeFi tích hợp agent.
Context: Tại sao một auditor blockchain lại quan tâm đến AI Agent?
Ba năm qua, tôi chứng kiến hàng chục dự án DeFi tích hợp “AI Agent” để tự động hóa swap, quản lý danh mục, hay thậm chí là điều hành DAO. Họ dùng LangChain, CrewAI, AutoGen – những framework mà tôi từng nghĩ là an toàn vì đã được kiểm tra bởi cộng đồng AI. Nhưng SADF chỉ ra một sự thật phũ phàng: bảo mật của Agent không nằm ở mô hình ngôn ngữ, mà nằm ở lớp orchestration – lớp mà hầu hết auditor blockchain (kể cả tôi) thường bỏ qua.
Nghiên cứu cố định mô hình Claude Sonnet, so sánh Direct API với bốn framework: CrewAI, LangChain, AutoGen, SmolAgents. Kết quả: Direct API chỉ 15.5% Attack Completion Rate (ACR), nhưng SmolAgents lên tới 31.1% – gấp đôi. Còn CrewAI, với kiến trúc task isolation, đạt 11.9% – thậm chí thấp hơn cả Direct API. Sự khác biệt này đến từ đâu? Không phải từ model, mà từ cách framework xử lý tool call, memory, và context boundary.
Core: Phân tích kỹ thuật – Lớp tấn công mà DeFi đang lờ đi
SADF đã xây dựng 5,119 dòng đánh giá với 32 payload, phủ 8 failure mode: Tool Call Hijacking, Output Poisoning, Cross-Tool Injection, Memory Poisoning, RAG Poisoning, Delegated Authority Abuse, Multi-Agent Propagation, Context Boundary Violation. Tôi lập tức liên tưởng đến các lỗ hổng trong smart contract: reentrancy, access control, oracle manipulation. Nhưng ở đây, mỗi failure mode lại có một biến thể mới khi kết hợp với framework.
Ví dụ: Cross-Tool Injection – một agent có thể bị lừa gọi tool A thay vì tool B, giống như một attacker lợi dụng delegatecall trong Solidity để chuyển hướng luồng thực thi. Nhưng trong Agent, nó còn nguy hiểm hơn vì tool có thể là một API bên ngoài (ví dụ: gọi swap trên Uniswap). Nếu framework không kiểm tra chặt chẽ input, attacker có thể inject lệnh “chuyển toàn bộ token đến địa chỉ của tôi”.
Điểm đáng chú ý: nghiên cứu phát hiện rằng phương pháp đánh giá naïve (substring matching) đã overestimate ACR lên 4-6 lần cho Claude. Họ đã sửa bằng refusal-filtered scoring. Điều này nhắc tôi về những lần audit token swap: nếu chỉ test happy path, bạn sẽ bỏ lỡ các edge case dẫn đến mất tiền.
Contrarian: Điểm mù – Khi framework an toàn nhất lại là cái bẫy
CrewAI đạt ACR thấp nhất (11.9%), nhưng điều đó có nghĩa là nó an toàn tuyệt đối? Không. Nghiên cứu chỉ ra rằng CrewAI có cơ chế task isolation tốt, nhưng chính sự cô lập đó lại tạo ra một điểm mù: nếu một task bị nhiễm độc, nó có thể lan sang các task khác thông qua memory poisoning. Trong DeFi, tôi đã thấy pattern tương tự: một smart contract vault có access control tốt, nhưng nếu oracle bị tấn công, toàn bộ pool có thể bị drain.
Hơn nữa, SmolAgents với ACR 31.1% và unique RAG Poisoning (20%) cùng Context Boundary Violation (64%) cho thấy rằng framework càng linh hoạt, càng dễ bị khai thác. Điều này trái ngược với suy nghĩ “càng modular càng an toàn”. Trong thực tế, mỗi module mới là một attack surface mới.
Takeaway: Tương lai của bảo mật DeFi – Từ smart contract đến Agent orchestration
Tôi dự đoán trong vòng 12 tháng tới, các dự án DeFi sử dụng AI Agent sẽ phải đối mặt với một làn sóng audit mới: audit framework layer. Giống như khi Uniswap V2 ra đời, tôi đã viết bộ test 50 trường hợp biên để phát hiện lỗi tính phí. Bây giờ, tôi sẽ phải viết bộ test cho từng framework – kiểm tra tool call boundary, memory isolation, và cross-agent propagation.
Câu hỏi còn bỏ ngỏ: Liệu các framework như LangChain có sẵn sàng public báo cáo security review của họ? Hay họ sẽ im lặng, để mặc cho auditor như tôi phải tự mò mẫm? Mỗi lần kiểm toán là một lần tôi đặt câu hỏi: “Chúng ta đã kiểm tra đủ chưa?”