Escanea tu proyecto en 10 segundos.

DepSentinel revisa tus dependencias antes de que se instalen o se desplieguen y bloquea paquetes maliciosos, typosquatting, scripts de instalación peligrosos y vulnerabilidades. Gratis, local y de código abierto.

go install github.com/AlejandroMolines/depsentinel/cmd/depsentinel@latest

Con Go 1.22 o superior instalas el comando depsentinel. Después, dentro de tu proyecto: depsentinel scan. (También puedes usar Docker sin instalar nada: ver README y docs de instalación.)

$ depsentinel scan --ci --fail-on highDepSentinel 0.1.0 · ~/online-storenpm, Docker, GitHub Actions · 1328 packages · 4 manifests SEVERITY  PACKAGE                       RULE           DETAILcritical    npm event-stream@3.3.6        malicious       Known compromised version…critical    npm minimist@1.2.0            vulnerability   Prototype Pollution in min…high       actions some-org/deploy@main  action-pinning  Action pinned to a mutable branch m…high       docker node:latest            remote-script   Downloads and runs a remote s…high       npm lodash@4.17.15            vulnerability   Command Injection in lodas…medium      npm reactt@1.0.0              typosquat       Possible typosquatting of «…low        npm core-js@3.30.2            install-script  Runs scripts on install… What to do first  • event-stream@3.3.6 — Remove it, reinstall from scratch and rotate credentials ac…  • minimist@1.2.0 — Update to 1.2.6 or later.  • some-org/deploy@main — Pin the action to the full commit SHA: uses: some-or… Summary: 1328 packages · 2 critical · 3 high · 1 medium · 1 lowOverall risk: CRITICAL✖ 5 findings of severity high or higher: build fails.
Salida de ejemplo, abreviada, de un proyecto ficticio. Código de salida 1: el CI se detiene.

Elegiste 19 paquetes. Se instalaron 1.328.

Medido con DepSentinel sobre el package-lock.json de un proyecto React de prueba. Cada punto es un paquete que se instala en tu máquina y en tu CI, y cada uno puede ejecutar código al instalarse. Casi nadie ha leído ninguno.

  • 19 los que escribiste en package.json
  • 3 ejecutan scripts en tu máquina al instalarse
  • 1.306 que nunca elegiste

DepSentinel los revisa todos en segundos.

Lo que busca en cada escaneo

Siete comprobaciones, todas con una explicación y una forma concreta de arreglarlas.

Paquetes maliciosos conocidos
Cada dependencia se contrasta con OSV (los avisos MAL-* de OpenSSF) y con una base local firmada que sigue funcionando sin conexión. Reconoce casos como event-stream@3.3.6, crossenv o las versiones secuestradas de ua-parser-js.
Typosquatting
Nombres casi idénticos a los populares: reactt, lodassh, reqeusts. Mide la distancia de edición y la antigüedad del paquete para no marcar los legítimos.
Scripts de instalación peligrosos
Lee preinstall, install y postinstall. Con --deep descarga el paquete, comprueba su hash contra el lockfile y revisa el código que esos scripts ejecutan: descargas remotas, shells inversas, robo de credenciales.
Vulnerabilidades conocidas
CVE y GHSA vía OSV, con severidad CVSS y la versión que lo corrige. depsentinel fix sube las dependencias directas y fija las acciones de GitHub a un SHA.
Dependencias abandonadas
Paquetes sin versiones desde hace años, versiones deprecadas o retiradas, y paquetes que ya no existen en el registry.
Cambios raros de versión o mantenedor
Versiones 99.x típicas de dependency confusion, publicadores o mantenedores nuevos justo en la versión reciente, y tarballs que no coinciden con el lockfile.
Más allá de npm
PyPI, Go, Dockerfiles y GitHub Actions: curl | sh en un Dockerfile, acciones sin fijar a un SHA, pull_request_target con checkout del PR, inyección de comandos en workflows.

De cero a bloquear en el CI

Tres pasos. El primero y el segundo no necesitan cuenta ni servidor.

  1. Instálalo

    go install github.com/AlejandroMolines/depsentinel/cmd/depsentinel@latest

    Un único binario sin dependencias. También hay imagen de Docker y binarios en cada release, con su suma de comprobación.

  2. Escanea tu proyecto

    cd mi-proyecto
    depsentinel scan

    Detecta solo los lockfiles, Dockerfiles y workflows que encuentre. depsentinel report --html --open abre el panel con el detalle de cada paquete.

  3. Que el CI lo exija

    - uses: AlejandroMolines/depsentinel/action@v1
      with:
        fail-on: high

    Comenta el resultado en cada pull request y falla el build si hay riesgo alto. Una excepción solo vale si lleva justificación escrita.

This is what the comment DepSentinel leaves (and updates, without duplicating) on every pull request looks like.

Qué sale de tu máquina, y qué no

DepSentinel funciona en tu equipo o en tu CI. No hay cuenta, no hay servidor propio y no hay telemetría.

Sale, solo si hay conexión

  • El nombre y la versión de cada paquete público, hacia api.osv.dev, para consultar avisos de seguridad.
  • El nombre del paquete, hacia registry.npmjs.org, pypi.org o proxy.golang.org, para leer fechas y mantenedores.

No sale nunca

  • Tu código, tu lockfile completo, las rutas de tu equipo, tokens y variables de entorno.
  • Los paquetes instalados desde git, rutas locales o URLs.

Tú decides

--offline no abre ninguna conexión y usa solo las reglas locales. --no-osv y --no-registry apagan cada fuente por separado, y DEPSENTINEL_OSV_URL apunta a un espejo interno. La base de datos de paquetes maliciosos se descarga con depsentinel db update y se verifica con una firma Ed25519 antes de usarla. Solo dos comandos que tú lanzas a propósito salen a otros sitios: db update descarga el feed del repositorio y fix consulta api.github.com para resolver el SHA de una acción.

Gratis. Siempre.

Gratis para personas, proyectos de código abierto y educación. Las donaciones aún no están disponibles: cuando lo estén, se usarán para el dominio, los servidores del feed y las auditorías de seguridad. Las empresas podrán patrocinar, pero ningún patrocinio ni donación desbloqueará funciones.

Cada mes publicamos cuánto entra y en qué se gasta: ver las cuentas.