
guarddog v3.2.0
đ đ GuardDog ist ein CLI-Tool zur Identifizierung bösartiger PyPI- und npm-Pakete
GuardDog
GuardDog ist ein CLI-Tool, das bösartige PyPI- und npm-Pakete, Go-Module, Rust-Crates, RubyGems, GitHub Actions oder VSCode-Erweiterungen identifiziert. Es fĂŒhrt statische Analysen des Paketquellcodes (mittels YARA-Regeln) durch und analysiert Paketmetadaten, um Lieferkettenangriffe zu erkennen.
Was GuardDog besonders macht: Anstatt nur verdĂ€chtige Muster aufzulisten, korreliert GuardDog die Funde, um tatsĂ€chliche Risiken auf Basis von Angriffsketten zu identifizieren. Ein Paket benötigt sowohl die FĂ€higkeit (Capability), eine Aktion auszufĂŒhren (z. B. Netzwerkzugriff), als auch einen Bedrohungsindikator (z. B. verdĂ€chtige Domain) in derselben Datei, um als hohes Risiko eingestuft zu werden.
Es lÀdt Code herunter und scannt ihn von:
- NPM: Pakete, die auf npmjs.org gehostet werden
- PyPI: Quelldateien (tar.gz) von Paketen, die auf PyPI.org gehostet werden
- Go: GoLang-Quelldateien von Repositorys, die auf GitHub.com gehostet werden
- Rust: Crates, die auf crates.io gehostet werden
- RubyGems: Gem-Pakete, die auf rubygems.org gehostet werden
- GitHub Actions: JavaScript-Quelldateien von Repositorys, die auf GitHub.com gehostet werden
- VSCode-Erweiterungen: Erweiterungen (.vsix), die auf marketplace.visualstudio.com gehostet werden

