1. abril 2026 | Imprimir artículo |

Mapas de origen en el paquete NPM: cómo Anthropic expuso 512.000 líneas de código de producción

7 min de lectura

Una regla de exclusión ausente en la canalización de construcción expuso el 31 de marzo de 2026 todo el código de producción de Claude Code de Anthropic. 512.000 líneas de TypeScript, empaquetadas en un archivo de mapa de origen de 59,8 MB dentro del paquete público de NPM. Ese mismo día, un ataque independiente contra la cadena de suministro afectó al paquete NPM axios – uno de los paquetes JavaScript más utilizados del mundo – . Dos incidentes distintos, un ecosistema, un solo día. Juntos ilustran por qué, para los equipos de TI en 2026, la seguridad de la cadena de suministro de NPM ya no es un tema secundario.

En resumen

  • El paquete NPM @anthropic-ai/claude-code v2.1.88 contenía un archivo de mapa de origen de 59,8 MB con el código fuente completo en TypeScript; causa: falta de una regla .npmignore en la canalización de construcción.
  • Clasificación CWE: CWE-215 (Exposición de información mediante información de depuración) y CWE-538 (Inserción de información sensible en un archivo o directorio accesible externamente).
  • Antes de la filtración ya se habían documentado seis CVE en Claude Code, incluyendo fugas de claves API y bypasses de entornos aislados (sandbox).
  • Ese mismo día: ataque contra la cadena de suministro dirigido al paquete axios (v1.14.1 y v0.30.4), que incluía un troyano de acceso remoto integrado mediante la dependencia falsa plain-crypto-js.
  • Anthropic: «Error de empaquetado causado por fallo humano, no un incidente de seguridad». No se vieron afectados datos de clientes.

El incidente

El 31 de marzo de 2026, a las 08:23 UTC, Chaofan Shou publicó su hallazgo en X. Shou es doctorando en la Universidad de California en Berkeley, cofundador de la startup de seguridad blockchain Fuzzland y investigador de bug bounty con 1,9 millones de dólares estadounidenses en recompensas documentadas por vulnerabilidades reportadas. Su hallazgo: la versión 2.1.88 del paquete oficial de NPM @anthropic-ai/claude-code contenía el archivo cli.js.map. Este archivo de mapa de origen de 59,8 MB incluía, en su campo sourcesContent, el código fuente completo en TypeScript: aproximadamente 1.900 archivos con 512.000 líneas de código de producción.

Además, el mapa de origen hacía referencia a un archivo ZIP alojado en un bucket público de Cloudflare R2 perteneciente a Anthropic. En cuestión de horas, la comunidad replicó el código en GitHub. El repositorio más destacado alcanzó más de 41.500 bifurcaciones (forks). Anthropic respondió con notificaciones DMCA; GitHub desactivó más de 8.100 repositorios dentro de la red de bifurcaciones. El código sigue estando disponible en plataformas descentralizadas.

59,8 MB
Tamaño del archivo de mapa de origen cli.js.map en el paquete NPM @anthropic-ai/claude-code v2.1.88
Fuente: Registro NPM, 31.03.2026

La causa probable: Anthropic utiliza Bun como entorno de ejecución de JavaScript. Un error conocido y abierto en Bun (reportado el 11 de marzo de 2026) documenta que el empacador (bundler) de Bun genera mapas de origen de forma predeterminada – incluso en modo producción, contrariamente a lo indicado en la documentación – . Ni el archivo .npmignore ni el campo files en package.json excluían explícitamente los archivos .map.

No fue el primer incidente de este tipo: ya en 2025, las versiones v0.2.8 y v0.2.28 de Claude Code incluían archivos de mapa de origen. Pocos días antes de esta filtración, además, aparecieron aproximadamente 3.000 archivos internos de Anthropic en una caché públicamente accesible.

Declaración oficial de Anthropic: «Un error de empaquetado en la fase de lanzamiento causado por fallo humano, no un incidente de seguridad». La versión 2.1.88 fue retirada y se publicó la versión 2.1.89.

Los mapas de origen como vector de ataque subestimado

Los mapas de origen son archivos JSON que vinculan el código JavaScript compilado o minificado con el código fuente original. Su campo sourcesContent contiene el texto fuente completo y legible. Son una herramienta legítima de depuración – pero únicamente en entornos de desarrollo. En paquetes de producción, se convierten en un riesgo de seguridad.

Herramientas como reverse-sourcemap, Shuji o unwebpack-sourcemap reconstruyen, a partir de un único archivo .map, toda la estructura de directorios junto con el código fuente legible. No se requiere ingeniería inversa, ni descompiladores, ni conocimientos especializados. Basta con descomprimir el archivo.

