
Outil d'analyse statique et dynamique qui audite les paquets open-source pour détecter les attributs malveillants, vulnérables et risqués, avec une installation en bac à sable pour prévenir les attaques sur la chaîne d'approvisionnement.
Packj (prononcé 'package') est un outil pour aider à atténuer les attaques sur la chaîne d'approvisionnement logicielle. Il peut détecter les paquets malveillants, vulnérables, abandonnés, de typosquattage et autres paquets « risqués » provenant de registres de paquets open-source populaires, tels que NPM, RubyGems et PyPI. Il peut être facilement personnalisé pour minimiser le bruit. Packj a débuté comme projet de recherche de doctorat et est actuellement développé dans le cadre de diverses subventions gouvernementales.
Note Le serveur web Packj auto-hébergé et plusieurs intégrations arrivent plus tard ce mois-ci 👊 Surveillez ce dépôt pour rester informé.

Nous prenons en charge plusieurs modèles de déploiement :
Utilisez Packj pour auditer les dépendances dans les pull requests.```yaml
Voir sur le [marketplace GitHub](https://github.com/marketplace/actions/packj-security-audit). Exemple d'[exécution PR](https://github.com/ossillate-inc/packj-github-action-demo/pull/3#issuecomment-1274797138).
### 2. Image Docker (recommandée)
Le moyen le plus rapide d'essayer/tester Packj est d'utiliser Docker. Podman est également pris en charge pour les exécutions en conteneur (isolées).```
docker run -v /tmp:/tmp/packj -it ossillate/packj:latest --help
Clonez ce dépôt,``` git clone https://github.com/ossillate-inc/packj.git && cd packj
Installer les dépendances```
bundle install && pip3 install -r requirements.txt
Commencez par l'aide :``` python3 main.py --help
# Écosystèmes pris en charge #
Packj peut auditer les packages publiés depuis les registres NPM, PyPI, Rust, PHP et Rubygems. La compatibilité Rust et PHP est en cours de développement. Nous ajoutons activement la prise en charge de registres.
Il prend également en charge l'audit de packages NPM et PyPI locaux (non publiés).
| Registre | Écosystème | Pris en charge |
| ---------- | ----------- | ------------------- |
| NPM | JavaScript | :white_check_mark: |
| PyPI | Python | :white_check_mark: |
| Cargo | Rust | :white_check_mark: |
| Rubygems | Ruby | :white_check_mark: |
| Packagist | PHP | :white_check_mark: |
| Docker | Docker | :x: |
| Nuget | .NET | :white_check_mark: |
| Maven | Java | :white_check_mark: |
| Cocoapods | Swift | :x: |
# Fonctionnalités #
Packj propose les outils suivants :
* [Audit](#audit-dun-package) - pour auditer un package à la recherche d'attributs « à risque ».
* [Sandbox](#installation-sandboxée-de-packages) - pour une installation sécurisée d'un package.
## Audit d'un package ##
Packj audite les packages de logiciels open-source à la recherche d'attributs « à risque » qui les rendent vulnérables aux attaques sur la chaîne d'approvisionnement. Par exemple, les packages avec des domaines de messagerie expirés (manque de 2FA), un grand écart de temps entre les versions, des API sensibles ou des permissions d'accès, etc., sont signalés comme risqués.
L'audit des éléments suivants est pris en charge :
- plusieurs packages : `python3 main.py audit -p pypi:requests rubygems:overcommit`
- fichiers de dépendances : `python3 main.py audit -f npm:package.json pypi:requirements.txt`
Par défaut, `audit` effectue uniquement une analyse statique du code pour détecter du code risqué. Vous pouvez passer le drapeau `-t` ou `--trace` pour effectuer également une analyse dynamique du code, ce qui installera tous les packages demandés sous strace et surveillera le comportement des packages lors de l'installation. Veuillez voir l'exemple de sortie ci-dessous.
<details>
<summary><h4>Afficher un exemple d'exécution/sortie</h4></summary>
$ docker run -v /tmp:/tmp/packj -it ossillate/packj:latest audit --trace -p npm:browserify