Fallos en los agentes de AWS, Google y Vercel permiten a los atacantes activar herramientas sin ejecutar el modelo

La falta de prueba detrás de una llamada a herramienta

Hedi Ingber y Aviyam Ivgi, cofundadores de Stealth, presentaron hoy el patrón multiplataforma al que llaman CoreBreak en la Black Hat USA 2026. Ambos respondieron preguntas de The Hacker News por correo electrónico. En un flujo de agente normal, el kit de desarrollo envía la solicitud del usuario, el aviso del sistema, el historial de la conversación y las definiciones de herramientas disponibles al modelo. El modelo decide si llama a una herramienta y devuelve una instrucción estructurada que contiene el nombre y los argumentos de la herramienta. Luego, el SDK la ejecuta. Los caminos vulnerables no verificaban la procedencia entre esos dos últimos pasos. El tiempo de ejecución recibía datos con forma de llamada a herramienta generada por el modelo y los trataba como autoritativos. Un atacante no tenía que persuadir al modelo para que rompiera sus reglas; podía llegar a la ruta de envío o autorización sin una vuelta legítima del modelo.

AWS arregló AgentCore, pero Strands mantiene la ruta de reanudación

El boletín de seguridad de AWS asigna CVE-2026-18830, con una puntuación CVSS v4.0 de 8.6, a una validación de entrada insuficiente en el arnés de Amazon Bedrock AgentCore. Un usuario remoto autenticado podía colocar un bloque de contenido de uso de herramienta en el mensaje final de una solicitud InvokeHarness. El bucle de eventos podía entonces enviar la herramienta nombrada directamente sin preguntar al modelo. AWS dice que el problema afectó a la API gestionada InvokeHarness antes del 31 de julio de 2026. Añadió validación en el lado del servidor que rechaza los bloques de uso de herramienta proporcionados por el llamador antes de que lleguen al bucle de eventos. La mitigación se aplicó automáticamente y no requiere acción del cliente. La corrección del servicio gestionado no cubre una ruta comparable de omisión de modelo en el código abierto Strands Python, que los investigadores dicen que es la base del arnés de AgentCore. El actual event_loop.py aguas arriba llama a un ayudante llamado _has_tool_use_in_latest_message, y cuando esa verificación pasa, el bucle de eventos establece la razón de parada en tool_use, toma el último mensaje directamente y omite la ejecución del modelo. Un comentario encima de esa rama dice: "Omitir invocación del modelo si el último mensaje contiene ToolUse". The Hacker News confirmó que la rama sigue presente en la rama principal del repositorio a partir del 5 de agosto de 2026. Inmediatamente encima de la verificación hay una rama más estrecha que restaura un mensaje de uso de herramienta que el agente guardó antes de una interrupción, en lugar de tomar lo que esté en el último mensaje. Una solicitud de extracción de abril advirtió que los bloques toolUse inyectados externamente podían llegar a la ejecución de herramientas sin invocación del modelo. El cambio propuesto habría eliminado el atajo, pero se cerró sin fusionar el 19 de junio. La presencia del atajo no hace que cada aplicación Strands sea explotable remotamente. La exposición depende de si una aplicación permite a llamadores no confiables enviar mensajes de conversación estructurados, alterar el historial almacenado o colocar de otro modo un bloque toolUse en la posición consumida por el bucle de eventos. AWS no ha publicado un CVE separado, rango de versiones afectadas o aviso de parche para implementaciones independientes de Strands. Ingber y Ivgi dijeron que AWS les dijo que el comportamiento cae en el lado del cliente de su modelo de responsabilidad compartida, y que la empresa respondió con un cambio de documentación en lugar de una corrección de código. AWS documentó el comportamiento en su lugar. Una página de Strands titulada "Trusted Message History", archivada en Seguridad, dice a los desarrolladores que un bloque de llamada a herramienta como mensaje más reciente hace que el agente ejecute esa herramienta directamente en su próxima invocación sin llamada al modelo en el medio, y que el autor del bloque elige la herramienta y sus argumentos directamente. Instruye a los desarrolladores a construir el historial de mensajes desde su propia aplicación en lugar de desde una entrada que un llamador pueda moldear.

Dos rutas separadas en el ADK de Google

El primer fallo de Google, rastreado como CVE-2026-18236 con una puntuación CVSS v4.0 de 9.3, afecta a ADK para Python antes de la versión 2.5.0. ADK permite a un desarrollador marcar una herramienta sensible como que requiere confirmación, lo que retiene la llamada hasta que una persona la apruebe. Un atacante capaz de manipular o inyectar eventos en el historial de sesión de un agente podía falsificar esa aprobación y causar que una herramienta no autorizada se ejecutara. El procesador de confirmación no verificaba que la herramienta objetivo perteneciera al agente en ejecución, que la herramienta realmente requiriera confirmación, o que su nombre y argumentos coincidieran con la llamada original registrada en la sesión. El parche de Google añadió esas verificaciones. Google envió una segunda corrección relacionada en la misma versión 2.5.0 de ADK, que salió el 16 de julio de 2026. Los flujos en modo reanudable aceptaban eventos creados por el usuario que contuvieran partes function_call, que podían interpretarse como instrucciones para ejecutar herramientas registradas. Google ahora rechaza llamadas de función en mensajes creados por el usuario, evitando lo que su commit describió como omitir el LLM y ejecutar directamente herramientas registradas arbitrarias. Las notas de la versión enumeran el bypass de modo reanudable por separado del arreglo de falsificación de continuación. Los investigadores dijeron que ambos hallazgos eran suyos, y que Google emitió un CVE para falsificación de continuación porque afecta a la configuración predeterminada, mientras que el modo reanudable es una característica más nueva y no predeterminada. El registro público de CVE-2026-18236 cubre solo la ruta de falsificación de continuación, y no debe usarse como identificador general para ambos problemas.

