@theoptimalpartner/npm-security-kit 1.0.2 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,495 +1,196 @@
1
- # NPM Security Kit 🛡️
1
+ # npm-security-kit
2
2
 
3
- **Protección instant contra paquetes maliciosos y vulnerabilidades**
3
+ Reglas de seguridad de dependencias npm en un solo comando que corre en el pipeline **antes de `npm ci`**. No tiene
4
+ dependencias: `npx` descarga un solo tarball y revisa el lockfile antes de que se ejecute un solo install script.
4
5
 
5
- Kit portable y reutilizable para proteger cualquier proyecto Node.js/npm contra:
6
- - ✅ 175+ paquetes maliciosos conocidos (campaña de phishing Oct 2025)
7
- - ✅ Vulnerabilidades en dependencias
8
- - ✅ Supply chain attacks
9
- - ✅ Typosquatting
10
- - ✅ Malware en dependencias transitivas
6
+ ## Qué revisa
11
7
 
12
- ---
8
+ | Chequeo | Qué mira | Error (bloquea) | Aviso |
9
+ |---|---|---|---|
10
+ | `malware` | `npm audit` sobre **todo** el lockfile, incluidas las devDependencies | Cualquier advisory de malware (CWE-506), con cualquier severidad | — |
11
+ | `vulnerabilities` | `npm audit --omit=dev` | Vulnerabilidades `critical` en producción | Resumen de las `high` |
12
+ | `node-version` | `.nvmrc`, `.node-version`, `.tool-versions`, `engines.node`, `volta.node`, `FROM node:` y `image:` del pipeline | Línea de Node sin soporte o que no es LTS | Hay una LTS más nueva (mientras no tenga su primera release LTS, solo se informa), pocos días de soporte, parche de seguridad pendiente, versiones mayores distintas, nada fijado |
13
+ | `npm-policy` | `.npmrc`, `engines.npm`, npm en uso, lockfile | Faltan `min-release-age`, `engine-strict` o `strict-allow-scripts`; npm < 11.17; no hay lockfile | Faltan `min-release-age-exclude[]`, `save-exact` o `audit-level`; lockfile < v3 |
14
+ | `install-scripts` | Paquetes con install scripts del lockfile contra `allowScripts` | Alguno sin aprobar (con `strict-allow-scripts`) | Alguno sin aprobar con el override por variable de entorno |
15
+ | `dockerfile` | `COPY` del `.npmrc` antes de `npm ci`, `.dockerignore` | Instala sin el `.npmrc` | Usa `npm install` en vez de `npm ci`; el `.dockerignore` deja fuera el lockfile |
13
16
 
14
- ## 🚀 Instalación Rápida (2 minutos)
17
+ Las versiones y fechas de Node se leen de nodejs.org en cada corrida: el kit no las trae fijas.
15
18
 
16
- ### Opción 1: Instalación Automática (Recomendado)
19
+ ### El `.npmrc` que pide
17
20
 
