
Protege contra ataques de cadena de suministro, slopsquatting y typosquatting provenientes de dependencias y código.
cargo install sloppy-joe
El ataque a la cadena de suministro de LiteLLM (marzo de 2026) comprometió un paquete con 97 millones de descargas mensuales. Los atacantes robaron credenciales de publicación, lanzaron versiones maliciosas que recolectaron claves SSH, credenciales en la nube y secretos de K8s. La compuerta de edad de versión predeterminada de 72 horas de sloppy-joe habría bloqueado ambas versiones envenenadas: fueron descubiertas en cuestión de horas, mucho antes de que la compuerta se abriera. Si ejecutas
sloppy-joe checken CI, este ataque falla. Análisis completo
Los generadores de código con IA alucinan nombres de paquetes ~20% de las veces. Los atacantes registran esos nombres y esperan. sloppy-joe los detecta en CI antes de que se ejecuten npm install o pip install.
cargo install sloppy-joe
sloppy-joe check
sloppy-joe check --full
sloppy-joe check --ci
sloppy-joe check --dir ./my-project
sloppy-joe check --type npm
sloppy-joe check --python-groups dev,test --python-version 3.12 sloppy-joe check --python-extras docs --python-platform linux --python-version 3.12
sloppy-joe check --config /etc/sloppy-joe/config.json
sloppy-joe check --config https://raw.githubusercontent.com/yourorg/security-configs/main/sloppy-joe.json
sloppy-joe check --json
sloppy-joe check --review-exceptions
sloppy-joe init --register
sloppy-joe init --greenfield --ecosystem npm
sloppy-joe init --from-current
sloppy-joe init --from-current --register
sloppy-joe init > /secure/location/sloppy-joe.json
### Nix```bash
nix profile install github:brennhill/sloppy-joe
Modos de escaneo:
sloppy-joe check ejecuta el guardarraíl local rápido. Siempre impone el análisis del manifiesto, lockfile/sync, procedencia y la política de fuentes no soportadas. Si el estado de las dependencias o la política cambió, o si el último escaneo completo exitoso tiene más de 24 horas, recomienda sloppy-joe check --full.sloppy-joe check --full ejecuta el escaneo estricto en línea y refresca el estado registrado del escaneo completo exitoso.sloppy-joe check --ci ejecuta la misma cobertura estricta que --full, con intención orientada a CI.sloppy-joe check evalúa el perfil runtime por defecto. Si existen dependencias con ámbito, advierte y te indica que pases explícitamente las banderas --python-groups, --python-extras, --python-platform y/o --python-version para paridad con CI/build.sloppy-joe check siempre recuerda usar --ci o --full para CI y control de producción.Códigos de salida: 0 = no se encontraron problemas bloqueantes en el modo seleccionado, 1 = se encontraron problemas bloqueantes, 2 = error de ejecución.
Soporta: JavaScript (npm, pnpm, Yarn, Bun), Python, Rust, Go, Ruby, PHP, JVM (Gradle/Maven) y .NET — detectados automáticamente a partir de los archivos de manifiesto.
Guías de ecosistemas: consulta docs/ecosystems/README.md para conocer el modelo de confianza actual, las funciones compatibles y los límites de fallo cerrado para cada ecosistema.
| Ecosistema | Manifiesto requerido | Lockfile / estado de proyecto confiable |
|---|---|---|
| JavaScript / npm | package.json | package-lock.json o npm-shrinkwrap.json; npm v1 heredado bloqueado por defecto |
| JavaScript / pnpm | package.json | pnpm-lock.yaml |
| JavaScript / Yarn | package.json | yarn.lock |
| JavaScript / Bun | package.json | bun.lock |
| Python | pyproject.toml, requirements*.txt, Pipfile, setup.cfg, o setup.py | La ruta de Poetry confiable usa poetry.lock, la ruta de uv confiable usa uv.lock, y pip-tools con hash completo solo es confiable cuando el grafo de requisitos comprometido vincula exactamente los valores de --index-url y cualquier --extra-index-url; los índices de Python visibles en el repositorio pueden ser permitidos mediante trusted_indexes.pypi; los modos de Python confiables evalúan un perfil de instalación seleccionado a la vez (runtime por defecto, grupos/extras/plataforma/arquitectura/versión explícitos mediante CLI); los manifiestos heredados se permiten con advertencias por defecto |
| Rust | Cargo.toml | Cargo.lock |
| Go | go.mod | go.sum requerido para dependencias externas |
| Ruby | Gemfile | Gemfile.lock |
| PHP / Composer | composer.json | composer.lock |
| JVM / Gradle | build.gradle o build.gradle.kts | gradle.lockfile |
| JVM / Maven | pom.xml | solo advertencia: aún no hay ruta de lockfile local de proyecto confiable |
| .NET / NuGet | .csproj | packages.lock.json |
Fuentes de configuración: ruta de archivo local, URL HTTPS o variable de entorno SLOPPY_JOE_CONFIG. La configuración nunca se lee desde el directorio del proyecto (ver CONFIG.md para saber por qué).