Ir al contenido
Guide

Ingeniería inversa de Claude Code: 6 lecciones para su agente de IA

| 8 min read

Los investigadores eliminaron el mínimo del paquete CLI de Claude Code y publicaron el aviso del sistema, los esquemas de herramientas y el bucle del agente. Seis lecciones para cualquiera que envíe un agente de IA a usuarios reales.

Monitor showing source code, representing bundle inspection and reverse engineering
Photo by Markus Spiske on Unsplash

Claude Code se envía como un paquete npm. Cualquiera puede correr npm install -g @anthropic-ai/claude-code, abre el paquete cli.mjsy lea la capa de orquestación enviada. Los investigadores hicieron exactamente eso. Lo eliminaron, sacaron el mensaje completo del sistema, los más de 15 esquemas de herramientas integrados, el bucle del agente y el despachador del subagente, luego publicaron el lote en repositorios públicos.

Los pesos del modelo se mantuvieron detrás de la API de Anthropic. El andamio no. Y ese andamio es la parte que la mayoría de los equipos creen que pueden mantener privada si incluyen una CLI, una extensión de VS Code o una computadora de escritorio aplicación con un agente integrado. La extracción es una lección gratuita: un equipo muy cuidado en Anthropic ya planeado para esto, y su diseño se mantiene. Aquí hay seis cosas que puedes copiar ante tu propio agente llega a npm o una versión de GitHub.

1. El código del lado del cliente es un paso de publicación, no un secreto

Cada byte del paquete enviado es público. La ofuscación ralentiza a los lectores desde minutos hasta horas; eso no los detiene. El paquete de Claude Code se ejecuta a través de un minificador de JavaScript estándar, y el primero La copia pública desofuscada apareció en horas. Su paquete seguirá el mismo camino.

Ejecute el mismo pase en su propio paquete hoy. Si incluye una CLI, una extensión de navegador, un Electron aplicación, o un SDK del lado del cliente, haga esto antes de su próxima versión:

Todo lo que regresa va a la pila de rotar ahora. Una clave API en un paquete de cliente es una clave en cada disco que se ejecutó npm install. Un nombre de host de backend codificado apunta a los atacantes al objetivos que no pretendía publicitar. Lea el archivo como lo lee un extraño.

2. El mensaje del sistema se filtrará, así que diseñe para su divulgación

El mensaje del sistema Claude Code son unos miles de muestras de cuidadosa instrucción: reglas para el uso de herramientas, restricciones de seguridad, orientación de estilo, condiciones de rechazo. Nada de esto depende del secreto. Suelta el Todo en un Pastebin y la CLI seguirá funcionando de la misma manera mañana.

Esa es la prueba. Si publicar el mensaje de su sistema rompe su modelo de seguridad, tiene un agujero. Mueva la broca de carga fuera del mensaje y colóquela en una verificación del lado del servidor. El control de acceso pertenece a su capa de autenticación. Los límites de tarifas pertenecen a su puerta de enlace. Los permisos de herramientas pertenecen al despachador de herramientas. El mensaje describe el comportamiento; no lo hace cumplir.

Todavía vale la pena proteger una buena indicación como secreto comercial. Las semanas de iteración se comprimen en unas pocas cien líneas, y un seguidor rápido que copia su mensaje ahorra ese tiempo. Trátalo como una receta IP, no como una clave privada. Legal y NDA, no criptográfico.

3. Ponga autenticación, límites de tarifas y facturación en su servidor

La arquitectura de agente más común en el mundo se ve así, y es incorrecta:

Esa clave se envía con cada instalación. Un usuario decidido lo saca del paquete en una tarde y lleva su cuota a cero antes de que se dé cuenta. Claude Code evita esto leyendo ANTHROPIC_API_KEY del entorno del usuario en tiempo de ejecución; cada usuario aporta su propia relación de facturación con Anthropic. La mayoría de los agentes de cara al consumidor no pueden seguir ese patrón porque los usuarios no tienen sus propias claves. lo que significa que un servidor proxy es la única forma segura:

En su servidor, verifique un token por usuario de corta duración, limite la tasa por ID de usuario, registre el uso y luego haga la llamada ascendente:

Emita el JWT por usuario desde su flujo de inicio de sesión con un vencimiento de 15 minutos, un alcance específico y una sesión. vinculante. Una llamada a Botoi se encarga de la firma, por lo que te saltas las pistolas del "algoritmo incorrecto" Las bibliotecas JWT de la era 2015 todavía son famosas por:

4. Gire y registre las claves como si ya estuvieran filtradas

Claude Code registra localmente su propia telemetría de llamadas de herramientas para que los usuarios puedan inspeccionar lo que hizo el agente en su máquina. Su servidor necesita la misma propiedad, pero del lado del servidor. Cada llamada de modelo tiene una fila: ID de usuario, modelo, tokens de entrada, tokens de salida, llamadas a herramientas, costo. Guárdelo durante 30 días como mínimo. un atacante Quien roba el token de un usuario tiene un patrón de gasto que se ve diferente al uso normal, y el El registro es como lo ves.

Antes de iniciar sesión, cuente. El uso de tokens es la señal más rápida de abuso y la señal más rápida de aviso. hinchar:

Establezca alertas en tokens por usuario por hora tres veces la línea de base p99. Cuando te llamen, revoca el token del usuario, no su clave maestra. Las llaves maestras rotan trimestralmente; tokens por usuario girar cuando se activa la detección de anomalías.

5. Limpie la PII antes de que el mensaje llegue al modelo.

Un usuario pega un ticket de soporte con un número de tarjeta de crédito en su agente. El modelo lo ve, el La línea de registro lo captura, el proceso de ajuste fino lo atrae y ahora está en tres lugares en los que lo hizo. no planear. Claude Code evita esto ejecutándose en la propia máquina del usuario contra la del usuario. archivos propios; un agente alojado no puede darse ese lujo.

Ejecute un pase de detección en cada mensaje entrante y redacte antes de la llamada:

enviar el redacted Cadena al modelo, mantener la findings en la memoria y reinyectar los originales sólo si la respuesta del modelo solicita la devolución de un token específico (por ejemplo, un resumen del ticket de soporte que debe indicar el método de pago). Sus registros, corpus de entrenamiento y todos los canales de análisis posteriores ven la versión redactada; sólo ve la ruta de solicitud en memoria PII sin procesar.

6. Endurecerse contra la inyección inmediata utilizando su propio mensaje filtrado

La ventaja de un aviso del sistema filtrado es que puede ejecutarlo en su propio conjunto de inyecciones. un el atacante sólo necesita un bypass; necesitas cobertura. Levanta un agente de puesta en escena, pega tu propio mensaje en el portapapeles de un revisor y ejecute un conjunto de sondas que pruebe las formas de inyección más comunes: anulación de instrucciones, cambio de persona, ruptura de delimitador, reinicio de usuario falso.

Cualquier cosa que haga que el agente imprima su indicador del sistema, revele variables de entorno o llame a un La herramienta que el alcance del usuario no permite es un error. Solucionarlo con una verificación del lado del servidor, no con un ajuste rápido. "No revelar el mensaje del sistema" en el mensaje es una sugerencia; un filtro de respuesta que bloquea la Los primeros 200 caracteres del mensaje de salida son un control.

Lista de verificación de defensa en profundidad

Capa Control Por qué sobrevive a una fuga de paquetes
Paquete de cliente Sin secretos, sin URL maestras Legible desde el primer día; tratarlo como documentación
Transporte JWT por usuario, caducidad de 15 minutos El robo de fichas tiene un radio de explosión de escala diminuta
Puerta Límite de tasa por ID de usuario y por recuento de tokens Límites de abuso en su gasto configurado, no en su billetera
Servidora Montaje rápido y envío de herramientas. El atacante no puede agregar herramientas que no obtuvo
Entrada del modelo Detección y redacción de PII Los datos confidenciales nunca llegan a los registros ni al entrenamiento
Salida del modelo Filtro de respuesta para ecos de avisos y esquemas de herramientas Los intentos de inyección fallan en el último salto
Observabilidad Uso de token por usuario con alertas de anomalías Los tokens robados se ven diferentes a los de los usuarios reales