So funktioniert GuardDog
GuardDog verwendet ein risikobasiertes Erkennungsmodell, das Code-FĂ€higkeiten mit Bedrohungsindikatoren korreliert:
- Erkennung: Regeln identifizieren entweder FÀhigkeiten (was Code kann) oder Bedrohungen (verdÀchtige Indikatoren)
- Korrelation: FĂ€higkeiten und Bedrohungen, die in derselben Datei gefunden werden, bilden Risiken (dateiĂŒbergreifende Treffer bilden ebenfalls Risiken, jedoch mit herabgestufter Schwere)
- Bewertung: Risiken werden anhand der VollstĂ€ndigkeit und Raffinesse der Angriffskette bewertet (0â10)
- Berichterstattung: Pakete erhalten eine Schweregrad-Einstufung (niedrig/mittel/hoch) mit detaillierter RisikoaufschlĂŒsselung
Warum dieser Ansatz?
Traditionelle SAST-Tools kennzeichnen jedes verdĂ€chtige Muster unabhĂ€ngig voneinander, was zu AlarmmĂŒdigkeit fĂŒhrt. GuardDog versteht, dass:
- FÀhigkeiten allein nicht bösartig sind (Netzwerkbibliotheken sollten HTTP-Anfragen stellen)
- Bedrohungsindikatoren allein Fehlalarme sein können (Test-Fixtures, Dokumentation)
- FÀhigkeit + Bedrohung zusammen ein tatsÀchliches Risiko anzeigen (Code, der etwas Bösartiges kann und wird)
Risikobewertung
Pakete erhalten eine Punktzahl von 0â10, basierend auf vier Faktoren:
| Faktor | Gewichtung | Beschreibung |
|---|---|---|
| Schweregrad | 30% | Höchster Schweregrad-Fund (niedrig/mittel/hoch) |
| Angriffskette | 20% | Vorhandensein vollstĂ€ndiger Angriffsstufen (frĂŒh â mittel/spĂ€t) |
| SpezifitĂ€t | 30% | Wie spezifisch Muster fĂŒr Malware im Vergleich zu legitimem Code sind |
| Raffinesse | 20% | Fortschrittsgrad der Technik |
Bewertungsetiketten:
- 0: Keine Risiken erkannt
- 0.1â3: Geringes Risiko (einstufige Bedrohungen, geringe SpezifitĂ€t)
- 3.1â7.5: Mittleres Risiko (partielle Angriffskette, Metadatenindikatoren oder einstufige Code-Funde)
- 7.6â10: Hohes Risiko (mehrstufige Angriffskette mit Quellcode-Beweisen â nahezu sichere Kompromittierung)
Angriffsketten-Stufen (basierend auf MITRE ATT&CK):
- FrĂŒh: Erster Zugriff, AusfĂŒhrungsfĂ€higkeiten
- Mittel: Persistenz, Umgehung der Verteidigung, Zugriff auf Anmeldeinformationen
- SpÀt: Command & Control, Exfiltration, Auswirkung
Schauen Sie sich die neue Datadog Agent Integration und das Cloud SIEM Content Pack fĂŒr GuardDog an.
Erste Schritte
Installation
Der einfachste Weg, GuardDog auszufĂŒhren, ist die Verwendung von uvx:
uvx guarddog pypi scan requests
FĂŒr die lokale Installation:
uv tool install guarddog
# oder
pip install guarddog
Oder verwenden Sie das Docker-Image:
docker pull ghcr.io/datadog/guarddog
alias guarddog='docker run --rm ghcr.io/datadog/guarddog'
Hinweis: Unter Windows ist Docker die einzige unterstĂŒtzte Installationsmethode.
Beispielverwendung
# Die neueste Version des Pakets 'requests' scannen
guarddog pypi scan requests
# Eine bestimmte Version des Pakets 'requests' scannen
guarddog pypi scan requests --version 2.28.1
# Das Paket 'requests' mit 2 bestimmten Heuristiken scannen
guarddog pypi scan requests --rules exec-base64 --rules code-execution
# Das Paket 'requests' mit allen Regeln auĂer einer scannen
guarddog pypi scan requests --exclude-rules exec-base64
# Ein lokales Paketarchiv scannen
guarddog pypi scan /tmp/triage.tar.gz
# Ein lokales Paketverzeichnis scannen
guarddog pypi scan /tmp/triage/
# Ein in S3 gespeichertes Paket scannen (einen Ordner/PrÀfix oder ein einzelnes Archivobjekt)
guarddog pypi scan s3://my-bucket/path/to/package/
guarddog pypi scan s3://my-bucket/path/to/package.tar.gz
# Jedes Paket scannen, das in einer requirements.txt-Datei eines lokalen Ordners referenziert wird
guarddog pypi verify workspace/guarddog/requirements.txt
# Jedes Paket scannen, das in einer requirements.txt-Datei referenziert wird, und eine SARIF-Datei ausgeben â funktioniert nur fĂŒr verify
guarddog pypi verify --output-format=sarif workspace/guarddog/requirements.txt
# JSON auf der Standardausgabe ausgeben â funktioniert fĂŒr jeden Befehl
guarddog pypi scan requests --output-format=json
# Alle Befehle funktionieren auch fĂŒr npm, go, crates, rubygems
guarddog npm scan express
guarddog go scan github.com/DataDog/dd-trace-go
guarddog go verify /tmp/repo/go.mod
# Rust-Crates scannen
guarddog crates scan serde
guarddog crates verify /tmp/repo/Cargo.lock
# RubyGems-Pakete scannen
guarddog rubygems scan rails
guarddog rubygems verify /tmp/repo/Gemfile.lock
# ZusĂ€tzlich kann das Scannen von GitHub Actions unterstĂŒtzt werden, die in JavaScript implementiert sind
guarddog github_action scan DataDog/synthetics-ci-github-action
guarddog github_action verify /tmp/repo/.github/workflows/main.yml
# VSCode-Erweiterungen aus dem Marketplace scannen
guarddog extension scan ms-python.python
# Eine bestimmte Version einer VSCode-Erweiterung scannen
guarddog extension scan ms-python.python --version 2023.20.0
# Ein lokales VSCode-Erweiterungsverzeichnis oder ein VSIX-Archiv scannen
guarddog extension scan /tmp/my-extension/
# Im Debug-Modus ausfĂŒhren
guarddog --log-level debug npm scan express