DevShield · cortafuegos local de instalación

Refuerce su npm ci y pip install.

DevShield es una herramienta de desarrollo independiente de Anankelis para comprobar instalaciones de dependencias npm y pip. Complementa la extensión del navegador Proxia; no necesita DevShield para usar Proxia.

i

DevShield es una punto de control herramienta: solo protege las instalaciones que pasan por ella. Un npm ci ejecutado en paralelo le resulta invisible. Refuerza su CI y su recorrido local aprobado; no equivale a «instalarlo y estar protegido en cualquier situación».

Instalar

Obtenga DevShield y su guía.

Contacte con ANANKELIS o su administrador para obtener el paquete adecuado para su entorno y su guía de instalación.

Solicitar DevShield

El comando principal

devshield run : envolver una instalación.

DevShield ejecuta su comando, aplica los controles habilitados y (con --audit-log) escribe un registro JSONL local. Todos los controles utilizan por defecto warn (no destructivo); se cambia a block o fail cuando quiera reforzar la protección.

devshield run (--profile | --policy ) [--scripts-mode ] [--preflight-secrets] [--preflight-mode ] [--preflight-lockfile] [--lockfile-mode ] [--egress-proxy] [--egress-mode ] [--audit-log ] -- <command> [args...]
Los cuatro controles

Cuatro capas que se activan por separado.

Cada una es independiente y no destructiva por defecto. Combinadas cubren los vectores de instalación más habituales.

// 1 · ejecución

Scripts de ciclo de vida

--scripts-mode warn|block|fail

block desactiva los scripts de instalación npm (inyecta --ignore-scripts); fail rechaza la operación (salida 21) antes de iniciarla. También controla npx / npm exec / pnpm dlx como ejecución de código arbitrario. pip: solo advertencias. La capa que detiene cargas del tipo Shai-Hulud / Axios.

// 2 · integridad

Estado del archivo de bloqueo

--preflight-lockfile [--lockfile-mode warn|fail]

Señala (o rechaza, salida 22) un archivo de bloqueo npm ausente o sin hash, o un comando que modifica el archivo de bloqueo (npm install) en lugar de respetarlo (npm ci). Comprueba el estado, no las manipulaciones: npm ya verifica los hashes. pip: según las posibilidades, solo advertencias.

// 3 · secretos

Comprobación previa de secretos

--preflight-secrets [--preflight-mode warn|fail]

Informa de variables de entorno y archivos con secretos (.env, .npmrc, .pypirc…) antes de ejecutar la instalación: sin mostrar nunca los valores. fail → exit 20.

// 4 · red

Proxy de salida

--egress-proxy [--egress-mode warn|enforce]

Un proxy local (127.0.0.1) por el que pasa la instalación. enforce bloquea (403) cualquier conexión a un host fuera de la lista permitida. Sin MITM: bloquea por host, nunca por contenido. warn registra todo; si no puede enlazar el proxy en modo enforce, termina con salida 23 (cierre seguro).

Modos · scripts-mode
ModoEfectoDEVSHIELD_MODE
warnpredeterminado

Se ejecuta sin cambios; registra un evento lifecycle_scripts .

solo auditoría
block

Desactiva los scripts de npm (inyecta --ignore-scripts + npm_config_ignore_scripts). pip / npx: solo advertencias.

enforce
fail

Termina con 21 antes de iniciar el proceso si se fueran a ejecutar scripts. Comando desconocido: rechazo (cierre seguro).

enforce
!

Límite de cobertura:block la desactivación de scripts está verificada para npm. yarn Berry (v2+) ignora npm_config_* y no respeta --ignore-scripts; compruébelo antes de basar la protección de pnpm/yarn en ello.

Códigos de salida

Un código por rechazo, utilizable en scripts de CI.

CódigoSignificado
0

El proceso hijo se ejecutó; ningún control lo rechazó.

código del proceso hijo

Se transmite desde el comando envuelto.

20

--preflight-mode fail: riesgo de secreto detectado.

21

--scripts-mode fail: se ejecutarían scripts de ciclo de vida.

22

--lockfile-mode fail: riesgo en el estado del archivo de bloqueo.

23

--egress-mode enforce: el proxy no pudo iniciarse (cierre seguro).

10

check / observe egress: destino bloqueado por la política.

2

Error de uso o de argumento.

125 · 127

Error de escritura del registro de auditoría (125) · error de ejecución del comando (127).

Adopción: primero en CI

El punto de integración de mayor valor.

Es donde aterrizan los ataques a la cadena de suministro, es central y no se puede olvidar. Sustituya una línea y haga que la compilación se detenga de forma segura ante un riesgo:

# .github/workflows/ci.yml — compilación reforzada - run: | devshield run --profile npm \ --scripts-mode fail \ --preflight-lockfile --lockfile-mode fail \ --preflight-secrets --preflight-mode fail \ --egress-proxy --egress-mode enforce \ --audit-log devshield-audit.jsonl \ -- npm ci - run: devshield audit read --audit-log devshield-audit.jsonl # registro en el log de compilación

Otros puntos de integración: un alias del intérprete de comandos (alias npm='devshield run … -- npm') para un uso local transparente; un objetivo Makefile / just compartido para el equipo; un contenedor de desarrollode postCreateCommand.

Registro de auditoría

Un registro JSONL local y legible.

devshield audit read --audit-log <file> # resumen de cada evento devshield audit trace --audit-log <file> --context-id <id> # un comando y sus conexiones de salida

Eventos: command_run, lifecycle_scripts, secret_preflight, lockfile_preflight, egress_observation. Todo local; nada se transmite.

Con claridad: qué no es DevShield

Contención, no una varita mágica.

// alcance

Solo instalaciones que pasan por la herramienta

Sin interceptación de todo el sistema. Un npm ci resulta invisible. El alias del intérprete es lo más cercano, pero es opcional y se puede eludir.

// naturaleza

Contención, no integridad

--scripts-mode detiene la ejecución y la exfiltración; no le dirá si un paquete ha sido sustituido. npm ya verifica la integridad al instalar.

// red

Host, no contenido

El proxy bloquea por host:puerto, sin MITM. No distingue una descarga de un publish en un host permitido. github.com sigue permitido por defecto.

// destrucción

Sin defensa del sistema de archivos

Un postinstall que borra archivos solo se detiene si los scripts están desactivados (block/fail). El control de red no ayuda en este caso.

Utilice DevShield para reforzar su CI y su recorrido local aprobado, junto con la fijación de archivos de bloqueo y la procedencia de paquetes; no como una solución que «se instala y protege en cualquier situación».