npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

secmanifest

v1.0.0

Published

Deep security auditing tool for JavaScript/TypeScript projects. Detects vulnerabilities, malware, backdoors, secrets, and compromised packages.

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 link

Opcion 2: Compilar directamente

bun install
bun run build
# El binario se genera como secmanifest.exe

Requisitos

  • 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 automaticamente

Opciones

| 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 especifico

secmanifest 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 cambios

Como funciona el auto-fix

  1. Detecta paquetes con "latest", versiones deprecated o con vulnerabilidades criticas
  2. Consulta el registry de npm para encontrar la ultima version segura
  3. Desinstala la version insegura
  4. Instala la version segura con ^version
  5. 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: exress vs express)
  • 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.lock y yarn.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 .env committeados
  • 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 strings
  • String.fromCharCode y secuencias hex/unicode
  • Compresion/descompresion en tiempo de ejecucion
  • child_process para 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
└── .gitignore

Veto 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:

  1. pnpm (prioritario)
  2. bun (alternativa segura)
  3. yarn (ultimo recurso)
  4. 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

  1. Fork el repositorio
  2. Crea una branch para tu feature (git checkout -b feature/nueva-funcion)
  3. Haz commit de tus cambios (git commit -m 'Add nueva funcion')
  4. Push a la branch (git push origin feature/nueva-funcion)
  5. 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 link

Licencia

MIT