No instales Zod 4.6.6: podría estar infectado
Zod 4.6.6 compromised by malware?
El commit d821685 de Zod introduce un script preinstall que ejecuta meta.test.mjs. Este código consulta contratos Ethereum a través de RPCs públicos, obtiene una URL desde la blockchain y descarga un payload ofuscado que se ejecuta en el proceso de instalación. La versión 4.6.6 de los paquetes zod y @zod/mini incluye este comportamiento malicioso.
No instales Zod 4.6.6; podría estar infectado.
- jaynetics
El código comprometido en realidad no se llegó a publicar. Este análisis tiene mucha información:
- yuvalkarmi
Esto es de hace 3 semanas, gente. SÍ fue un compromiso real del repositorio: llegó al main de Zod, pero no a npm.
El 21 de septiembre, alguien usó las credenciales de git de Colin para meter este código comprometido en el proyecto, Colin lo detectó y lo revirtió ese mismo día (PR #6620). Después sí publicó la 4.6.6 el 11 de octubre, pero NO contenía el código infectado.
Por cierto, Zod no fue el único paquete atacado: se intentó el mismo ataque contra standard-schema y nub. Nub SÍ llegó a npm, pero el escaneo de malware de npm lo bloqueó.
Parece un intento legítimo (bueno, ilegítimo) de ataque a la cadena de suministro, pero ninguna versión real de Zod quedó comprometida.
- luggage_bazooka
La versión más reciente 4.6.6 tiene un commit muy interesante (d821685) "Fix bugs and improve performance", que contiene los siguientes cambios https://github.com/colinhacks/zod/commit/d821685ea6732436fcd...
No he estudiado qué hace exactamente packages/mini/meta.test.mjs en particular, pero no tiene buena pinta
- jaapz
"Podría" es bastante suave, está infectado — EDIT: cambiaron el título, antes decía "podría estar infectado".
El malware parece inyectar algún payload JS que se ejecuta cuando se instala zod, obteniéndolo de un contrato inteligente de Ethereum (si lo entiendo bien).
No olvidéis marcar la versión en npm.
EDIT: parece que la actualización nunca llegó a NPM: https://news.ycombinator.com/item?id=50053253
- xx_ns
Curiosamente, añadieron la clave `preinstall` (que se supone que ejecuta el script malicioso al instalar) en la raíz del package.json, y no dentro de `scripts`, así que por lo que puedo ver esto no se ejecutaría al instalar.
Por lo demás, sí, esto parece un cargador de etapa 1 para obtener y ejecutar un payload desde la mainnet de Ethereum.