Estado: parte ya está aplicado (pnpm 11 + cooldown, firma de binarios,
lanzador sin postinstall). Algunos puntos siguen pendientes y están
marcados como tal abajo.
Por qué
La mayoría de incidentes de cadena de suministro en el ecosistema JS/Python llegan por dos vías: scripts de instalación que ejecutan código arbitrario al instalar una dependencia, y paquetes recién publicados comprometidos. Nexenv cierra ambas.En el repositorio (contribuidores)
- pnpm 11 como gestor:
packageManager: "pnpm@11",pnpm-lock.yamlversionado, CI concorepack enable+--frozen-lockfile. - Cooldown de 24 h (
minimumReleaseAge: 1440enpnpm-workspace.yaml): no se instala una versión de dependencia hasta 24 h después de publicarse, mitigando paquetes comprometidos recién subidos. - Cero scripts de dependencias (
allowBuilds: {}): ninguna dependencia ejecuta lifecycle scripts eninstallsalvo allowlist explícita.
En la distribución (usuarios)
- Binario firmado: cada release se firma; Tauri verifica la firma minisign en cada update.
- Wrappers npm/pip sin postinstall obligatorio: el wrapper es un lanzador
que descarga el binario de tu plataforma de forma perezosa (primer uso)
y verifica firma Ed25519 + SHA-256 antes de ejecutarlo. No hay ejecución
de código en
install.
Pendiente
- Secret
NEXENV_CLI_SIGNING_KEYen GitHub para activar la firma fuerte del CLI en CI (hoy corre en modo SHA-256 sin error). - Wrapper endurecido: dependencias a cero,
--provenance, auditoría CVE en CI, wrapper PyPI equivalente. - Proyectos del usuario: flag
--ignore-scriptsseguro por defecto al gestionar dependencias de los proyectos del usuario, con aviso en la UI y opt-in consciente. - ADR-004 documentando la postura completa.
Para tus proyectos
Cuando Nexenv gestione las dependencias de tus proyectos, aplicará la misma filosofía: nada de ejecución silenciosa de scripts eninstall sin que lo
sepas. (Esta capa es la que sigue pendiente arriba.)