En el caso de Claude Code se expusieron: todo el modelo de permisos de cuatro niveles, la lógica de validación de comandos Bash, los flujos de autenticación OAuth 2.0, la arquitectura del servidor MCP (Model Context Protocol) y 44 feature flags para funciones aún no publicadas. Entre ellas, un mecanismo anti-distilación que inyecta definiciones falsas de herramientas en las solicitudes de API para envenenar a competidores que intentan capturar datos de entrenamiento. Y un «modo encubierto» que elimina todas las referencias a Anthropic cuando la herramienta opera en repositorios públicos.

Sin datos de clientes. Sin claves API. Pero sí la propiedad intelectual completa de la arquitectura de agentes – resultado de miles de horas de desarrollo por parte de una empresa valorada en aproximadamente 380.000 millones de dólares estadounidenses.

Este problema no se limita a Anthropic. Los mapas de origen en paquetes de producción constituyen un riesgo sectorial. Un estudio de Ostorlab concluyó que aproximadamente el cinco por ciento de los activos web analizados eran vulnerables mediante debilidades basadas en mapas de origen. La diferencia radica en que la mayoría de las organizaciones afectadas desconocen que sus archivos .map están públicamente accesibles.

«La ironía es increíble: Anthropic comercializa las capacidades de escritura de código de Claude, pero su propio código se filtró debido a un error básico de empaquetado.»
– Reacción de la comunidad en Hacker News, 31.03.2026

Clasificación CWE y vulnerabilidades conocidas

La filtración del mapa de origen se clasifica principalmente bajo dos categorías CWE:

CWE-215 (Exposición de información mediante información de depuración): artefactos de depuración en entregas de producción exponen detalles internos de la implementación.

CWE-538 (Inserción de información sensible en un archivo o directorio accesible externamente): información sensible almacenada en un archivo accesible para actores externos.

Como complemento, también aplican CWE-540 (Inclusión de información sensible en el código fuente), CWE-200 (Exposición de información sensible a un actor no autorizado) y OWASP A01:2021 (Control de acceso roto).

Antes de la filtración del mapa de origen ya se habían documentado seis CVE en Claude Code:

CVE-2026-21852
Fuga de claves API mediante ANTHROPIC_BASE_URL en repositorios manipulados

CVE-2025-58764
El análisis de comandos evitaba los diálogos de autorización

CVE-2025-52882
Las integraciones con IDE aceptaban conexiones WebSocket desde cualquier origen

Además, se incluyen CVE-2025-59828 (ejecución de la configuración de Yarn antes del diálogo de confianza), CVE-2025-64755 (el análisis con sed evitaba la validación de solo lectura) y los vectores de ataque documentados por Check Point Research mediante configuraciones de proyecto manipuladas.

El patrón es claro: las herramientas de desarrollo asistidas por IA, que leen archivos, ejecutan comandos y tienen acceso a la red, constituyen superficies de ataque completas – independientemente del fabricante. El código fuente filtrado muestra, al menos, que Anthropic reconoce el problema: se introdujo una bandera CLAUDE_CODE_SUBPROCESS_ENV_SCRUB para evitar la herencia de variables de entorno (y, por tanto, potenciales claves API) a subprocesos. Sin embargo, el hecho de que dicha bandera se haya añadido posteriormente confirma que la arquitectura de seguridad ha evolucionado de forma reactiva, no proactiva.

Ese mismo día: el ataque contra la cadena de suministro de axios

Independientemente de la filtración de Claude Code, el 31 de marzo de 2026 un ataque contra la cadena de suministro afectó al paquete NPM axios – con 83 millones de descargas semanales, uno de los paquetes JavaScript más utilizados del mundo – . Las versiones 1.14.1 y 0.30.4 incluían, mediante una dependencia falsa denominada plain-crypto-js, un troyano de acceso remoto. El ataque estuvo activo entre las 00:21 y las 03:29 UTC, momento en que npm retiró el paquete.

La coincidencia temporal es relevante: quien instaló o actualizó Claude Code mediante npm install durante esa ventana temporal podría haber instalado también, como dependencia transitiva, la versión comprometida de axios. Dos problemas independientes en la cadena de suministro, un ecosistema, un solo día. El ataque contra axios fue confirmado de forma independiente por SANS, Sophos y BleepingComputer, y se atribuye al grupo UNC1069 (vinculado a Corea del Norte).

Este incidente se suma a una cronología que los equipos de seguridad informática deben conocer: event-stream (2018), ua-parser-js (2021), colors.js (2022), el ataque contra Astro mediante Shai-Hulud (2024) y ahora axios (2026). El ecosistema NPM, con sus cadenas de dependencias profundamente anidadas, sigue siendo una de las superficies de ataque más críticas en el desarrollo de software. Cada dependencia transitiva es un vector de ataque potencial – y la mayoría de los equipos ni siquiera conocen su árbol completo de dependencias.