18
- ```bash
19
- # Desde la raíz de tu proyecto
20
- curl -sSL https://raw.githubusercontent.com/tu-org/npm-security-kit/main/install.sh | bash
21
- ```
22
-
23
- O si tienes el kit localmente:
24
-
25
- ```bash
26
- # Desde la raíz de tu proyecto
27
- bash /ruta/a/npm-security-kit/install.sh
28
- ```
29
-
30
- ### Opción 2: Instalación Manual (3 pasos)
21
+ ```ini
22
+ # Dependencias externas: mínimo 7 días desde su publicación
23
+ min-release-age=7
31
24
 
32
- ```bash
33
- # 1. Copiar archivos de seguridad
34
- cp -r /ruta/a/npm-security-kit/template/.security .
35
- cp -r /ruta/a/npm-security-kit/template/scripts .
36
- cp -r /ruta/a/npm-security-kit/template/.github .
37
-
38
- # 2. Hacer scripts ejecutables
39
- chmod +x scripts/*.sh
40
-
41
- # 3. Agregar scripts a package.json
42
- # Ver sección "Scripts NPM" más abajo
43
- ```
25
+ # Paquetes internos: se pueden instalar inmediatamente
26
+ min-release-age-exclude[]=@theoptimalpartner/*
44
27
 
45
- ---
28
+ # Guardar versiones exactas
29
+ save-exact=true
46
30
 
47
- ## 📦 ¿Qué Incluye?
31
+ # Validar engines (npm >= la versión mínima de la política)
32
+ engine-strict=true
48
33
 
49
- ### Archivos Instalados
34
+ # Install scripts: solo corren los aprobados en allowScripts (package.json)
35
+ strict-allow-scripts=true
50
36
 
51
- ```
52
- tu-proyecto/
53
- ├── .github/
54
- │ ├── workflows/
55
- │ │ └── security-audit.yml # GitHub Actions automático
56
- │ └── dependabot.yml # Actualizaciones automáticas
57
- ├── .security/
58
- │ ├── malicious-packages-blacklist.json # 175+ paquetes maliciosos
59
- │ └── config.json # Configuración personalizable
60
- ├── scripts/
61
- │ ├── check-malicious-packages.sh # Verificar paquetes maliciosos
62
- │ └── security-check.sh # Auditoría completa
63
- └── SECURITY.md # Documentación
37
+ # npm audit falla solo por vulnerabilidades críticas
38
+ audit-level=critical
64
39
  ```
65
40
 
66
- ### Scripts NPM Agregados
67
-
68
- ```json
69
- {
70
- "scripts": {
71
- "security:check": "./scripts/security-check.sh",
72
- "security:check-malicious": "./scripts/check-malicious-packages.sh",
73
- "security:audit": "npm audit --audit-level=moderate",
74
- "security:audit:fix": "npm audit fix",
75
- "security:outdated": "npm outdated",
76
- "security:licenses": "npm list --json | jq -r '.dependencies | to_entries[] | \"\\(.key): \\(.value.license)\"'",
77
- "security:full": "npm run security:audit && npm run security:check"
78
- }
79
- }
80
- ```
41
+ Además, `engines.npm` en `>=11.17`: npm 10 ignora `min-release-age` sin avisar y no aplica `allowScripts`.
81
42
 
82
- ---
43
+ ## Uso
83
44
 
84
- ## 🎯 Uso Diario
45
+ ### En el pipeline
85
46
 
86
- ### Antes de Instalar un Paquete
47
+ Un step **antes de `npm ci`**, con la versión del kit fija y solo en los PR a ramas que despliegan (ejemplo de
48
+ `bitbucket-pipelines.yml`, el pipeline que lee el chequeo de Node):
87
49
 
88
- ```bash
89
- # Verificar si un paquete es seguro
90
- npm run security:check-malicious
50
+ ```yaml
51
+ definitions:
52
+ steps:
53
+ - step: &test
54
+ name: Test (supply chain + build)
55
+ image: node:24.22.1
56
+ caches:
57
+ - npm
58
+ script:
59
+ # Antes de instalar: malware, vulnerabilidades, Node, .npmrc, install scripts, Dockerfiles
60
+ - npx --yes --min-release-age=0 @theoptimalpartner/npm-security-kit@2.0.0 check
61
+ - npm ci # con strict-allow-scripts, los scripts no aprobados cortan acá
62
+ - npm audit signatures
63
+ - npm run build
91
64
 
92
- # Ver info del paquete
93
- npm info paquete-nombre
65
+ pipelines:
66
+ pull-requests:
67
+ '**':
68
+ - step:
69
+ <<: *test
70
+ condition:
71
+ state: BITBUCKET_PR_DESTINATION_BRANCH == "develop" || BITBUCKET_PR_DESTINATION_BRANCH == "main"
94
72
  ```
95
73
 
96
- ### Después de Instalar Dependencias
74
+ - **Antes de `npm ci`:** `npm audit` funciona solo con el lockfile, así que el malware se detecta antes de que
75
+ corra su `postinstall`.
76
+ - **Versión fija** (`@2.0.0`): subir la política en un repo es un cambio visible en su PR.
77
+ - **`--min-release-age=0` solo para `npx`:** `npx` no aplica `min-release-age-exclude` (npm 11.19.1 lo aplica al
78
+ instalar, no al resolver el paquete de `npx`). Sin el flag, dentro de un repo con `min-release-age=7` una versión
79
+ nueva del kit no se puede usar hasta cumplir 7 días (`ETARGET … with a date before`). Afecta solo al kit: la
80
+ versión va fija y no tiene dependencias. El `npm ci` que sigue aplica los 7 días como siempre.
81
+ - **`npm audit signatures`** va después de `npm ci` porque necesita `node_modules`.
82
+ - Para guardar el resultado como artefacto: `npx --yes --min-release-age=0 @theoptimalpartner/npm-security-kit@2.0.0 check --json > npm-security-kit.json`.
97
83
 
98
- ```bash
99
- # Verificación rápida
100
- npm run security:audit
101
-
102
- # Verificación completa (recomendado)
103
- npm run security:full
104
- ```
84
+ ### Dockerfile
105
85
 
106
- ### Antes de Deploy
86
+ El `.npmrc` se copia con el lockfile, antes de `npm ci`. Si no, dentro de la imagen no aplican
87
+ `strict-allow-scripts`, `min-release-age` ni `engine-strict`:
107
88
 
108
- ```bash
109
- # Auditoría completa
110
- npm run security:full
111
-
112
- # Si hay problemas, auto-fix
113
- npm run security:audit:fix
89
+ ```dockerfile
90
+ COPY package.json package-lock.json .npmrc ./
91
+ RUN npm ci
114
92
  ```
115
93
 
116
- ---
117
-
118
- ## ⚙️ Configuración
119
-
120
- ### Personalizar para tu Proyecto
121
-
122
- Edita `.security/config.json`:
123
-
124
- ```json
125
- {
126
- "projectName": "mi-proyecto",
127
- "projectType": "node",
128
- "excludeDirs": ["node_modules", "dist", "build"],
129
- "strictMode": true,
130
- "notifications": {
131
- "email": "security@tuempresa.com",
132
- "slack": "https://hooks.slack.com/..."
133
- }
134
- }
135
- ```
136
-
137
- ### Tipos de Proyecto Soportados
138
-
139
- - `node` - Proyectos Node.js backend
140
- - `react` - Aplicaciones React
141
- - `nextjs` - Aplicaciones Next.js
142
- - `vue` - Aplicaciones Vue.js
143
- - `express` - APIs Express
144
- - `serverless` - Funciones serverless
145
- - `library` - Librerías npm
146
-
147
- ---
94
+ Si el `.dockerignore` excluye el `.npmrc` (por ejemplo con `.*`), agregar `!.npmrc` al final.
148
95
 
149
- ## 🔒 Características
96
+ ### Adoptarlo en un repo: `init`
150
97
 
151
- ### 1. Verificación de Paquetes Maliciosos
152
-
153
- **Blacklist de 175+ paquetes conocidos**:
154
- - Campaña de phishing Oct 2025
155
- - Patrones maliciosos (`redirect-*`)
156
- - Dominios de phishing
157
- - Cuentas npm comprometidas
98
+ Una vez por repo, en una rama:
158
99
 
159
100
  ```bash
160
- npm run security:check-malicious
101
+ npx --yes --min-release-age=0 @theoptimalpartner/npm-security-kit@2.0.0 init --dry-run
161
102
  ```
162
103
 
163
- ### 2. Auditoría Automática
164
-
165
- **npm audit mejorado**:
166
- - Verifica vulnerabilidades conocidas
167
- - Auto-fix cuando es posible
168
- - Reportes detallados
169
-
170
104
  ```bash
171
- npm run security:audit
105
+ npx --yes --min-release-age=0 @theoptimalpartner/npm-security-kit@2.0.0 init
172
106
  ```
173
107
 
174
- ### 3. GitHub Actions
175
-
176
- **Verificación en cada PR/Push**:
177
- - ✅ npm audit
178
- - ✅ Paquetes maliciosos
179
- - ✅ Dependency review
180
- - ✅ License compliance
181
- - ✅ Secrets detection
108
+ `init`:
182
109
 
183
- **Ejecución semanal automática** (Lunes 9am UTC)
110
+ - agrega al `.npmrc` las claves de la política que faltan (con un comentario) y corrige las que tienen otro valor,
111
+ sin borrar ni reordenar nada;
112
+ - completa `engines.npm` (`>=11.17`) y, solo si falta, `engines.node`;
113
+ - **no aprueba install scripts**: lista los pendientes y los comandos para revisarlos;
114
+ - **no edita** `bitbucket-pipelines.yml` ni los Dockerfiles: muestra el step y los `COPY` corregidos;
115
+ - se puede correr de nuevo sin cambiar nada.
184
116
 
185
- ### 4. Dependabot
117
+ Después: revisar el diff, aprobar o negar los install scripts, aplicar el step y el Dockerfile, y correr `check`.
186
118
 
187
- **Actualizaciones automáticas**:
188
- - Security patches prioritarios
189
- - Agrupación inteligente
190
- - PRs con contexto
191
-
192
- ### 5. Pre-commit Hooks (Opcional)
193
-
194
- Instalar con Husky:
119
+ ### En local
195
120
 
196
121
  ```bash
197
- npm install --save-dev husky
198
- npx husky init
199
- echo "npm run security:check-malicious" > .husky/pre-commit
200
- ```
201
-
202
- ---
203
-
204
- ## 📊 Ejemplos de Salida
205
-
206
- ### ✅ Proyecto Limpio
207
-
122
+ npx --yes --min-release-age=0 @theoptimalpartner/npm-security-kit@2.0.0 check
208
123
  ```
209
- ========================================
210
- Malicious Package Detection
211
- ========================================
212
-
213
- Loading blacklist...
214
- ✓ Loaded 175 malicious packages
215
- Source: Socket.dev - 175 Malicious npm Packages...
216
- Last Updated: 2025-10-20
217
-
218
- Analyzing installed packages...
219
- Total installed packages: 342
220
-
221
- Checking against blacklist...
222
-
223
- Checking against malicious patterns...
224
-
225
- ========================================
226
- Results
227
- ========================================
228
- ✓ No malicious packages detected
229
-
230
- Summary:
231
- - Checked: 342 packages
232
- - Against: 175 known malicious packages
233
- - Found: 0 threats
234
- ```
235
-
236
- ### ❌ Amenaza Detectada
237
-
238
- ```
239
- ========================================
240
- Results
241
- ========================================
242
- ✗ MALICIOUS PACKAGES FOUND!
243
-
244
- Summary:
245
- - Direct matches: 1
246
- - Pattern matches: 0
247
- - Total threats: 1
248
-
249
- Malicious packages found:
250
- - redirect-abc123 (direct match)
251
-
252
- IMMEDIATE ACTIONS REQUIRED:
253
- 1. DO NOT use this application
254
- 2. Uninstall malicious packages immediately
255
- 3. Review application logs for suspicious activity
256
- 4. Check for data exfiltration
257
- 5. Report to security team
258
- ```
259
-
260
- ---
261
-
262
- ## 🔄 Actualización
263
-
264
- ### Actualizar Blacklist
265
-
266
- ```bash
267
- # Descargar última blacklist
268
- curl -o .security/malicious-packages-blacklist.json \
269
- https://raw.githubusercontent.com/tu-org/npm-security-kit/main/blacklist.json
270
124
 
271
- # Verificar
272
- npm run security:check-malicious
273
- ```
125
+ No se instala como devDependency ni usa husky: el `.npmrc` protege el `npm install` local y el pipeline es el
126
+ control que no se puede saltar.
274
127
 
275
- ### Actualizar Scripts
128
+ ## Cómo leer la salida
276
129
 
277
- ```bash
278
- # Re-ejecutar instalación (preserva config)
279
- bash /ruta/a/npm-security-kit/install.sh --update
280
- ```
130
+ Un bloque por chequeo. `✗` error, `⚠` aviso, `ℹ` información, con `archivo:línea` cuando aplica. Cada mensaje dice
131
+ qué hacer. Cuando el mismo aviso aparece en varios archivos (por ejemplo, la misma versión de Node en `.nvmrc`,
132
+ Dockerfile y pipeline) va una sola vez, con la lista de archivos.
281
133
 
282
- ---
134
+ | Exit code | Significado |
135
+ |---|---|
136
+ | 0 | Sin errores (puede haber avisos) |
137
+ | 1 | Hay al menos un error |
138
+ | 2 | Uso incorrecto o fallo del kit |
283
139
 
284
- ## 🎓 Mejores Prácticas
140
+ `check --json` escribe solo JSON en stdout:
141
+ `{ kitVersion, policy, results: [{ check, level, message, file?, line?, data? }], summary: { errors, warnings } }`.
285
142
 
286
- ### 1. Verificar Antes de Instalar
143
+ ## Recetas
287
144
 
288
- ```bash
289
- # ❌ NO HACER
290
- npm install paquete-random
291
-
292
- # ✅ HACER
293
- npm info paquete-random
294
- npm view paquete-random repository
295
- npm view paquete-random license
296
- npm install paquete-random
297
- npm run security:check-malicious
298
- ```
145
+ ### `npm ci` falla con EUSAGE (lockfile incompleto)
299
146
 
300
- ### 2. Mantener Dependencias Actualizadas
147
+ Pasa con lockfiles generados con npm 10, a los que les faltan opcionales de plataforma. Regenerarlo con npm 11:
301
148
 
302
149
  ```bash
303
- # Ver paquetes desactualizados
304
- npm run security:outdated
305
-
306
- # Actualizar con cuidado
307
- npm update
308
- npm run security:full
150
+ npm install --package-lock-only
309
151
  ```
310
152
 
311
- ### 3. Revisar Dependabot PRs
312
-
313
- - ✅ Priorizar PRs de seguridad
314
- - ✅ Leer changelog antes de aprobar
315
- - ✅ Probar en staging primero
316
-
317
- ### 4. Auditorías Regulares
318
-
319
- | Frecuencia | Acción | Comando |
320
- |------------|--------|---------|
321
- | **Diario** | Revisar Dependabot PRs | GitHub UI |
322
- | **Semanal** | GitHub Actions (automático) | - |
323
- | **Mensual** | Auditoría manual completa | `npm run security:full` |
324
- | **Trimestral** | Actualizar blacklist | Ver sección Actualización |
325
-
326
- ---
327
-
328
- ## 🚨 Respuesta a Incidentes
329
-
330
- ### Si se Detecta un Paquete Malicioso
331
-
332
- 1. **DETENER** - No desplegar ni ejecutar
333
- 2. **AISLAR** - Marcar entorno como comprometido
334
- 3. **ANALIZAR**:
335
- ```bash
336
- npm run security:check-malicious
337
- npm list | grep nombre-paquete
338
- git log package-lock.json
339
- ```
340
- 4. **REMOVER**:
341
- ```bash
342
- npm uninstall nombre-paquete
343
- npm audit
344
- npm run security:full
345
- ```
346
- 5. **INVESTIGAR**:
347
- - Revisar logs de aplicación
348
- - Verificar conexiones de red
349
- - Buscar data exfiltration
350
- 6. **REPORTAR**:
351
- - Equipo de seguridad interno
352
- - npm security (security@npmjs.com)
353
- - Socket.dev (https://socket.dev/report)
354
-
355
- ---
153
+ ### Parche urgente con menos de 7 días
356
154
 
357
- ## 🔧 Troubleshooting
358
-
359
- ### Error: "jq command not found"
360
-
361
- ```bash
362
- # Ubuntu/Debian
363
- sudo apt-get install jq
364
-
365
- # macOS
366
- brew install jq
367
-
368
- # Windows (WSL)
369
- sudo apt-get install jq
370
- ```
371
-
372
- ### Error: "Permission denied" en scripts
155
+ `min-release-age=7` no deja instalar versiones recién publicadas. Para un parche de seguridad que no puede esperar:
373
156
 
374
157
  ```bash
375
- chmod +x scripts/*.sh
158
+ npm install paquete@x.y.z --min-release-age=0
376
159
  ```
377
160
 
378
- ### GitHub Actions no ejecuta
161
+ Dejar en la descripción del PR qué versión es, por qué no puede esperar (el advisory) y quién lo aprobó, y revisar que
162
+ el lockfile solo cambió en ese paquete y sus dependencias.
379
163
 
380
- Verifica que `.github/workflows/security-audit.yml` esté commiteado:
164
+ ### Aprobar o negar install scripts
381
165
 
382
166
  ```bash
383
- git add .github/workflows/security-audit.yml
384
- git commit -m "chore: add security audit workflow"
385
- git push
167
+ npm ci --ignore-scripts
168
+ npm install-scripts ls
169
+ npm install-scripts approve esbuild # baja el binario de su plataforma: lo necesita
170
+ npm install-scripts deny core-js # solo imprime un mensaje: no hace falta
386
171
  ```
387
172
 
388
- ### Dependabot no abre PRs
389
-
390
- Verifica en GitHub Settings > Security > Dependabot que esté habilitado.
391
-
392
- ---
393
-
394
- ## 📚 Recursos
395
-
396
- ### Documentación Adicional
397
-
398
- - **SECURITY_PROTOCOL.md** - Protocolo completo (en auth-service)
399
- - **SECURITY_AUDIT_REPORT.md** - Ejemplo de informe
400
- - **SECURITY_QUICK_GUIDE.md** - Guía rápida
401
-
402
- ### Enlaces Útiles
173
+ Se aprueba lo que necesita compilar o bajar binarios para funcionar, y se niega lo que es solo telemetría o
174
+ publicidad. El kit no aprueba nada en automático. Queda en `allowScripts` del `package.json`. Reglas (las mismas de
175
+ npm):
403
176
 
404
- - Socket.dev Blog: https://socket.dev/blog
405
- - npm Security: https://docs.npmjs.com/security
406
- - OWASP Dependency Check: https://owasp.org/www-community/Component_Analysis
407
- - Snyk Advisor: https://snyk.io/advisor
177
+ - `"pkg": true|false` vale para cualquier versión; `"pkg@1.2.3"` solo para esa; `"pkg@1.2.3 || 1.2.4"` para una lista.
178
+ - `false` le gana a `true`.
179
+ - **npm ignora los rangos** (`pkg@^1`) y los dist-tags (`pkg@latest`): esa entrada no aprueba nada, y el kit lo avisa.
180
+ - Las opcionales de otra plataforma (como `fsevents` en Linux) npm no las instala: en el pipeline no cuentan.
408
181
 
409
- ### Reportar Vulnerabilidades
182
+ ### Desactivar `strict-allow-scripts` en un repo (override)
410
183
 
411
- - NPM Security: security@npmjs.com
412
- - Socket.dev: https://socket.dev/report
413
- - GitHub Security: https://github.com/security
184
+ Si un repo no puede adoptar todavía la aprobación de install scripts, se define la variable de npm, que le gana al
185
+ `.npmrc`:
414
186
 
415
- ---
187
+ - en el pipeline: *Repository variable* `npm_config_strict_allow_scripts` = `false`;
188
+ - en local: `npm_config_strict_allow_scripts=false npm ci`.
416
189
 
417
- ## 🤝 Contribuir
190
+ Con el override, npm ejecuta los scripts sin aprobar y el kit los informa como **aviso**, más un aviso de que el
191
+ override está activo. Dentro del `docker build` la variable no llega sola: hay que pasarla como `ARG`.
418
192
 
419
- ### Agregar Paquetes a la Blacklist
420
-
421
- 1. Verificar en múltiples fuentes (Socket.dev, Snyk, GitHub)
422
- 2. Editar `.security/malicious-packages-blacklist.json`
423
- 3. Agregar evidencia y referencias
424
- 4. Pull request con documentación
425
-
426
- ### Mejorar Scripts
427
-
428
- 1. Fork del repositorio
429
- 2. Crear rama con feature
430
- 3. Probar en múltiples proyectos
431
- 4. PR con tests y documentación
432
-
433
- ---
434
-
435
- ## 📄 Licencia
436
-
437
- MIT License - Úsalo libremente en proyectos comerciales y open source
438
-
439
- ---
440
-
441
- ## ⭐ Proyectos Usando Este Kit
442
-
443
- - auth-service
444
- - jwt-auth-package
445
- - auth-react-client
446
-
447
- ¿Usas este kit? Agrega tu proyecto aquí!
448
-
449
- ---
450
-
451
- ## 🎯 Roadmap
452
-
453
- - [ ] npm package instalable (`npm install -D @tuorg/security-kit`)
454
- - [ ] Integración con más CI/CD (GitLab, Bitbucket, CircleCI)
455
- - [ ] Dashboard web de métricas
456
- - [ ] Integración con Slack/Discord
457
- - [ ] Soporte para Python/pip, Ruby/gems, etc.
458
- - [ ] Machine learning para detectar patrones
459
-
460
- ---
461
-
462
- ## 📞 Soporte
463
-
464
- - **Issues**: GitHub Issues
465
- - **Discusiones**: GitHub Discussions
466
- - **Email**: security@tuempresa.com
467
- - **Slack**: #security channel
468
-
469
- ---
470
-
471
- **Versión**: 1.0.0
472
- **Última actualización**: 2025-10-20
473
- **Mantenedor**: Diego
474
-
475
- ---
476
-
477
- ## 🚀 Quick Start
478
-
479
- ```bash
480
- # 1. Clonar o descargar el kit
481
- git clone https://github.com/tu-org/npm-security-kit
482
-
483
- # 2. Ir a tu proyecto
484
- cd mi-proyecto
485
-
486
- # 3. Ejecutar instalación
487
- bash /ruta/a/npm-security-kit/install.sh
488
-
489
- # 4. Verificar
490
- npm run security:check-malicious
491
-
492
- # 5. ¡Listo! Tu proyecto está protegido
493
- ```
193
+ ### El registro de npm no responde
494
194
 
495
- **¿Preguntas?** Lee la documentación completa o abre un issue.
195
+ El chequeo de malware falla cerrado: `no se pudo consultar los advisories del registro (…); reintentar el step`.
196
+ No es un hallazgo de seguridad; se reintenta el step. Si nodejs.org no responde, `node-version` avisa y se omite.
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ import { main } from '../src/cli.js';
3
+
4
+ main(process.argv.slice(2)).then(
5
+ (code) => {
6
+ process.exitCode = code;
7
+ },
8
+ (error) => {
9
+ process.stderr.write(`npm-security-kit: fallo interno: ${error?.stack ?? error}\n`);
10
+ process.exitCode = 2;
11
+ },
12
+ );