Antigravity find_by_name: cuando una llamada a herramienta nativa salta por encima del Secure Mode
El 20 de abril de 2026, Pillar Security divulgó que un único parámetro sin sanear de la herramienta find_by_name de Google Antigravity convertía la búsqueda de archivos en ejecución de código arbitrario — y eludía el sandbox más estricto del IDE.
What is this?
El 20 de abril de 2026, el investigador Dan Lisichkin (Pillar Security) publicó Prompt Injection leads to RCE and Sandbox Escape in Antigravity, el informe público de una vulnerabilidad en Google Antigravity — el IDE agéntico de Google, donde agentes basados en Gemini operan un editor de código y una shell en la máquina del desarrollador. The Hacker News y CSO Online recogieron la divulgación el 21 de abril de 2026, con cobertura adicional de Dark Reading y CyberScoop, y una nota de investigación del Cloud Security Alliance Labs.
El fallo es pequeño y exacto: el parámetro Pattern de la herramienta find_by_name de Antigravity se pasaba sin sanear al binario fd subyacente. Un valor de Pattern que empieza con - es interpretado por fd como una bandera en lugar de un término de búsqueda, y la bandera -X (exec-batch) convierte la búsqueda de archivos en ejecución de comandos arbitrarios. Combinado con la capacidad normal del agente para crear archivos en el workspace, esa primitiva produce ejecución remota de código bajo el propio Secure Mode de Antigravity, el sandbox más estricto del IDE.
Pillar reportó el bug a Google el 7 de enero de 2026. Google lo aceptó el 24 de enero de 2026, lo marcó como corregido el 28 de febrero de 2026 y pagó una recompensa VRP el 26 de marzo de 2026 antes de la divulgación pública del 20 de abril de 2026. El plazo de divulgación responsable de 90 días está ampliamente vencido; la vulnerabilidad está parcheada.
How it works
find_by_name está documentado como un fino envoltorio de conveniencia alrededor de fd, la alternativa rápida a find. Acepta un objeto JSON con campos como Pattern, Extensions, SearchDirectory, MaxDepth. Dentro de la herramienta, Pattern se interpola en la línea de comandos de fd sin terminador de argumentos (--) y sin filtrar guiones iniciales al estilo shell. Dos ingredientes de la cadena de ataque ya son visibles:
fdtrataPatterncomo una bandera cuando empieza con-.fd -X <bin>ejecuta<bin>para cada archivo coincidente, pasando los nombres de archivo coincidentes como argumentos.
# Estructura conceptual — solo ilustrativa, basada en el aviso de Pillar.
# Esta es la clase de bug publicada y parcheada; nada aquí es novedoso.
# 1) La inyección de prompt indirecta llega a Antigravity a través de
# un archivo no confiable (README de un repo clonado, comentario en el código).
# El texto inyectado pide al agente que:
#
# - cree un archivo en el workspace (acción permitida)
# - luego llame a find_by_name con Pattern empezando con "-Xsh"
#
# 2) La llamada a herramienta nativa se dispara ANTES de que Secure Mode
# evalúe nada, porque el agente clasifica find_by_name como una
# herramienta nativa, no como un comando shell.
#
# 3) fd recibe una "bandera" en lugar de un patrón, cambia a modo
# exec-batch y ejecuta el archivo preparado vía sh.
#
# Estructura de payload concreta del aviso:
# Pattern: "-Xsh"
# Extensions: ["orange"] # coincide con el archivo preparado
# SearchDirectory: <workspace>
#
# Resultado: cada archivo a.orange preparado se entrega a sh, ejecutando
# lo que el agente recibió la instrucción de escribir antes en el workspace.
El detalle que hace que esto sea más que un bug genérico de inyección de argumentos es el bypass del Secure Mode. El Secure Mode en Antigravity está documentado como bloqueante de escrituras fuera del workspace, restricción de salida de red y forzar que los comandos shell se ejecuten sandboxed. Ninguno de esos controles se dispara aquí, porque find_by_name se despacha como una herramienta nativa, no como un comando shell. El límite de seguridad que el Secure Mode aplica se encuentra detrás de un chequeo que el agente nunca alcanza en este camino de código. El aviso confirma que el exploit tuvo éxito con Secure Mode activado y Auto Execution desactivado — la configuración más restrictiva publicada del IDE.
El carácter espacio está escapado en el camino Pattern, por lo que la bandera inyectada no puede ir seguida de argumentos en línea. Pillar lo elude preparando primero la carga útil como un archivo separado — una acción permitida — y luego llamando a find_by_name cuya coincidencia pasa ese archivo a sh. Dos operaciones ordinarias encadenadas a través de una herramienta ordinaria producen RCE.
Why it matters
El caso Antigravity es el ejemplo canónico de 2026 de la inyección de parámetros de herramienta en IDEs agénticos. Tres observaciones merecen ser comprendidas incluso si usted no usa Antigravity.
Primero, la inyección de prompt ya no es la parte interesante de la cadena. El texto inyectado cabe en una línea. El trabajo lo realiza el diseño de la herramienta: un parámetro que cruza la frontera entre “datos que el LLM controla” y “argv hacia una utilidad shell” sin terminador de argumentos. El CVE-2026-22708 de Cursor, también documentado por Pillar, sigue la misma forma. Igual la clase de CVE del transporte STDIO de MCP de Anthropic documentada en abril. La superficie de ataque en 2026 es la brecha entre “el LLM pasa datos a una herramienta” y “la herramienta interpreta esos datos como una estructura de comando”.
Segundo, la clasificación “herramienta nativa” es un concepto cargado que pocos usuarios entienden. El modelo de amenazas de Antigravity asumía que controlar comandos shell detrás del Secure Mode cubriría las operaciones peligrosas. En la práctica, una herramienta que envuelve fd hace las mismas cosas que haría sh, simplemente a través de un camino de código diferente. La distinción shell-vs-nativo es significativa dentro del agente, invisible para el sistema operativo, e inútil como límite de seguridad.
Tercero, el camino de inyección indirecta significa que el usuario no necesita ser engañado con nada elaborado. Clonar un repositorio, abrir un archivo, pedir al agente que lo resuma — cualquiera de estos basta para que las instrucciones embebidas lleguen al contexto del agente. El exploit publicado no necesita autenticación, ni cuenta comprometida, ni extensión maliciosa.
Defenses
El bug en sí está parcheado en Antigravity. La clase no lo está.
La primera defensa, tanto en la capa del fabricante del IDE como dentro de cualquier pila de agente propia, es terminar los argumentos en la frontera de la herramienta. Siempre que una cadena suministrada por un LLM se interpole en una línea de comandos, anteponga --, valide contra una lista blanca de caracteres apropiados al parámetro (los patrones de nombre de archivo no empiezan con -), y rechace la entrada que contenga banderas de estilo shell o atravesamiento de rutas. La corrección aquí es una línea de validación de entrada. El bug existe porque esa línea faltaba.
La segunda defensa es clasificar las llamadas a herramientas por su efecto, no por su envoltorio. Si una herramienta puede ultimadamente ejecutar un binario, correr un script o escribir fuera del workspace, pertenece detrás del mismo límite de sandbox que un comando shell crudo, independientemente de que el código del agente lo etiquete como “nativo”. El Secure Mode en Antigravity debería — y lo hará, después del parche — evaluar find_by_name de la misma manera que evalúa run_in_terminal. Los equipos de aplicaciones que operan sus propios agentes deberían auditar cada herramienta por la misma propiedad.
La tercera defensa es aislamiento de procesos en el runtime del agente. Ejecute el agente en un contenedor o VM sin montaje de sistema de archivos del host más allá del repositorio de trabajo, sin red saliente a menos que sea explícitamente requerido para una sola tarea, y con una identidad separada de la cuenta de desarrollador. El camino de evasión del exploit de Antigravity incluía escribir en ~/.zshrc y lanzar aplicaciones nativas; un runtime aislado colapsa ese radio de explosión a un sandbox desechable.
La cuarta defensa es tratar los repositorios no confiables como código no confiable, no como datos. Tirar de un repo público hacia un IDE agéntico es el equivalente de 2026 a abrir un adjunto de un remitente desconocido. Ábralo primero en frío si debe, con el agente desactivado o en solo lectura, y ejecute herramientas de revisión de seguridad sobre el árbol de archivos antes de que cualquier funcionalidad agéntica lo toque.
Un paso de endurecimiento separado: suscríbase a la cascada. El aviso de Antigravity hace referencia cruzada al CVE-2026-22708 de Cursor, a la clase MCP STDIO de Anthropic y a la cadena RCE Semantic Kernel de Microsoft (CVE-2026-25592, CVE-2026-26030). Cada framework que permite a un modelo llamar a una herramienta con argumentos sub-validados es candidato para la próxima entrada. Seguir los feeds de divulgación de OX Security, Pillar y CSA es más barato que esperar a su propio incidente.
Status
| Elemento | Referencia | Fecha | Notas |
|---|---|---|---|
| Aviso Pillar Security | ”Prompt Injection leads to RCE and Sandbox Escape in Antigravity” | 2026-04-20 | Divulgación principal; PoC completa con Secure Mode activado |
| Cobertura de prensa | The Hacker News, CSO Online, Dark Reading, CyberScoop | 2026-04-21 | Corroboración independiente |
| Nota de investigación CSA Labs | Agentic IDE prompt injection sandbox escape | 2026-04 | Encuadre como clase sistémica de IDE agéntico |
| Reporte inicial a Google | Pillar → Google AI VRP | 2026-01-07 | Acuse de recibo el mismo día |
| Corrección desplegada | Google Antigravity | 2026-02-28 | 52 días después del reporte |
| Recompensa VRP | 2026-03-26 | Categoría específica de IA | |
| Avisos relacionados | Cursor CVE-2026-22708, Anthropic MCP STDIO, Semantic Kernel CVE-2026-25592 / CVE-2026-26030 | 2026-02 a 2026-04 | Mismo patrón raíz: parámetros de herramienta sub-validados llegan a una shell |
La historia de Antigravity es breve y vale la pena guardarla. Un único -- faltante fue la diferencia entre una búsqueda de archivos y una ejecución remota de código. Cada IDE agéntico en el mercado hoy tiene docenas de herramientas de clase find_by_name, y la mayoría se diseñaron antes de que “inyección de parámetros de herramienta” fuera una frase que alguien usara. Audite en consecuencia.
Sources
- → https://www.pillar.security/blog/prompt-injection-leads-to-rce-and-sandbox-escape-in-antigravity
- → https://thehackernews.com/2026/04/google-patches-antigravity-ide-flaw.html
- → https://www.csoonline.com/article/4161382/prompt-injection-turned-googles-antigravity-file-search-into-rce.html
- → https://cyberscoop.com/google-antigravity-pillar-security-agent-sandbox-escape-remote-code-execution/
- → https://www.darkreading.com/vulnerabilities-threats/google-fixes-critical-rce-flaw-ai-based-antigravity-tool
- → https://labs.cloudsecurityalliance.org/research/csa-research-note-agentic-ide-prompt-injection-sandbox-escap/