Saltar al contenido

Un mes para no olvidar

Marzo de 2026 ha sido, probablemente, el mes más intenso en seguridad relacionada con herramientas de inteligencia artificial. No hablamos de riesgos teóricos ni de papers académicos: hablamos de vulnerabilidades reales, explotables, en herramientas que millones de desarrolladores usamos a diario.

Y lo más preocupante: los fallos no eran sofisticados. Eran errores clásicos de seguridad — falta de sanitización de inputs, aislamiento de red incompleto, permisos excesivos — amplificados por el contexto privilegiado en el que operan los agentes de IA.

Vamos a repasarlos uno por uno.


ChatGPT: tus datos saliendo por DNS sin que lo sepas

Check Point Research descubrió que el entorno de ejecución de código de ChatGPT (el que se usa para análisis de datos y ejecución de Python) bloqueaba las peticiones HTTP salientes, pero dejaba abierta la resolución DNS.

¿El resultado? Un atacante podía codificar datos sensibles de tu conversación — mensajes, archivos subidos, análisis generados — como subdominios en consultas DNS, enviándolos a un servidor externo. Sin alertas, sin confirmación del usuario, completamente invisible.

Lo peor: si le preguntabas a ChatGPT si tus datos habían sido enviados a algún sitio, respondía con confianza que no, que todo estaba almacenado de forma segura internamente.

OpenAI parcheó el problema el 20 de febrero de 2026. Fue divulgado públicamente el 30 de marzo.

Más detalles en The Hacker News y The Register.

Lección: no asumas que "aislado" significa "seguro". DNS es infraestructura invisible que rara vez se audita como canal de datos.


OpenAI Codex: command injection en nombres de rama

BeyondTrust descubrió que Codex no sanitizaba los nombres de rama de GitHub al crear tareas. Un atacante podía inyectar comandos bash directamente en el nombre de la rama.

Para ocultarlo en la interfaz, usaban 94 espacios ideográficos Unicode seguidos de || true, haciendo que solo la parte visible del nombre ("main") apareciera en la UI de Codex.

El token OAuth de GitHub se pasaba en texto claro durante el clonado del repositorio dentro del contenedor, permitiendo su exfiltración con movimiento lateral hacia todo el codebase de la víctima.

OpenAI lo clasificó como "Critical Priority 1" y lo parcheó el 5 de febrero de 2026. Divulgado públicamente el 30 de marzo.

Más detalles en SecurityWeek y SC Media.

Lección: CWE-78 (OS Command Injection) tiene décadas de antigüedad. Que aparezca en un agente de IA con acceso a tokens OAuth demuestra que la tecnología nueva no elimina las vulnerabilidades viejas.


Chrome Gemini: tu cámara y micrófono al alcance de cualquier extensión

Unit 42 de Palo Alto Networks descubrió CVE-2026-0628 (CVSS 8.8) en la integración de Gemini en Chrome. El panel Gemini Live corre como un side panel privilegiado con acceso a cámara, micrófono, capturas de pantalla y archivos locales.

El problema: una extensión con permisos básicos podía usar la API declarativeNetRequest (la misma que usan los ad-blockers) para inyectar JavaScript en el contexto privilegiado del WebView de Gemini, heredando todos sus permisos.

Google parcheó en enero de 2026. Divulgado públicamente en marzo.

Más detalles en The Hacker News, Malwarebytes y SOCRadar.

Lección: las funcionalidades de IA integradas en navegadores crean nuevas superficies de ataque privilegiadas. Una extensión aparentemente inofensiva puede convertirse en un vector de vigilancia completa.


Claude Code: filtración de código fuente y vulnerabilidades encadenadas

Anthropic tampoco se libró. El 31 de marzo, publicaron por error un sourcemap de Claude Code v2.1.88 en npm, exponiendo ~512.000 líneas de TypeScript. El código fue descargado, forkeado y redistribuido en horas. The Hacker News y Bloomberg cubrieron la filtración.

Pero el problema no fue solo la filtración. Investigadores descubrieron vulnerabilidades documentadas en el propio código:

  • Bypass de permisos con +50 subcomandos: Adversa AI reveló que si un comando tiene más de 50 subcomandos, Claude Code omite el análisis de seguridad y simplemente pregunta al usuario. Un archivo CLAUDE.md malicioso podía explotar esto para exfiltrar credenciales. Irónicamente, Anthropic ya tenía un fix desarrollado (el parser tree-sitter) pero no estaba habilitado en las builds públicas. Más detalles en SecurityWeek y CSO Online.

  • CVE-2025-59536: Check Point Research descubrió que los archivos de configuración de proyecto (.claude/settings.json) podían ejecutar comandos arbitrarios al abrir el proyecto, sin consentimiento del usuario.

  • CVE-2026-21852: permitía capturar la API key del desarrollador interceptando comunicaciones entre Claude Code y los servidores de Anthropic. Sin interacción del usuario. Más detalles en Dark Reading.

