secmanifest
v1.0.0
Published
Deep security auditing tool for JavaScript/TypeScript projects. Detects vulnerabilities, malware, backdoors, secrets, and compromised packages.
Maintainers
Readme
secmanifest
Herramienta de CLI para auditoria de seguridad profunda en proyectos JavaScript/TypeScript. Detecta vulnerabilidades, malware, backdoors, secrets expuestos y paquetes comprometidos antes de que te hackeen.
Instalacion
Opcion 1: Desde el repositorio
git clone https://github.com/tu-usuario/secmanifest.git
cd secmanifest
bun install
bun run build
bun linkOpcion 2: Compilar directamente
bun install
bun run build
# El binario se genera como secmanifest.exeRequisitos
- Bun >= 1.0
- Un gestor de paquetes seguro: pnpm, bun o yarn (npm esta bloqueado por seguridad)
Comandos Disponibles
secmanifest audit
Auditoria de seguridad completa. Ejecuta 10 escaners diferentes.
secmanifest audit # Audita directorio actual
secmanifest audit ./mi-proyecto # Audita un directorio especifico
secmanifest audit --json # Output en formato JSON
secmanifest audit --quick # Escaneo rapido (sin API externa)
secmanifest audit --auto-fix # Arregla paquetes inseguros automaticamenteOpciones
| Flag | Descripcion |
|------|-------------|
| --json | Output en formato JSON para integracion con otros tools |
| --verbose | Muestra errores detallados durante el escaneo |
| --quick | Escaneo local sin consultar Sonatype OSS Index ni paquetes outdated |
| --auto-fix | Arregla automaticamente paquetes con "latest" o deprecated |
| --skip-malware | Omitir escaneo de malware y typosquatting |
| --skip-secrets | Omitir escaneo de secrets y credenciales |
| --skip-licenses | Omitir escaneo de licencias restrictivas |
| --skip-outdated | Omitir escaneo de paquetes desactualizados |
| --skip-metadata | Omitir escaneo de metadata sospechosa |
| --skip-obfuscation | Omitir escaneo de codigo ofuscado |
| --skip-node-version | Omitir chequeo de Node.js EOL |
secmanifest check
Escaneo rapido de seguridad sin consultar APIs externas. Ideal para CI/CD o ejecuciones rapidas.
secmanifest check # Escaneo rapido
secmanifest check --json # Output JSON
secmanifest check ./proyecto # Directorio especificosecmanifest fix
Arregla paquetes con versiones inseguras automaticamente. Consulta el registry de npm para encontrar versiones seguras.
secmanifest fix # Analiza y arregla todos los paquetes inseguros
secmanifest fix chalk lodash # Arregla paquetes especificos
secmanifest fix --dry-run # Muestra que haria sin ejecutar cambiosComo funciona el auto-fix
- Detecta paquetes con
"latest", versiones deprecated o con vulnerabilidades criticas - Consulta el registry de npm para encontrar la ultima version segura
- Desinstala la version insegura
- Instala la version segura con
^version - Si falla, restaura la version original automaticamente
Escaners de Seguridad
1. Malware y Typosquatting (malware.ts)
Detecta paquetes maliciosos conocidos y suplantaciones de paquetes populares.
- Lista de paquetes comprometidos conocidos (event-stream, faker.js, colors.js, etc.)
- Deteccion de typosquatting con distancia de Levenshtein (ej:
exressvsexpress) - Analisis de paquetes con nombres sospechosamente similares a paquetes populares
2. Backdoors en Manifiestos (backdoors.ts)
Analiza package.json en busca de ajustes peligrosos que atacantes pueden explotar.
- Scripts peligrosos:
preinstall,postinstall,install,prepare - Dependencias que apuntan a repositorios Git externos sin version fija
- Version ranges abiertos (
*,>=0.0.0) - Dependencias con
"latest"(vector de ataque de cadena de suministro) - Hooks de ciclo de vida complejos con multiples comandos encadenados
3. Drift en Lockfile (lockfile-drift.ts)
Detecta paquetes instalados pero no declarados en package.json.
- Soporte para
pnpm-lock.yaml,bun.lockyyarn.lock - Detecta "paquetes fantasma" que pueden ser dependencias no intencionadas
- Identifica divergencias entre lo declarado y lo instalado
4. Secrets y Credenciales (secrets.ts)
Escanea el codigo fuente y archivos de entorno en busca de secretos expuestos.
- AWS Access Keys y Secret Keys
- GitHub/GitLab tokens (PAT, Fine-grained)
- Slack tokens y webhooks
- Stripe API keys
- Google API keys
- Bearer tokens y JWTs
- Connection strings (MongoDB, MySQL, PostgreSQL, Redis)
- Archivos
.envcommitteados - Verificacion de
.gitignore
5. Licencias Restringidas (licenses.ts)
Detecta paquetes con licencias que pueden forzar divulgacion de codigo privado.
- AGPL-3.0: Requiere liberar codigo incluso en SaaS
- GPL-2.0/3.0: Copyleft fuerte que aplica a trabajos derivados
- SSPL: Requiere liberar todo el stack de servicios
- EUPL/OSL: Copyleft con implicaciones legales
6. Metadata Sospechosa (metadata.ts)
Analiza metadatos de paquetes instalados en busca de anomalias.
- Paquete sin repositorio asociado
- Paquete sin licencia declarada
- Paquete con codigo nativo (gypfile)
- Scripts que acceden a red durante instalacion
7. Codigo Ofuscado (obfuscation.ts)
Detecta patronies de ofuscacion comunes en malware.
- Ejecucion de codigo codificado en Base64
eval()con concatenacion de stringsString.fromCharCodey secuencias hex/unicode- Compresion/descompresion en tiempo de ejecucion
child_processpara ejecucion de comandos del sistema
8. Version Node.js EOL (node-version.ts)
Detecta si el proyecto requiere versiones de Node.js sin soporte.
- Versiones End-of-Life (0.10 - 19)
- Recomendacion de versiones soportadas
9. Vulnerabilidades (Sonatype OSS Index) (vulnerabilities.ts)
Consulta la base de datos de Sonatype para vulnerabilidades conocidas.
- CVEs conocidas con severidad y CVSS score
- Rate limiting automatico con retry
- Soporte para batch de 128 paquetes por request
10. Paquetes Desactualizados (outdated.ts)
Detecta paquetes con versiones nuevas disponibles.
- Paquetes con actualizaciones mayores (breaking changes)
- Paquetes con actualizaciones menores (patches)
Ejemplo de Salida
╔══════════════════════════════════════╗
║ SECMANIFEST - Security Audit ║
╚══════════════════════════════════════╝
Resumen del Proyecto
─────────────────────────────────────
Proyecto: mi-app
Directorio: /home/user/mi-app
Gestor: pnpm v9.0.0
Paquetes: 45
Hallazgos: 3
Tiempo: 8.21s
Desglose por Severidad:
[!!] Alto: 1
[!] Medio: 1
* Bajo: 1
Score de Riesgo:
[██████████████████░░░░░░░░░░░░] 59/100
ℹ PROYECTO CON RIESGOS MODERADOS - Revisión recomendada
Hallazgos Detallados:
┌──────────────┬──────────────┬──────────────────────────────────┬────────────┐
│ Severidad │ Categoria │ Titulo │ Paquete │
├──────────────┼──────────────┼──────────────────────────────────┼────────────┤
│ [!!] high │ Backdoor │ Dependencia con "latest": axios │ axios │
│ [!] medium │ Backdoor │ Rango de version abierto: lodash │ lodash │
│ * low │ Malware │ Paquete sin repositorio: foo │ foo │
└──────────────┴──────────────┴──────────────────────────────────┴────────────┘Arquitectura
secmanifest/
├── src/
│ ├── cli.ts # Entry point - Commander setup
│ ├── commands/
│ │ ├── audit.ts # Comando principal de auditoria
│ │ └── fix.ts # Comando de auto-fix
│ ├── core/
│ │ ├── package-manager.ts # Deteccion de gestores de paquetes
│ │ ├── project-analyzer.ts # Analisis de package.json
│ │ ├── reporter.ts # Reporte en terminal con colores
│ │ └── fixer.ts # Logica de desinstalar/reinstalar
│ ├── scanners/
│ │ ├── vulnerabilities.ts # Sonatype OSS Index API
│ │ ├── malware.ts # Typosquatting + paquetes maliciosos
│ │ ├── backdoors.ts # Scripts peligrosos en package.json
│ │ ├── lockfile-drift.ts # Comparacion package.json vs lockfile
│ │ ├── secrets.ts # Credenciales expuestas
│ │ ├── licenses.ts # Licencias restrictivas
│ │ ├── metadata.ts # Metadatos sospechosos
│ │ ├── obfuscation.ts # Codigo ofuscado
│ │ ├── outdated.ts # Paquetes desactualizados
│ │ └── node-version.ts # Node.js EOL
│ └── utils/
│ ├── http.ts # Cliente HTTP con rate limiting
│ ├── registry.ts # Consulta npm registry
│ └── types.ts # Tipos compartidos
├── package.json
├── tsconfig.json
└── .gitignoreVeto a npm
secmanifest tiene un veto absoluto a npm como gestor de paquetes. Esto se debe a sus historial de vulnerabilidades en la ejecucion de scripts de dependencias. La herramienta detecta automaticamente el gestor de paquetes y sigue este orden de prioridad:
- pnpm (prioritario)
- bun (alternativa segura)
- yarn (ultimo recurso)
- npm → Bloqueado
Si no se detecta ningun gestor seguro, la herramienta pregunta si desea continuar.
Como Ayudar a Mejorar el Proyecto
Funciones Pendientes
- [ ] Integracion con Socket.dev API para deteccion de supply chain attacks
- [ ] Analisis de dependencias transitivas (no solo directas)
- [ ] Deteccion de paquetes con binarios sospechosos
- [ ] Integracion con GitHub Actions para CI/CD
- [ ] Modo watch para auditoria continua
- [ ] Reporte en HTML exportable
- [ ] Integracion con Slack/Discord para notificaciones
- [ ] Cache local de resultados de Sonatype
- [ ] Soporte para monorepos (workspaces)
- [ ] Deteccion de dependencias duplicadas
- [ ] Analisis de bundle size para detectar paquetes sospechosamente grandes
- [ ] Verificacion de integridad con checksums
Contribuir
- Fork el repositorio
- Crea una branch para tu feature (
git checkout -b feature/nueva-funcion) - Haz commit de tus cambios (
git commit -m 'Add nueva funcion') - Push a la branch (
git push origin feature/nueva-funcion) - Abre un Pull Request
Desarrollo
# Instalar dependencias
bun install
# Ejecutar en desarrollo
bun run dev audit
# Verificar tipos
bun run typecheck
# Compilar binario
bun run build
# Registrar globalmente
bun linkLicencia
MIT
