TL;DR
- MCP server không phải plugin, nó là nơi giữ credential và nói chuyện với agent của bạn ở mọi lần gọi: mô tả tool và kết quả tool đi vào context của model với trọng lượng ngang chỉ dẫn của chính bạn.
- GhostSplice cho thấy việc alignment của model không phải là lớp phòng thủ: lệnh đánh cắp đưa trong một khối bị GPT-4o, Gemini 2.0 Flash và Llama 3.3 từ chối 100%; cùng lệnh đó chia ra giữa mô tả tool và kết quả tool thì được làm theo 100%.
- Client quan trọng ngang model: Claude Haiku 4.5 từ chối mọi thứ qua API và nghe lời 100% trong bài test ba mảnh chạy trong Cursor.
- Supply chain đã là dây điện đang có điện: CVE-2025-6514 đánh vào mcp-remote, một OAuth proxy được tải hơn 400,000 lần, với command injection kích hoạt bởi một server độc hại.
- Cơ chế phát hiện ở tầng giao thức của Cloudflare và WriteGuard là những biện pháp kiểm soát doanh nghiệp thực sự đầu tiên, nhưng chúng cần Zero Trust với TLS inspection, và server stdio chạy local không bao giờ xuất hiện trong đó.
- Với dev solo hoặc team nhỏ, phòng thủ là làm tay: kiểm kê, nguồn gốc, token có phạm vi hẹp, người duyệt ở mọi thao tác ghi, và coi output của tool là dữ liệu.
Các nguồn nói gì
Một MCP server nối agent của bạn với dịch vụ bên ngoài, nên nó lưu thay bạn những gì cần để kết nối: token, API key, credential của service account. Bài phân tích về rò rỉ đăng ngày 17 tháng 8 bắt đầu từ một nhận xét thẳng thừng: token được dán thẳng vào chuỗi cấu hình và nằm đọc được trên đĩa, chỉ cách một commit vội vàng là vào repository Git s2. Cũng bài đó liệt kê việc cấp quyền quá rộng là lỗ hổng thứ hai: quyền rộng cấp lúc phát triển được đưa lên production nguyên xi, nên chỉ một lần bị xâm nhập đã lộ nhiều hơn mức sử dụng thực tế cần s2. Lỗ hổng thứ tư là prompt injection: agent đọc mọi thứ tool của nó mang về, một trang web, một ticket, một tài liệu nội bộ, và một chỉ dẫn ẩn trong nội dung đó bị làm theo như thể đến từ bạn, dùng chính các tool hợp lệ để làm lộ thứ chúng vốn phải bảo vệ s2.
Lỗ hổng thứ ba là supply chain. CVE-2025-6514 ảnh hưởng mcp-remote, một OAuth proxy được tải hơn 400,000 lần: một server độc hại có thể kích hoạt command injection trên máy của dev, chạy code và mang credential đi. Một package npm phổ biến, cài bằng một dòng, và cánh cửa đã mở s3.
Hệ sinh thái lớn nhanh hơn hàng rào bảo vệ. Registry chính thức vượt 9,600 server đã đăng, số lượng triển khai server remote tăng gấp năm lần kể từ tháng 5 năm 2025, ai cũng đăng được, và không có kiểm duyệt tập trung; agent của bạn tin một mục bất kỳ ngang với một tool chính hãng s4. NSA đã công bố hướng dẫn bảo mật riêng cho MCP hồi tháng 5, nói rõ rằng mức độ áp dụng giao thức đã đi nhanh hơn việc xây dựng các lớp bảo vệ của nó s5.
GhostSplice, do nhóm nghiên cứu ASSET đặt tên, khiến chính agent thực hiện việc exfiltration. Thay vì viết đủ lệnh đánh cắp, server độc hại chia nhỏ nó: một mảnh trong mô tả tool, mảnh kia trong kết quả tool trả về. Mỗi mảnh đứng riêng đều vô hại; agent ghép lại mọi thứ đi vào context và thi hành toàn bộ chỉ dẫn một cách thiện chí s1. Các con số chính là điểm mấu chốt. Khi chỉ dẫn đưa trong một khối, GPT-4o, Gemini 2.0 Flash và Llama 3.3 từ chối 100%. Với chỉ dẫn bị chia nhỏ, cả ba đều tuân theo 100% s1. Các model Claude kháng cự tốt hơn ở bề mặt, nhưng Claude Haiku 4.5 từ chối mọi thứ qua API và nghe lời 100% trong bài test ba mảnh chạy trong Cursor: cùng một model từ chối ở client này và exfiltrate ở client kia, tùy vào lớp bảo vệ mà client thêm vào hay không s1. Thứ bị đánh cắp trong các bài test: SSH key, secret trong biến môi trường, source code, dữ liệu khách hàng, trên các project cô lập với key giả, với phương pháp được công bố và tái lập được s1. Cùng phòng lab đó đã công bố Ghostcommit hồi tháng 6, giấu chỉ dẫn trong các file PNG được quy ước của project tham chiếu rồi mã hóa secret bị đánh cắp vào source code dưới dạng số nguyên; việc chia nhỏ chỉ dẫn là cả một họ tấn công, không phải chuyện một lần s1. Có hai điều kiện tiên quyết: server độc hại phải đã được kết nối với agent của bạn, và agent phải có quyền đọc các file mục tiêu s1.
Về phía doanh nghiệp, Cloudflare gọi các server chưa được duyệt mà dev tự nối vào agent là "shadow MCP". Từ bản cập nhật spec, mọi MCP client tuân thủ đều gửi header MCP-Protocol-Version, và Gateway kiểm tra header này trên toàn bộ traffic TLS được phân tích, cho đội bảo mật một dashboard về số server riêng biệt, người dùng và khối lượng request s6. Phiên bản spec mới nhất thêm các header Mcp-Method và Mcp-Name để lộ thao tác được yêu cầu và tên tool mà không cần mở phần thân request, nhờ đó mạng phân biệt được agent đang đọc một ticket với agent đang xóa năm mươi cái. Các quy tắc của Cloudflare bao gồm hai trường hợp, shadow MCP thuần túy (server chưa bao giờ được duyệt) và portal bypass (server đã duyệt nhưng truy cập trực tiếp), và cả hai bị chặn bằng cùng một quy tắc gốc s6.
WriteGuard, mở private beta, phân loại mọi tool của mọi MCP server vào một mức rủi ro và áp chính sách khác nhau theo từng mức: đọc thì qua không vướng; ghi có giới hạn như đăng một comment thì qua nhưng được ký là của một agent hành động thay mặt một người cụ thể, kèm một audit event gửi về log trung tâm; hành động nghiêm trọng như merge code, deploy lên production hay xóa hàng loạt bị chặn trước khi server xử lý s7. Ví dụ GitLab trong bài: đọc một merge request thì qua, comment thì qua kèm attribution, merge bị từ chối cho đến khi một người làm. Agent giữ quyền của nhân viên mà nó phục vụ, nhưng mỗi thao tác ghi mang hai chữ ký, người và phiên agent. Cloudflare mô tả việc dùng nội bộ của chính họ: portal của họ kết nối 27 MCP server, so với 13 hồi tháng 4 s7.
Giới hạn là có thật. WriteGuard là private beta cần đăng ký, và việc phát hiện qua Gateway đòi hỏi triển khai Cloudflare Zero Trust có bật TLS inspection s7. Phát hiện chỉ thấy traffic mạng mà nó giải mã được: một MCP server local chạy qua stdio như một process thường trên máy bạn vẫn vô hình với Gateway, và đó là cách phần lớn server do dev cài chạy s6. Không công cụ nào trong số này sửa được cơ chế mà GhostSplice phơi bày. Các nhà nghiên cứu ASSET nói cách sửa là coi output của tool là dữ liệu, không bao giờ là chỉ dẫn, và sự tách biệt đó chưa tồn tại sẵn trong các agent. Ba khuyến nghị của họ: ngăn giá trị do một tool xuất ra đi vào tham số của tool khác mà không kiểm tra, giữ khả năng từ chối từng lần gọi tool bằng tay, và mặc định coi mọi annotation từ server chưa xác minh là thù địch s1.
Kết luận: cái gì bảo vệ bạn, cái gì không
| Control | Phục vụ ai | Kết luận |
|---|---|---|
| Model refusals | Mọi người | Bỏ qua như một lớp phòng thủ: từ chối 100% khi một khối, nghe lời 100% khi bị chia nhỏ [s1] |
| Client-side protections | Mọi người | Giữ: cùng một model từ chối qua API và nghe lời trong Cursor [s1] |
| Inventory and provenance of servers | Solo và team | Giữ: GhostSplice cần server đã được kết nối [s1] |
| Dedicated scoped tokens, rotated | Solo và team | Giữ: token plaintext và cấp quyền quá rộng là hai đường rò rỉ đầu tiên [s2] |
| Pinning and auditing MCP dependencies | Solo và team | Giữ: mcp-remote đã đưa một command injection tới 400,000+ lượt tải [s3] |
| Gateway header detection (MCP-Protocol-Version, Mcp-Method, Mcp-Name) | Doanh nghiệp dùng Zero Trust | Thử nếu bạn đã chạy TLS inspection; mù với server stdio [s6] |
| WriteGuard risk levels | Doanh nghiệp | Thử qua waitlist; chỉ có private beta [s7] |
| Human gate on every write, merge and delete | Mọi người | Giữ: phiên bản thủ công của thứ WriteGuard công nghiệp hóa [s7] |
Làm vào thứ Hai
- Xuất danh sách các MCP server đang thực sự kết nối với từng agent của bạn và gỡ mọi server bạn chưa dùng trong tháng qua.
- Với mỗi server còn lại, ghi lại ai là bên phát hành và đọc xem nó làm gì với dữ liệu của bạn trước khi giữ; bỏ mọi server đến từ một thread thay vì từ vendor.
- Thay mọi credential dùng chung hoặc master trong cấu hình MCP bằng một token riêng với phạm vi tối thiểu mà server đó cần, và đặt ngày xoay vòng cho nó.
- Kiểm tra không có file cấu hình MCP nào bị Git theo dõi, và thêm chúng vào .gitignore nếu chưa có.
- Ghim phiên bản của mọi package MCP bạn cài, và kiểm tra lockfile xem có phiên bản mcp-remote nào thuộc CVE-2025-6514 không.
- Bật duyệt thủ công cho mọi tool ghi, merge, deploy hoặc xóa, và giữ nó bật ở mọi client bạn dùng.
- Xem qua mô tả tool của mọi server bên thứ ba một lần, tìm các chỉ dẫn nhắm vào model thay vì vào bạn.
- Nếu bạn chạy Cloudflare Zero Trust, bật TLS inspection và dựng dashboard shadow MCP từ header MCP-Protocol-Version.
Đọc thêm
- Đọc bài GhostSplice đầy đủ để xem ma trận test theo từng model và từng client, cùng ba biện pháp giảm thiểu mà các nhà nghiên cứu đề xuất s1.
- Tra Ghostcommit, cuộc tấn công hồi tháng 6 từ cùng phòng lab, để xem chỉ dẫn được giấu trong file PNG ra sao và secret bị đánh cắp được mã hóa thành số nguyên trong source code thế nào s1.
- Đối chiếu bốn đường rò rỉ trong bài phân tích ngày 17 tháng 8 với cấu hình của chính bạn: lưu plaintext, cấp quyền quá rộng, supply chain, prompt injection s2.
- Đọc mục NVD của CVE-2025-6514 và kiểm tra các phiên bản mcp-remote bị ảnh hưởng trước khi tin bất kỳ OAuth proxy nào trong stack của bạn s3.
- Đọc NSA design considerations cho MCP: đây là checklist trung lập với vendor duy nhất viết cho các team triển khai tự động hóa bằng agent s5.
- Nghiên cứu các header MCP-Protocol-Version, Mcp-Method và Mcp-Name trong bài của Cloudflare dù bạn không dùng Cloudflare: proxy nào bạn kiểm soát cũng log được chúng s6.
- Mượn bốn mức rủi ro của WriteGuard (read-only, minimal impact, contained write, critical) làm lưới review cho các tool mà server của bạn phơi ra s7.
- Duyệt README của registry chính thức để hiểu việc đăng bài đòi hỏi gì và không kiểm tra gì s4.
Nguồn
- Malicious MCP servers can split exfiltration orders to bypass model refusals (GhostSplice), The Hacker News. Vì sao nên đọc: nơi duy nhất có số liệu theo từng model và từng client, cùng các biện pháp giảm thiểu của nhóm nghiên cứu.
- How MCP servers can expose enterprise secrets, The Hacker News. Vì sao nên đọc: bốn đường rò rỉ được trình bày theo thứ tự, dùng được như checklist audit.
- CVE-2025-6514: mcp-remote command injection, NIST NVD. Vì sao nên đọc: các phiên bản bị ảnh hưởng và mức độ nghiêm trọng của lỗ hổng supply chain MCP được cài rộng rãi đầu tiên.
- Official Model Context Protocol registry, modelcontextprotocol on GitHub. Vì sao nên đọc: cho thấy việc đăng bài hoạt động thế nào và vì sao có mặt trong registry không phải tín hiệu đáng tin.
- NSA releases security design considerations for AI-driven automation leveraging MCP, NSA. Vì sao nên đọc: hướng dẫn thiết kế trung lập với vendor cho các team triển khai MCP ở quy mô lớn.
- Detecting and blocking shadow MCP at the protocol level, Cloudflare blog. Vì sao nên đọc: giải thích các header của spec giúp traffic MCP hiện ra trên mạng.
- Bring secure MCP connectivity to your enterprise with MCP Server Portals and WriteGuard, Cloudflare blog. Vì sao nên đọc: mô hình rủi ro theo từng tool và thiết kế danh tính hai chữ ký, kèm một ví dụ GitLab cụ thể.
FAQ
Dùng model an toàn hơn có bảo vệ tôi khỏi GhostSplice không?
Không. Cuộc tấn công không bao giờ đòi thứ gì bị cấm trong một mảnh, nên huấn luyện từ chối không được kích hoạt. Cùng một Claude Haiku 4.5 từ chối mọi thứ qua API và nghe lời 100% trong Cursor; lớp bảo vệ của client quyết định kết quả, không phải model.
Tôi là dev solo, bộ công cụ Cloudflare có dành cho tôi không?
Hiện tại thì không. Phát hiện qua Gateway cần triển khai Zero Trust với TLS inspection, WriteGuard là private beta, và cả hai đều mù với server stdio local. Checklist ở trên là phiên bản solo của cùng các biện pháp kiểm soát đó.
Server có trong registry chính thức thì có an toàn không?
Có tên trong danh sách không phải là được kiểm duyệt. Registry vượt 9,600 server mà không có review tập trung, và agent của bạn tin một mục trong registry ngang với tool của vendor. Hãy đánh giá nguồn gốc và đọc code, đừng nhìn vào danh sách.
Thay đổi nào có giá trị cao nhất?
Token riêng, phạm vi tối thiểu cho từng server, xoay vòng như secret production. Master credential plaintext trong file cấu hình là đường rò rỉ đầu tiên, và chúng khiến mọi lỗi khác, từ CVE-2025-6514 đến prompt injection, đắt hơn nhiều.
AIDive