Anthropic parcheó todos los problemas tras divulgación responsable. Zscaler ThreatLabz publicó un análisis completo de las amenazas derivadas de la filtración, incluyendo repositorios falsos distribuyendo malware bajo la apariencia de Claude Code.

Lección: los archivos de configuración de proyecto ya no son metadatos pasivos. En el contexto de herramientas de IA, son parte de la capa de ejecución. Tratar un CLAUDE.md o un .claude/settings.json de un repo desconocido como seguro es un error.


Axios: el supply chain attack que lo cambió todo

Y llegamos al que, para mí, es el incidente más grave del mes para cualquier desarrollador.

El 31 de marzo, un atacante comprometió la cuenta npm del mantenedor principal de Axios y publicó dos versiones maliciosas: [email protected] y [email protected]. Hablamos de un paquete con más de 100 millones de descargas semanales.

Las versiones maliciosas inyectaban [email protected] como dependencia, un paquete que no existía antes y que ejecutaba un script postinstall desplegando un RAT (Remote Access Trojan) multiplataforma para Windows, macOS y Linux.

La operación fue quirúrgica:

  • La dependencia limpia ([email protected]) fue publicada 18 horas antes para crear historial en el registro.

  • Ambas ramas de release fueron comprometidas en 39 minutos.

  • Se publicaron durante la madrugada UTC (domingo noche a lunes madrugada) para maximizar el tiempo de exposición antes de que alguien reaccionara.

  • Todos los rastros estaban diseñados para autodestruirse.

Microsoft Threat Intelligence atribuyó el ataque a Sapphire Sleet, un actor estatal norcoreano activo desde 2020. Google Threat Intelligence lo atribuyó independientemente a UNC1069, también vinculado a Corea del Norte.

El paquete malicioso estuvo disponible aproximadamente 3 horas. Pero con los mecanismos de auto-update y CI/CD pipelines ejecutándose automáticamente, fue suficiente.

Análisis técnicos completos disponibles en Elastic Security Labs, Huntress y Malwarebytes.

Lección: un npm install o composer update sin control puede comprometer toda tu infraestructura. No importa cuánto confíes en el mantenedor: su cuenta puede ser comprometida.


¿Y cómo me protejo? Consejos prácticos

1. Bloquea versiones exactas

En composer.json, evita rangos abiertos:

{
    "require": {
        "laravel/framework": "13.1.0",
        "livewire/livewire": "4.1.0"
    }
}

Nunca uses ^ o ~ en dependencias críticas si no estás dispuesto a revisar cada actualización.

2. Commitea siempre el lockfile

Tu composer.lock (o package-lock.json) es tu escudo. Debe estar en el repositorio y debe ser lo que se instale en producción con composer install --no-dev o npm ci.

3. No hagas composer update a ciegas

Antes de actualizar:

composer outdated --direct

Revisa qué ha cambiado. Lee los changelogs. Si una dependencia ha cambiado de mantenedor o tiene un release que no aparece en GitHub, desconfía.

4. Mínimas dependencias

La mejor dependencia es la que no instalas. Antes de añadir un paquete, pregúntate:

  • ¿Puedo escribir esto yo en menos de 100 líneas?

  • ¿Realmente necesito una librería para esto?

  • ¿Cuántas dependencias transitivas trae?

5. Audita regularmente

# npm
npm audit

# Composer
composer audit

6. Cuidado con los archivos de configuración de herramientas de IA

Si usas Claude Code, Codex, o cualquier agente de IA en tu workflow:

  • No abras proyectos de terceros sin revisar archivos como CLAUDE.md, .claude/settings.json, .github/copilot-instructions.md.

  • Aplica el principio de mínimo privilegio en los tokens que das a estas herramientas.

  • Revisa los permisos OAuth que has concedido.

7. Revisa las extensiones de tu navegador

Después de CVE-2026-0628, queda claro que las extensiones del navegador son un vector real. Mantén las mínimas necesarias y revisa sus permisos periódicamente.


Reflexión final

Marzo de 2026 nos ha dejado una lección clara: las herramientas de IA que usamos para ser más productivos operan con niveles de acceso que antes solo tenían los administradores de sistemas. Tokens OAuth, API keys, acceso al sistema de archivos, ejecución de código, cámara y micrófono.

Y la cadena de suministro de software — npm, Composer, PyPI — sigue siendo el eslabón más débil. No importa lo seguro que sea tu código si una dependencia de terceros es comprometida.

La mejor defensa no es reactiva. Es estructural:

  • Mínimas dependencias.

  • Versiones bloqueadas.

  • Lockfiles commiteados.

  • Actualizaciones revisadas.

  • Y una dosis sana de escepticismo ante cualquier código que no hayas escrito tú.

En un mundo donde un npm install puede desplegar un RAT norcoreano en tu máquina, la paranoia no es un defecto. Es una práctica de ingeniería.

Rutas de aprendizaje