
Statisches und dynamisches Analysetool, das Open-Source-Pakete auf bösartige, verwundbare und riskante Eigenschaften überprüft, mit einer sandboxierten Installation, um Supply-Chain-Angriffe zu verhindern.
Packj (ausgesprochen wie „Package“) ist ein Werkzeug, das hilft, Angriffe auf die Software-Lieferkette zu mildern. Es kann bösartige, anfällige, verlassene, Typo-Squatting- und andere „riskante“ Pakete aus gängigen Open-Source-Paketregistern wie NPM, RubyGems und PyPI erkennen. Es kann einfach angepasst werden, um Rauschen zu minimieren. Packj begann als PhD-Forschungsprojekt und wird derzeit im Rahmen verschiedener staatlicher Fördermittel entwickelt.
Hinweis Der selbst gehostete Packj-Webserver und mehrere Integrationen kommen später in diesem Monat 👊 Beobachten Sie dieses Repo, um auf dem Laufenden zu bleiben.

Wir unterstützen mehrere Bereitstellungsmodelle:
Verwenden Sie Packj, um Abhängigkeiten in Pull Requests zu prüfen.```yaml
Auf dem GitHub [Marketplace](https://github.com/marketplace/actions/packj-security-audit) ansehen. Beispiel [PR-Ausführung](https://github.com/ossillate-inc/packj-github-action-demo/pull/3#issuecomment-1274797138).
### 2. Docker-Image (empfohlen)
Der schnellste Weg, Packj auszuprobieren/testen, ist die Verwendung von Docker. Podman wird ebenfalls für containerisierte (isolierte) Ausführungen unterstützt.```
docker run -v /tmp:/tmp/packj -it ossillate/packj:latest --help
Klone dieses Repository,``` git clone https://github.com/ossillate-inc/packj.git && cd packj
Abhängigkeiten installieren```
bundle install && pip3 install -r requirements.txt
Mit Hilfe beginnen:``` python3 main.py --help
# Unterstützte Ökosysteme #
Packj kann veröffentlichte Pakete von den Paketregistern NPM, PyPI, Rust, PHP und Rubygems überprüfen. Die Rust- und PHP-Unterstützung befindet sich in Arbeit. Wir erweitern aktiv die Unterstützung für weitere Registries.
Es unterstützt auch die Überprüfung lokaler (nicht veröffentlichter) NPM- und PyPI-Pakete.
| Registry | Ökosystem | Unterstützt |
| --------- | ----------- | -------------------- |
| 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: |
# Funktionalität #
Packj bietet die folgenden Werkzeuge:
* [Audit](#prüfung-eines-pakets) – zur Überprüfung eines Pakets auf „riskante“ Attribute.
* [Sandbox](#sandbox-paketinstallation) – zur sicheren Installation eines Pakets.
## Prüfung eines Pakets ##
Packj prüft Open-Source-Softwarepakete auf „riskante“ Attribute, die sie anfällig für Lieferkettenangriffe machen. Beispielsweise werden Pakete mit abgelaufenen E-Mail-Domains (fehlende 2FA), großen Veröffentlichungszeitabständen, sensitiven APIs oder Zugriffsberechtigungen als riskant eingestuft.
Die Prüfung folgender Punkte wird unterstützt:
- mehrere Pakete: `python3 main.py audit -p pypi:requests rubygems:overcommit`
- Abhängigkeitsdateien: `python3 main.py audit -f npm:package.json pypi:requirements.txt`
Standardmäßig führt `audit` nur eine statische Codeanalyse durch, um riskanten Code zu erkennen. Sie können das Flag `-t` oder `--trace` übergeben, um auch eine dynamische Codeanalyse durchzuführen, die alle angeforderten Pakete unter `strace` installiert und das Installationsverhalten der Pakete überwacht. Siehe das Beispiel unten.
<details>
<summary><h4>Beispiellauf/-ausgabe anzeigen</h4></summary>
$ docker run -v /tmp:/tmp/packj -it ossillate/packj:latest audit --trace -p npm:browserify