CVE-2026-103091: Google Agent Mesh (SAM) deja que cualquier token OIDC se enrole y ejecute tools MCP
SAM, la mesh open source de Google para conectar agentes, servidores MCP, A2A y endpoints de inferencia, tenía un default inseguro en el proxy MCP (HandleStreamPassThrough) y en el flujo de registro OIDC. GET /info expone la configuración OIDC y POST /register enrola a cualquiera con un token OIDC válido, sin filtrar claims ni chequear bans. Encima, la policy por defecto ata sam:system:authenticated a servicios y targets wildcard, así que el atacante sale con lectura, escritura y ejecución completas sobre los backends MCP conectados. CVSS v4 9.3. Afecta 0.1.0-alpha.1 a alpha.8; arreglado en 0.1.0-alpha.9, que pasa a fail-closed y exige bindings de policy explícitos al enrolar. Ojo con esto: si lo corriste en alpha, revisá quién se enroló.
CVE-2026-102503: el ingress /libp2p-http de Google SAM se saltea la policy Biscuit
Segundo CVE de SAM publicado el mismo día. El handler del stream MCP sí valida tokens Biscuit, pero la ruta paralela /libp2p-http no verificaba ni el token ni el enrolamiento en la mesh. Resultado: cualquier peer libp2p sin autenticar podía invocar servicios backend registrados, incluyendo servidores MCP con transporte command/stdio, A2A y endpoints de inferencia. CVSS v4 9.3. Afecta 0.1.0-alpha.1 a alpha.2; arreglado en 0.1.0-alpha.3. Es el clásico control aplicado en una puerta y olvidado en la de al lado.
CVE-2026-105192: LMCache ejecuta pickle.loads sobre mensajes ZMQ sin autenticar
LMCache, la capa de KV cache que se usa junto a vLLM, abre en modo multiproceso (distribuido) un socket ZeroMQ ROUTER sin CURVE, ZAP ni ningún tipo de autenticación. Los mensajes son msgpack, y el extension code 1 termina en DeviceIPCWrapper.Deserialize, que llama a pickle.loads mientras decodifica los argumentos de REGISTER_KV_CACHE, antes de que corra el handler. Un solo mensaje DEALER al puerto 5555 ejecuta código, y las imágenes oficiales corren como root. El 9.8 aplica cuando el operador bindea a una dirección enrutable con --host (el caso multi-nodo); el default en localhost y LMCache embebido en vLLM no abren ese puerto. Afecta 0.3.9 a 0.5.5; parcheado en 0.5.6. Otra vez pickle sobre la red.
CVE-2026-96620: el Claude Agent SDK para Python dejaba inyectar --mcp-config a través de resume
El SDK le pasaba la opción resume al CLI de Claude sin validar, así que un valor que empezaba con - se interpretaba como otro flag. Un atacante que controlara el ID de sesión podía inyectar --mcp-config con un servidor MCP stdio y lograr ejecución de comandos arbitrarios al arrancar el CLI, salteando los controles de permisos del SDK. Solo aplica si tu app pasa input no confiable como session ID a resume, que es justo lo que pasa cuando el ID viaja en un query param o un header. CVSS v4 9.2. Afecta claude-agent-sdk < 0.2.121; actualizá a 0.2.121. Reportado vía HackerOne.
Tendencias Destacadas
La capa que conecta agentes es el nuevo blanco: una mesh de agentes con defaults abiertos y un SDK que deja colar un servidor MCP vía un flag. En ambos casos el atacante no rompe el modelo, se mete por la plomería que decide qué tools corren.
Pickle sobre la red sigue apareciendo en infra de inferencia: LMCache se suma a la lista de componentes distribuidos que deserializan antes de autenticar. Si un servicio de KV cache escucha fuera de localhost, asumí que necesita red aislada.
CVE-2026-103091: Google Agent Mesh (SAM) lets any OIDC token holder enroll and run MCP tools
SAM, Google's open-source mesh for wiring together agents, MCP servers, A2A and inference endpoints, shipped an insecure default in its MCP proxy (HandleStreamPassThrough) and OIDC registration flow. GET /info exposes the OIDC configuration and POST /register enrolls anyone holding a valid OIDC token, with no claim filtering or ban checks. On top of that, the default policy binds sam:system:authenticated to wildcard services and targets, so the attacker walks away with full read, write and execute access to connected MCP backends. CVSS v4 9.3. Affects 0.1.0-alpha.1 through alpha.8; fixed in 0.1.0-alpha.9, which fails closed and requires explicit policy bindings at enrollment. If you ran an alpha build, audit who enrolled.
CVE-2026-102503: Google SAM's /libp2p-http ingress skips Biscuit policy enforcement
SAM's second CVE published the same day. The MCP protocol stream handler enforces Biscuit auth, but the parallel /libp2p-http ingress route never checked a Biscuit token or mesh enrollment. Any unauthenticated libp2p peer could invoke registered backend services, including command/stdio-backed MCP servers, A2A and inference endpoints. CVSS v4 9.3. Affects 0.1.0-alpha.1 through alpha.2; fixed in 0.1.0-alpha.3. A textbook case of a control enforced on one door and forgotten on the one next to it.
CVE-2026-105192: LMCache runs pickle.loads on unauthenticated ZMQ messages
LMCache, the KV-cache layer commonly deployed alongside vLLM, opens an unauthenticated ZeroMQ ROUTER in multiprocess (distributed) mode, with no CURVE, ZAP or message authentication. Messages are msgpack, and extension code 1 is routed to DeviceIPCWrapper.Deserialize, which calls pickle.loads while decoding REGISTER_KV_CACHE arguments, before the handler even runs. A single DEALER message to port 5555 executes code, and the official container images run as root. The 9.8 score covers a routable bind via --host (the multi-node setup); the default localhost bind and LMCache embedded inside vLLM do not open the port. Affects 0.3.9 through 0.5.5; patched in 0.5.6. Pickle on the wire, again.
CVE-2026-96620: Claude Agent SDK for Python allowed --mcp-config injection through resume
The SDK passed the resume option to the Claude CLI without validation, so a value starting with - was parsed as a separate flag. An attacker who controlled the session ID could inject --mcp-config defining a stdio MCP server and get arbitrary command execution at CLI startup, bypassing the SDK's permission controls. It only applies when your app passes untrusted input as the session ID to resume, which is exactly what happens when that ID travels in a query parameter or header. CVSS v4 9.2. Affects claude-agent-sdk < 0.2.121; upgrade to 0.2.121. Reported through HackerOne.
Notable Trends
The layer that wires agents together is the new target: an agent mesh with open defaults and an SDK that let an MCP server slip in through a flag. In both cases the attacker never touches the model; they get in through the plumbing that decides which tools run.
Pickle over the network keeps turning up in inference infrastructure: LMCache joins the list of distributed components that deserialize before they authenticate. If a KV-cache service listens beyond localhost, assume it needs an isolated network.
CVE-2026-103091 : Google Agent Mesh (SAM) laisse tout détenteur d'un jeton OIDC s'enrôler et exécuter des outils MCP
SAM, le mesh open source de Google reliant agents, serveurs MCP, A2A et endpoints d'inférence, avait un défaut non sécurisé dans son proxy MCP (HandleStreamPassThrough) et son flux d'enregistrement OIDC. GET /info expose la configuration OIDC et POST /register enrôle tout détenteur d'un jeton OIDC valide, sans filtrage des claims. La policy par défaut lie sam:system:authenticated à des services et cibles wildcard, donnant lecture, écriture et exécution complètes sur les backends MCP. CVSS v4 9.3. Versions 0.1.0-alpha.1 à alpha.8 ; corrigé en 0.1.0-alpha.9.
CVE-2026-102503 : l'ingress /libp2p-http de Google SAM contourne la policy Biscuit
Deuxième CVE de SAM publiée le même jour. Le handler du flux MCP applique l'authentification Biscuit, mais la route parallèle /libp2p-http ne vérifiait ni jeton ni enrôlement. Tout pair libp2p non authentifié pouvait invoquer les services backend enregistrés, y compris des serveurs MCP stdio, A2A et des endpoints d'inférence. CVSS v4 9.3. Versions 0.1.0-alpha.1 à alpha.2 ; corrigé en 0.1.0-alpha.3.
CVE-2026-105192 : LMCache exécute pickle.loads sur des messages ZMQ non authentifiés
LMCache, la couche de KV cache souvent déployée avec vLLM, ouvre en mode multiprocessus (distribué) un socket ZeroMQ ROUTER sans CURVE, ZAP ni authentification. Les messages sont en msgpack, et le code d'extension 1 aboutit à DeviceIPCWrapper.Deserialize, qui appelle pickle.loads pendant le décodage des arguments de REGISTER_KV_CACHE. Un seul message DEALER vers le port 5555 exécute du code, et les images officielles tournent en root. Le score 9.8 vise un bind routable via --host. Versions 0.3.9 à 0.5.5 ; corrigé en 0.5.6.
CVE-2026-96620 : le Claude Agent SDK Python permettait d'injecter --mcp-config via resume
Le SDK transmettait l'option resume au CLI Claude sans validation : une valeur commençant par - était interprétée comme un autre flag. Un attaquant contrôlant l'ID de session pouvait injecter --mcp-config définissant un serveur MCP stdio et obtenir l'exécution de commandes arbitraires au démarrage du CLI, en contournant les contrôles de permissions du SDK. Ne concerne que les apps qui passent une entrée non fiable comme ID de session. CVSS v4 9.2. claude-agent-sdk < 0.2.121 ; mettez à jour vers 0.2.121.
Tendances Notables
La couche qui relie les agents devient la cible : un mesh d'agents aux défauts ouverts et un SDK qui laissait glisser un serveur MCP via un flag. Dans les deux cas, l'attaquant ne touche pas au modèle mais à la plomberie qui décide quels outils s'exécutent.
Le pickle sur le réseau revient sans cesse dans l'infrastructure d'inférence : LMCache rejoint la liste des composants distribués qui désérialisent avant d'authentifier.