Bạn nghĩ AI Agent an toàn? Sai rồi.
Một POST request tới Sentry DSN, một dòng markdown độc hại, và toàn bộ credential trên máy developer – AWS keys, GitHub OAuth, npm tokens – bay vào tay kẻ tấn công. Đây không phải kịch bản sci-fi. Đây là Agentjacking, được trình diễn tại DEF CON 34 bởi Tenet Security. Và nó liên quan trực tiếp đến cách bạn vận hành bot giao dịch, quản lý private key, hay deploy smart contract.
Hãy để tôi kể cho bạn nghe.
Context: Tại sao một lỗ hổng error monitoring lại có thể hack AI Agent?
Sentry là nền tảng theo dõi lỗi phổ biến. Mỗi dự án có một DSN (Data Source Name) – về cơ bản là một URL cho phép gửi log lỗi lên. Vấn đề: DSN không cần xác thực. Bất kỳ ai biết DSN đều có thể POST dữ liệu lên Sentry. Và DSN thường bị leak trong source code, commit log, hay file cấu hình.
AI coding agent như Cursor, Claude Code tích hợp MCP (Model Context Protocol) để đọc dữ liệu từ Sentry. Khi developer bảo agent: “Debug lỗi này”, agent sẽ query Sentry, lấy issue mới nhất, và… đọc markdown mô tả lỗi. Nếu kẻ tấn công đã gửi một lỗi giả chứa câu lệnh độc hại (ví dụ: “npm install malicious-package”), agent sẽ coi đó là hướng dẫn sửa lỗi và thực thi.
Đó là toàn bộ attack chain. Không cần zero-day, không cần social engineering cầu kỳ. Chỉ cần một DSN public và một POST request.
Core: Phân tích kỹ thuật – Tại sao chain này lại hoạt động?
Tenet đã quét toàn bộ internet và phát hiện 2,388 tổ chức có DSN công khai, trong đó có 71 trang nằm trong top 1 triệu web, và khoảng 27% Fortune 1000 sử dụng Cloudflare MCP. Họ thử nghiệm trên 100+ tổ chức và đạt 85% tỷ lệ thành công. Con số này không phải ngẫu nhiên.
Tại sao agent lại tin tưởng dữ liệu từ Sentry? Vì kiến trúc MCP hiện tại không phân biệt được “dữ liệu” và “chỉ thị”. Agent xem mọi thứ từ tool/output là context. Nếu context chứa câu lệnh “sửa lỗi bằng cách chạy lệnh này”, agent sẽ làm theo. Đây là Indirect Prompt Injection – một dạng tấn công đã được biết đến, nhưng lần này nó kết hợp với error monitoring pipeline, biến một công cụ debug thành vũ khí.
Các bước cụ thể: 1. Kẻ tấn công tìm DSN public (trên GitHub, npm, etc.). 2. POST một error event giả với nội dung markdown chứa payload. 3. Developer yêu cầu agent debug Sentry issue. 4. Agent query Sentry, nhận về issue giả, đọc markdown. 5. Agent giải thích rằng cần chạy lệnh (ví dụ: npm install) để sửa. 6. Developer approve (hoặc agent tự động chạy nếu được cấu hình). 7. Malicious package cài đặt, đánh cắp credential.
Một lỗ hổng không cần khai thác phức tạp, chỉ cần một POST request.
Sentry đã triển khai content filter chặn các payload cụ thể, nhưng đó là giải pháp kiểu “IoC string blacklist” – dễ bypass. Tenet phát hành agent-jackstop, một bộ cấu hình bảo vệ cho Cursor và Claude Code: network whitelist, command approval, credential isolation, và coi tool output như untrusted data. Nhưng tất cả chỉ là giảm thiểu, không giải quyết gốc rễ.
Contrarian: Góc nhìn ngược – Đây không phải lỗi của AI, mà là lỗi thiết kế hệ thống
Nhiều người sẽ nói: “AI chưa đủ an toàn, đừng dùng agent coding”. Sai. Vấn đề không nằm ở model, mà nằm ở cách chúng ta kết nối agent với thế giới bên ngoài. MCP là một giao thức mở, nhưng nó thiếu một lớp “trust boundary”. Tương tự như cross-chain bridge trong crypto – nếu bạn kết nối hai chain mà không có xác thực, hacker sẽ drain pool.

Thị trường không bao giờ sai, chỉ có lệnh của mày sai. Ở đây, lệnh sai là tin tưởng mọi dữ liệu từ tool. Các nhà phát triển MCP cần thêm cơ chế: output signing, data classification, instruction hierarchy. Nhưng điều đó sẽ mất nhiều thời gian.
85% thành công trong phòng thí nghiệm, nhưng ngoài đời thực, tỷ lệ đó còn cao hơn khi con người lười. Developer thường approve mà không đọc kỹ. Agent thì tự động hóa mọi thứ. Kết hợp: recipe for disaster.

Sentry nói 'không thể sửa' - đó là tín hiệu rõ nhất: đừng đặt niềm tin vào một nền tảng không chịu trách nhiệm. Sentry từ chối thay đổi cơ chế xác thực vì nó ảnh hưởng đến core product. Họ chọn content filter – một miếng băng cá nhân. Điều này có nghĩa: nếu bạn dùng Sentry, bạn đang chấp nhận rủi ro. Giống như dùng một bridge không có audit.

Takeaway: Hành động cho thị trường crypto
Nếu bạn đang chạy bot giao dịch AI, deploy agent trên mạng lưới blockchain, hay sử dụng các công cụ AI để quản lý private key, hãy tự hỏi: - Agent của bạn có đọc dữ liệu từ bất kỳ nguồn bên ngoài nào không? (Discord, Telegram, website, error log?) - Bạn có cơ chế nào để phân biệt dữ liệu và lệnh? - Bạn có network isolation và command approval không?
Agentjacking không chỉ là vấn đề của AI coding. Nó là vấn đề của mọi hệ thống kết nối agent với external data. Trong crypto, nơi private key và signing là tài sản sống còn, một lỗ hổng như thế này có thể dẫn đến mất mát hàng triệu USD.
Khi dữ liệu và lệnh không còn ranh giới, AI Agent là con dao hai lưỡi. Hãy chuẩn bị sẵn sàng. Hoặc trở thành nạn nhân tiếp theo.