El relé de Vercel confió en la ruta del proceso

Los hallazgos de Vercel afectan a @ai-sdk/harness-codex hasta la versión 1.0.28, rastreado como CVE-2026-64650, y a @ai-sdk/harness-opencode hasta la versión 1.0.27, rastreado como CVE-2026-64651. Ambos tienen una puntuación CVSS v4.0 de 6.3. El relé del arnés confiaba en un proceso cuando su línea de comandos contenía la ruta de un script auxiliar aprobado, host-tool-mcp.mjs en el caso de OpenCode y el shim de línea de comandos de Codex en el otro. El código malicioso ya en ejecución dentro de la caja de arena podía satisfacer esa verificación e invocar herramientas expuestas al host, incluyendo búsquedas de secretos, operaciones de despliegue y llamadas a API en la nube, sin un evento correspondiente autorizado por el modelo. Esto fue un bypass de autorización local de la caja de arena al host, una ruta diferente de la solicitud remota que AWS arregló. La explotación requería Linux, una sesión de arnés activa con al menos una herramienta proporcionada por el host, y código no confiable ya ejecutándose en la caja de arena, como una dependencia maliciosa, script de construcción o gancho de ciclo de vida. Vercel eliminó el respaldo de la ruta del proceso. El relé parcheado acepta una solicitud solo cuando coincide con una autorización exacta, de corta duración y de un solo uso para el nombre de la herramienta y la entrada observada en un evento del modelo. The Hacker News confirmó a través del registro npm que ambas versiones corregidas se publicaron el 10 de julio de 2026. Ambos paquetes han avanzado mucho desde entonces, a 1.0.60 y 1.0.59 a partir del 5 de agosto de 2026. Una corrección separada de Vercel llegó un mes antes. La solicitud de extracción 15947, fusionada el 10 de junio, endureció la ruta de reproducción de aprobación de herramientas del SDK contra aprobaciones falsificadas por el cliente, y su reconocimiento acredita a Claude, el asistente de IA de Anthropic, junto con el equipo de seguridad de Anthropic. Vercel describió los controles resultantes, aprobaciones de herramientas firmadas con HMAC opt-in y revalidación de entradas de herramientas antes de reanudar la ejecución, en las notas de la versión AI SDK 7. Ingber y Ivgi atribuyen ese hallazgo a Mythos de Anthropic, divulgado bajo Project Glasswing, más que a su propio equipo. Ambos registros CVE contienen errores. La entrada de Codex nombra el paquete de OpenCode en su descripción, y los datos estructurados de la entrada de OpenCode listan una versión corregida que su propio texto contradice. The Hacker News mapeó cada paquete a su CVE contra los dos avisos de GitHub, que indican las versiones afectadas y parcheadas directamente.

El control tiene que estar en la herramienta

Al momento de escribir esto, los avisos y registros CVE detrás de estas correcciones no abordan si alguna de las rutas se usó contra una implementación en vivo antes de que se parcheara. Ingber y Ivgi dijeron que enviaron código de prueba de concepto a los proveedores afectados y no lo han publicado públicamente. La capa de ejecución en cada caso trató los datos con forma de llamada a herramienta como autoridad suficiente. El registro de Google y ambos avisos de Vercel se clasifican bajo CWE-863, autorización incorrecta, y AWS presentó el suyo como validación de entrada inadecuada. Cualquier salvaguarda implementada solo en un aviso del sistema o respuesta del modelo desaparece cuando un llamador puede llegar a la ruta de envío sin una vuelta legítima del modelo. Los tres remedios convergen en el mismo control. Google verifica una confirmación contra la herramienta y los argumentos registrados en la sesión, Vercel vincula cada solicitud de relé a una autorización de un solo uso atada a un evento del modelo observado, y AWS rechaza el bloque de uso de herramienta del llamador antes de que el bucle de eventos lo vea. Ninguno de ellos permite que la forma de los datos entrantes sustituya a una vuelta del modelo.

  • Parchee los paquetes afectados: actualice Google ADK para Python a la versión 2.5.0 o posterior, @ai-sdk/harness-codex a 1.0.29 o posterior, y @ai-sdk/harness-opencode a 1.0.28 o posterior.
  • Rechace llamadas a herramientas creadas por el llamador: trate el historial de conversación, eventos reanudables, respuestas de confirmación y bloques estructurados de uso de herramienta como entrada no confiable cuando crucen un límite externo.
  • Autorice en el momento de la ejecución: vincule cada invocación de herramienta al evento del modelo exacto, nombre de herramienta, argumentos, sesión y estado de autorización que lo produjo.
  • Reduzca la autoridad heredada: dé a cada agente solo las herramientas, roles en la nube, credenciales y permisos de escritura necesarios para su tarea.

Esto no es inyección de prompts. No hay modelo probabilístico que engañar ni modelo más fuerte que lo resista, porque el modelo nunca tiene una vuelta.

Cybersecurity
Cybersecurity
Cybersecurity
Cybersecurity

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *