ZCode subía el historial de Git completo de sus usuarios sin avisar
ZCode, el agente de programación de Z.ai, empaquetaba el repositorio Git completo del usuario —historial de commits, archivos grandes, reflogs— lo cifraba y lo subía a un servidor de Aliyun. Sin avisar, y sin que los controles de la interfaz lo impidieran. Lo destapó un investigador de seguridad, y el 21 de septiembre la compañía publicó el código con licencia Apache 2.0.
Qué subía ZCode exactamente
La diferencia entre subir tu código y subir tu repositorio es enorme, y es justo la que este caso ilustra.
En un workspace analizado, el paquete abarcaba 42.411 archivos, de los cuales el 86,6% no era código de trabajo: era contenido del directorio .git. Ahí viven ramas que nunca se publicaron, mensajes de commit internos, documentación que se borró después y —esto es lo grave— credenciales que alguien subió por error hace dos años y luego quitó del código, pero que siguen vivas en el historial.
El investigador documentó un snapshot cifrado de 313 MB de un proyecto comercial que quedó pendiente de subida tras 564 intentos fallidos. Es decir: el sistema insistía.
El detalle del cifrado es el que convierte esto de descuido en algo más incómodo. Se usaba RSA-OAEP-SHA256 con la clave pública del servidor. El usuario no podía descifrar su propio archivo: la clave privada solo la tenía la empresa.
Los controles que no controlaban
La interfaz ofrecía dos opciones que cualquiera interpretaría como el interruptor para apagar esto: «Optimize Experience» e «Repo Snapshot Indexing». Según el análisis, desactivarlas no impedía la subida.
Eso es lo que separa este caso de una política de privacidad agresiva pero declarada. Una empresa puede decir en sus términos que procesa tu código para mejorar el servicio, y el usuario decide si acepta. Aquí el usuario que buscó el interruptor y lo apagó igual quedaba expuesto.
Hay un detalle final que conviene registrar. Cuando Z.ai publicó ZCode como código abierto, el repositorio salió con el historial aplanado a dos commits, sin ninguna referencia al mecanismo de subida. La ironía de aplanar un historial de Git en este caso concreto es difícil de pasar por alto.
Qué significa para América Latina
El riesgo está en el historial, no en el código de hoy. Un equipo puede tener impecable su código actual y aun así estar arrastrando llaves de API, contraseñas de base de datos y tokens de pago en commits viejos. Si alguna vez subiste una credencial y la quitaste después, sigue ahí. Rotar esas credenciales es la tarea concreta que sale de esta noticia.
Y aplica a cualquier agente, no solo a este. La pregunta que hay que hacerle a cualquier herramienta de programación asistida antes de instalarla en la máquina de un desarrollador es una sola: qué envía, a dónde, y si puedo apagarlo de verdad. Vale para las herramientas chinas, para las estadounidenses y para las gratuitas.
Para una empresa que desarrolla software de cliente, esto es contractual. La mayoría de los contratos de desarrollo en la región incluyen cláusulas de confidencialidad sobre el código del cliente. Un agente que exfiltra el repositorio completo no es un problema de seguridad interna: es un incumplimiento, y el responsable es quien instaló la herramienta.
ZCode y la pregunta que casi nadie hace
La reacción fácil es señalar el origen de la herramienta. Es una lectura pobre, porque el mecanismo que falló aquí existe en muchísimos productos: casi todos los agentes de programación indexan el proyecto para darte mejores respuestas, y para eso tienen que leerlo.
La diferencia entre un producto aceptable y uno problemático está en tres cosas: qué alcance tiene esa lectura, si el usuario puede apagarla de verdad, y quién tiene la llave del archivo que se sube. Este caso falla en las tres.
La revisión práctica que vale la pena hacer esta semana es corta. Lista los agentes y extensiones instaladas en las máquinas del equipo, revisa el tráfico saliente de una de ellas durante un día de trabajo normal, y rota las credenciales que hayan pasado alguna vez por el historial. Es aburrido y es lo único que funciona.
Fuentes primarias:
Repositorio oficial ·
Análisis técnico original
Reportado por: Tom’s Hardware — DEV Community
Lee también:
Tres personas usaron Claude Opus 5 para entrar a cuentas de empleados de OpenAI
Project Lily: los humanos que leen tus chats de ChatGPT
