
Protegge dagli attacchi alla supply chain, slopsquatting e typosquatting provenienti da dipendenze e codice.
cargo install sloppy-joe
L'attacco alla supply chain di LiteLLM (marzo 2026) ha compromesso un pacchetto con 97 milioni di download mensili. Gli attaccanti hanno rubato le credenziali di pubblicazione e hanno spinto versioni malevole che hanno raccolto chiavi SSH, credenziali cloud e segreti K8s. La soglia di età predefinita di 72 ore di sloppy-joe avrebbe bloccato entrambe le versioni avvelenate: sono state scoperte in poche ore, ben prima che la soglia si aprisse. Se esegui
sloppy-joe checkin CI, questo attacco fallisce. Analisi completa
I generatori di codice AI allucinano i nomi dei pacchetti circa il 20% delle volte. Gli attaccanti registrano quei nomi e aspettano. sloppy-joe li intercetta in CI prima che vengano eseguiti 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
Modalità di scansione:
sloppy-joe check esegue il guardrail locale veloce. Impone sempre l'analisi del manifest, il lockfile/sync, la provenienza e la politica sulle sorgenti non supportate. Se lo stato delle dipendenze o della politica è cambiato, o se l'ultima scansione completa con successo è più vecchia di 24 ore, consiglia sloppy-joe check --full.sloppy-joe check --full esegue la scansione online rigorosa e aggiorna lo stato registrato dell'ultima scansione completa con successo.sloppy-joe check --ci esegue la stessa copertura rigorosa di --full, con finalità CI.sloppy-joe check valuta il profilo runtime per impostazione predefinita. Se esistono dipendenze con ambito, avvisa e dice di passare flag espliciti --python-groups, --python-extras, --python-platform e/o --python-version per la parità CI/build.sloppy-joe check ricorda sempre di usare --ci o --full per CI e gating di produzione.Codici di uscita: 0 = nessun problema bloccante trovato nella modalità selezionata, 1 = problemi bloccanti trovati, 2 = errore runtime.
Supporta: JavaScript (npm, pnpm, Yarn, Bun), Python, Rust, Go, Ruby, PHP, JVM (Gradle/Maven) e .NET — rilevati automaticamente dai file manifest.
Guide per ecosistemi: consulta docs/ecosystems/README.md per il modello di fiducia corrente, le funzionalità supportate e i limiti di fail-closed per ogni ecosistema.
| Ecosistema | Manifest richiesto | Lockfile / stato progetto attendibile |
|---|---|---|
| JavaScript / npm | package.json | package-lock.json o npm-shrinkwrap.json; npm v1 legacy bloccato per impostazione predefinita |
| 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 | il percorso Poetry attendibile usa poetry.lock, il percorso uv attendibile usa uv.lock, e pip-tools con hash completo è attendibile solo quando il grafo dei requisiti committato lega esattamente --index-url e qualsiasi valore --extra-index-url; gli indici Python visibili nel repository possono essere inseriti nella whitelist tramite trusted_indexes.pypi; le modalità Python attendibili valutano un profilo di installazione selezionato alla volta (runtime per impostazione predefinita, gruppi/extras/platform/arch/version espliciti tramite CLI); i manifest legacy sono consentiti con avvisi per impostazione predefinita |
| Rust | Cargo.toml | Cargo.lock |
| Go | go.mod | go.sum richiesto per dipendenze esterne |
| 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 avviso: nessun percorso di lockfile locale al progetto attendibile ancora |
| .NET / NuGet | .csproj | packages.lock.json |
Fonti di configurazione: percorso file locale, URL HTTPS o variabile d'ambiente SLOPPY_JOE_CONFIG. La configurazione non viene mai letta dalla directory del progetto (vedi CONFIG.md per il motivo).