Skip to main content
Nexenv toma la seguridad de la cadena de suministro como un requisito, no como un extra. Esta página explica la postura para usuarios y contribuidores.
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.yaml versionado, CI con corepack enable + --frozen-lockfile.
  • Cooldown de 24 h (minimumReleaseAge: 1440 en pnpm-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 en install salvo 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_KEY en 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-scripts seguro 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 en install sin que lo sepas. (Esta capa es la que sigue pendiente arriba.)