
Protège contre les attaques de supply-chain, de slopsquatting et de typosquatting provenant des dépendances et du code.
cargo install sloppy-joe
L'attaque à la chaîne d'approvisionnement LiteLLM (mars 2026) a compromis un paquet avec 97 millions de téléchargements mensuels. Les attaquants ont volé des identifiants de publication, poussé des versions malveillantes qui ont récolté des clés SSH, des identifiants cloud et des secrets K8s. La barrière d'âge de version par défaut de 72 heures de sloppy-joe aurait bloqué les deux versions empoisonnées — elles ont été découvertes en quelques heures, bien avant que la barrière ne s'ouvre. Si vous exécutez
sloppy-joe checkdans CI, cette attaque échoue. Analyse complète
Les générateurs de code IA hallucinent des noms de paquets ~20% du temps. Les attaquants enregistrent ces noms et attendent. sloppy-joe les détecte dans CI avant que npm install ou pip install ne s'exécutent.
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
Modes d’analyse :
sloppy-joe check exécute le garde-fou local rapide. Il applique toujours l’analyse du manifeste, la vérification du fichier de verrouillage/synchronisation, la provenance et la politique des sources non prises en charge. Si l’état des dépendances ou de la politique a changé, ou si la dernière analyse complète réussie date de plus de 24 heures, il recommande sloppy-joe check --full.sloppy-joe check --full exécute l’analyse en ligne stricte et rafraîchit l’état enregistré de la dernière analyse complète réussie.sloppy-joe check --ci exécute la même couverture stricte que --full, avec une orientation CI.sloppy-joe check évalue le profil runtime par défaut. Si des dépendances limitées existent, il prévient et vous demande de passer explicitement les drapeaux --python-groups, --python-extras, --python-platform et/ou --python-version pour la parité CI/construction.sloppy-joe check vous rappelle toujours d’utiliser --ci ou --full pour la CI et le passage en production.Codes de sortie : 0 = aucun problème bloquant trouvé dans le mode sélectionné, 1 = problèmes bloquants trouvés, 2 = erreur d’exécution.
Pris en charge : JavaScript (npm, pnpm, Yarn, Bun), Python, Rust, Go, Ruby, PHP, JVM (Gradle/Maven) et .NET — détectés automatiquement à partir des fichiers manifeste.
Guides par écosystème : voir docs/ecosystems/README.md pour le modèle de confiance actuel, les fonctionnalités prises en charge et les limites de fermeture en cas d’échec pour chaque écosystème.
| Écosystème | Manifeste requis | Fichier de verrouillage / état du projet de confiance |
|---|---|---|
| JavaScript / npm | package.json | package-lock.json ou npm-shrinkwrap.json ; npm v1 hérité bloqué par défaut |
| 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 ou setup.py | le chemin Poetry de confiance utilise poetry.lock, le chemin uv de confiance utilise uv.lock, et pip-tools entièrement verrouillé par hachage n’est digne de confiance que lorsque le graphe des exigences commité lie exactement les valeurs --index-url et les éventuels --extra-index-url ; les index Python visibles dans le dépôt peuvent être autorisés via trusted_indexes.pypi ; les modes Python de confiance évaluent un profil d’installation sélectionné à la fois (runtime par défaut, groupes/extras/plateforme/architecture/version explicites via CLI) ; les manifestes hérités sont autorisés avec avertissements par défaut |
| Rust | Cargo.toml | Cargo.lock |
| Go | go.mod | go.sum requis pour les dépendances externes |
| Ruby | Gemfile | Gemfile.lock |
| PHP / Composer | composer.json | composer.lock |
| JVM / Gradle | build.gradle ou build.gradle.kts | gradle.lockfile |
| JVM / Maven | pom.xml | avertissement uniquement : aucun chemin de fichier de verrouillage local de confiance pour l’instant |
| .NET / NuGet | .csproj | packages.lock.json |
Sources de configuration : chemin de fichier local, URL HTTPS, ou variable d’environnement SLOPPY_JOE_CONFIG. La configuration n’est jamais lue depuis le répertoire du projet (voir CONFIG.md pour la raison).