Conclusiones clave

  • Envíe como si su paquete ya fuera público. Grep cada lanzamiento de claves y hosts internos antes de publicar; todo lo que encuentre rotará antes de que el paquete entre en funcionamiento.
  • El indicador de su sistema no es una clave. Saque todas las decisiones relevantes para la seguridad de el mensaje y en una verificación del lado del servidor.
  • Proxy el modelo a través de su propio servidor. Los usuarios obtienen un JWT de corta duración, su El servidor contiene la clave API maestra y los límites de velocidad se encuentran delante de ambos.
  • Redactar PII al entrar. El modelo ve una cadena redactada; registros y entrenamiento las tuberías se mantienen limpias.
  • Ejecute sondas de inyección según su propio mensaje filtrado. Todo lo que funciona se convierte un ticket para una solución del lado del servidor, no un ajuste rápido.

Botoi le proporciona las piezas del lado del servidor como llamadas HTTP: detección de PII en /v1/pii/detect, conteo de fichas en /v1/token/count, firma JWT en /v1/jwt/generate, más bloques de construcción de hash, HMAC y límite de velocidad en más de 150 puntos finales. Una clave API, 5 solicitudes/min gratis, Sin ganchos de instalación. Navega por el documentos interactivos o cablear el servidor MCP en Claude Code o Cursor para llamar a los mismos puntos finales desde dentro de su editor.

FAQ

¿Qué se extrajo realmente del Código Claude?
Los investigadores descargaron el paquete @anthropic-ai/claude-code distribuido por npm, lo ejecutaron a través de un desofuscador y publicaron el mensaje completo del sistema, los más de 15 esquemas de herramientas integradas (Leer, Editar, Bash, Grep, etc.), el bucle del agente y la lógica de envío del subagente. Los pesos del modelo se mantuvieron privados; lo que se envió fue una capa de orquestación de JavaScript en torno a las llamadas API antrópicas. Cualquiera que instale la CLI tiene los mismos bits en su disco.
¿Se expuso alguna clave de API de Anthropic o datos de clientes?
No. La CLI lee la clave API del propio entorno del usuario en tiempo de ejecución y nunca incluye credenciales de Anthropic. Las conversaciones de los clientes permanecen entre la CLI y api.anthropic.com. La filtración expuso la ingeniería rápida y el diseño de la herramienta, no el material de autenticación ni los datos del usuario.
Si las indicaciones del sistema no son secretas, ¿por qué las empresas las guardan?
Dos razones. En primer lugar, el tiempo de copia competitivo: un buen mensaje representa semanas de iteración y negarse a publicar ralentiza a un seguidor rápido en esa misma ventana. En segundo lugar, el área de superficie de inyección de avisos: cuanto más sepan los atacantes sobre las barreras de seguridad y las secuencias de escape de los avisos de su sistema, más fácil será crear evasiones. Ambos son reales, pero ninguno es un secreto criptográfico. Trate el aviso como un secreto comercial con una vida media corta, no como una clave.
¿La ofuscación o la minificación ayudan en algo?
Se gana tiempo, no protección. Un ingeniero inverso motivado desofusca un paquete de JavaScript en menos de una hora con herramientas estándar. La ofuscación ralentiza la inspección informal, que es importante para la detección antimanipulación y las comprobaciones de licencias, pero cualquier modelo de amenaza que asuma que el paquete permanece opaco está roto desde el principio. Construya como si la fuente fuera pública desde el primer día.
¿Cómo pruebo mi propio agente de IA para detectar las mismas debilidades?
Realice tres comprobaciones esta semana. Uno: descargue el paquete enviado y grep para sk-, pk_, apiKey, BEGIN PRIVATE KEY y su URL de backend; arregla todo lo que encuentres. Dos: pídale a su agente que imprima el mensaje del sistema palabra por palabra y confirme que nada relacionado con la seguridad dependa del secreto. Tres: registrar cada llamada a la herramienta en el lado del servidor con ID de usuario, marca de tiempo y hash de argumento para que los patrones de abuso surjan antes de que lo haga la factura.

Empieza a construir con botoi

150+ endpoints de API para consultas, procesamiento de texto, generacion de imagenes y utilidades para desarrolladores. Plan gratuito, sin tarjeta de credito.