
Plugin4Shell và CVE-2026-42559: hai lỗ hổng agent cần vá
Ghim SHA không chặn được Plugin4Shell trên bốn coding agent, còn rmcp dưới 1.4.0 dính DNS rebinding điểm 8.8. Hai việc cần làm ngay hôm nay.
Hai lỗ hổng công bố trong tuần đều nhắm vào cùng một điểm mù: agent tin vào thứ nó yêu cầu, không phải thứ nó thực sự nhận được.
Plugin4Shell: ghim SHA không có nghĩa là an toàn
Theo bài phân tích trên Dev.to, AIR Security công bố một lỗi zero-click RCE ảnh hưởng tới bốn coding agent: "AIR Security disclosed a zero-click RCE affecting Claude Code, OpenAI Codex, GitHub Copilot and Gemini CLI."
Câu hỏi mở đầu của bài viết tóm gọn vấn đề: "What if an AI coding agent verifies the request for a specific commit, but never verifies the code it actually checked out?"
Cơ chế không nằm ở prompt mà nằm ở Git. Nguồn mô tả: "An attacker-controlled repository can exploit reference resolution so that a supposedly pinned plugin resolves to malicious code instead." Nói cách khác, bạn ghim plugin theo commit SHA, agent xác nhận đã yêu cầu đúng SHA đó, nhưng mã được checkout lại là mã khác.
Đây là lý do việc ghim phiên bản — thói quen bảo mật cơ bản nhất khi cài plugin — không đủ một mình. Nguồn kết luận: "AI agent security increasingly extends into the software supply chain."
CVE-2026-42559: MCP server trên máy bạn nghe cả web
Lỗi thứ hai cụ thể hơn và có bản vá rõ ràng. Theo bản ghi CVE, thành phần bị ảnh hưởng là "rmcp (official Rust SDK for the Model Context Protocol)", phiên bản "rmcp < 1.4.0", đã vá ở "rmcp >= 1.4.0 (commit 8e22aa2, PR #764)", với điểm "CVSS 3.1 8.8 (High)".
Nguyên nhân chỉ là một bước kiểm tra bị thiếu. Nguồn viết: "prior to 1.4.0, the Streamable HTTP transport never validated the incoming Host header at all". Hậu quả: "That single missing check, combined with a DNS rebinding attack, is enough for a malicious web page to invoke arbitrary tools on a locally running MCP server the moment a victim opens it in a browser."
Mức độ nghiêm trọng đến từ chỗ MCP server chạy ở đâu và cầm những gì. Theo nguồn, server dựng bằng SDK này "almost always run on a developer's own machine (127.0.0.1), exposing powerful tools — filesystem access, shell execution, browser control — over that loopback interface."
Kịch bản tấn công dựa trên DNS rebinding: kẻ tấn công đặt TTL rất ngắn — nguồn nêu ví dụ 1 giây — cho một domain họ kiểm soát, để lần phân giải thứ hai trỏ về 127.0.0.1 trong khi trình duyệt vẫn coi đó là cùng origin.
Việc cần làm hôm nay
- Nâng rmcp lên 1.4.0 trở lên nếu dự án của bạn dựng MCP server bằng Rust SDK. Đây là hành động có bản vá xác định, làm trước.
- Kiểm tra Host header ở mọi MCP server HTTP tự viết. Nguồn chỉ rõ cách chặn: so Host với danh sách tên được công nhận như
localhost,127.0.0.1và từ chối phần còn lại. - Rà lại plugin đã cài trong coding agent. Nếu bạn đang dùng Claude Code, Codex, Copilot hay Gemini CLI với plugin từ repo bên ngoài, coi việc ghim SHA là chưa đủ và theo dõi thông báo vá từ nhà cung cấp.
- Chạy MCP server ở cổng và tài khoản riêng. Loopback không phải ranh giới bảo mật khi trình duyệt có thể bị điều hướng tới đó.
Điểm chung của hai lỗi: cả hai đều không cần người dùng bấm gì. Với agent có quyền đọc file và chạy lệnh, một bước kiểm tra bị bỏ qua đủ để biến một tab trình duyệt thành shell trên máy bạn.
Không spam, hủy đăng ký bất kỳ lúc nào.