Qué deben revisar ahora los equipos de TI

Cinco medidas concretas derivadas de este incidente:

1. Auditoría de paquetes en busca de mapas de origen. Ejecutar npm pack --dry-run sobre todos los paquetes publicados internamente. Verificar si el artefacto contiene archivos .map, archivos .env u otros artefactos de depuración. Esto lleva 30 segundos por paquete y habría evitado la filtración de Claude Code.

2. Adoptar un enfoque de lista blanca en lugar de lista negra. Definir en package.json un campo files como lista blanca, en lugar de confiar en .npmignore (lista negra). Las listas negras olvidan nuevos tipos de archivos. Las listas blancas solo incluyen explícitamente lo que se autoriza.

3. Revisar la configuración del empacador (bundler). Herramientas de construcción como Bun, esbuild y webpack generan mapas de origen de forma predeterminada. Desactivarlos explícitamente para construcciones de producción: --sourcemap=none (Bun), --sourcemap=false (esbuild) o devtool: false (webpack).

4. Incorporar una puerta de control (gate) en CI/CD. Una verificación automatizada en la canalización que interrumpa la construcción si se detectan archivos .map, .env u otros patrones de exclusión en el artefacto de publicación. Comprobación sencilla: find dist/ -name "*.map" -exec false {} +.

5. Utilizar Attestations de procedencia (Provenance Attestation). npm publish --provenance crea una acreditación criptográficamente firmada que vincula de forma reproducible la construcción a un commit específico y a un entorno de CI. Esto no habría evitado el incidente, pero sí haría rastreable cualquier manipulación.

6. Tratar las herramientas de desarrollo con IA como superficies de ataque. Herramientas como Claude Code, GitHub Copilot y Cursor acceden al sistema de archivos, ejecutan comandos y comunican con APIs externas. Merecen el mismo nivel de auditoría de seguridad que cualquier otro software con acceso privilegiado. Las seis CVE documentadas en Claude Code demuestran: estas herramientas no son inmunes a vulnerabilidades que, en cualquier otra categoría de aplicaciones, ya serían puntos de verificación estándar.

Preguntas frecuentes

¿Se expusieron datos de clientes o claves API?

No. Anthropic y análisis de seguridad independientes (Penligent) confirman: ningún dato de cliente, ninguna clave API, ninguna credencial. Se expuso únicamente el código de la CLI de Claude Code – es decir, arquitectura, lógica y feature flags, no secretos operativos.

¿En qué se diferencia este incidente de un ataque contra la cadena de suministro?

La filtración de Claude Code fue un error de configuración involuntario (CWE-215), no un ataque dirigido. El incidente de axios del mismo día, en cambio, fue un ataque deliberado contra la cadena de suministro con código malicioso insertado. Ambos ejemplifican distintas facetas del mismo problema: los paquetes NPM como vectores de ataque.

¿Qué riesgo supone esto para los usuarios de Claude Code?

El riesgo directo derivado de la filtración del mapa de origen es bajo – el código expuesto no contenía secretos. Más crítico: quienes instalaron Claude Code entre las 00:21 y las 03:29 UTC del 31 de marzo podrían haber obtenido, como dependencia transitiva, la versión comprometida de axios. Se recomienda realizar un npm audit y verificar la versión de axios.

¿Fue este el primer incidente de este tipo en Anthropic?

No. Ya en 2025, las versiones v0.2.8 y v0.2.28 de Claude Code incluían archivos de mapa de origen. Pocos días antes de esta filtración, además, aparecieron aproximadamente 3.000 archivos internos de Anthropic en una caché públicamente accesible – entre ellos, detalles sobre un modelo de IA aún no publicado. Tres incidentes con la misma causa raíz (error en .npmignore) apuntan a un problema sistémico en la canalización de lanzamiento.

¿Cómo puedo revisar mis propios paquetes NPM?

Cuatro pasos: 1) npm pack --dry-run muestra todos los archivos que se incluirían en el paquete. 2) Configurar el campo files en package.json como lista blanca. 3) Desactivar los mapas de origen del empacador para producción. 4) Incorporar una puerta de control en CI que interrumpa la construcción si se detectan archivos .map en el artefacto.

Lecturas recomendadas por la redacción

Más contenido de la red MBF Media

Fuente de imagen: Pexels / Towfiqu barbhuiya (px:11391947)

Tobias Massow

Sobre el autor: Tobias Massow

Más artículos de

Una revista de Evernine Media GmbH