Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools fĂŒr Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stÀrken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/datadog/guarddog
Statische AnalyseSchwachstellenscannerDynamische Analyse (Sandboxing)Code-AnalyseMalware-AnalyseDevSecOpsSecret-ErkennungBedrohungsanalyseLieferkettensicherheit
GitHubdatadog/guarddog

guarddog

🐍 🔍 GuardDog ist ein CLI-Tool zur Identifizierung bösartiger PyPI- und npm-Pakete

1.2k112vor 2 TagenVon Kitploit geprĂŒft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigenWebseite

GuardDog

Test OpenSSF Scorecard OpenSSF Best Practices

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

GuardDog demo usage

So funktioniert GuardDog

GuardDog verwendet ein risikobasiertes Erkennungsmodell, das Code-FĂ€higkeiten mit Bedrohungsindikatoren korreliert:

  1. Erkennung: Regeln identifizieren entweder FÀhigkeiten (was Code kann) oder Bedrohungen (verdÀchtige Indikatoren)
  2. Korrelation: FĂ€higkeiten und Bedrohungen, die in derselben Datei gefunden werden, bilden Risiken (dateiĂŒbergreifende Treffer bilden ebenfalls Risiken, jedoch mit herabgestufter Schwere)
  3. Bewertung: Risiken werden anhand der VollstĂ€ndigkeit und Raffinesse der Angriffskette bewertet (0–10)
  4. 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:

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:

root@kitploit:~
uvx guarddog pypi scan requests

FĂŒr die lokale Installation:

root@kitploit:~
uv tool install guarddog
# oder
pip install guarddog

Oder verwenden Sie das Docker-Image:

root@kitploit:~
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

root@kitploit:~
# 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

Sandbox-Scans

Beim Scannen von Paketen fĂŒhrt GuardDog die Quellcode-Analyse innerhalb einer Kernel-Sandbox aus (Linux ĂŒber Landlock, macOS ĂŒber Seatbelt, mittels nono). Die Sandbox blockiert den gesamten Netzwerkzugriff und schrĂ€nkt Dateisystemoperationen auf die fĂŒr die Analyse benötigten Pfade ein. Dies schĂŒtzt vor bösartigen Paketen, die versuchen, wĂ€hrend der Archivextraktion oder des Scans Code auszufĂŒhren.

StandardmĂ€ĂŸig ist die Sandbox erforderlich: Wenn sie auf der Plattform nicht verfĂŒgbar ist, schlĂ€gt der Scan fehl, anstatt ungeschĂŒtzt ausgefĂŒhrt zu werden. FĂŒr einen Scan ohne Sandbox mĂŒssen Sie explizit --no-sandbox ĂŒbergeben:

root@kitploit:~
# Standard: Sandbox erforderlich, bei NichtverfĂŒgbarkeit mit Fehler beenden
guarddog pypi scan requests

# Sandbox explizit deaktivieren
guarddog pypi scan requests --no-sandbox

Bei Remote-Paketen laufen drei Phasen mit unterschiedlichen Berechtigungsstufen ab:

  1. Download und Metadatenanalyse laufen ohne Sandbox (benötigen Netzwerkzugriff)
  2. Die Archivextraktion lÀuft in einem sandboxed Subprozess (Netzwerk blockiert, Dateisystem eingeschrÀnkt)
  3. Die Quellcode-Analyse (YARA) lÀuft im Hauptprozess, nachdem eine Sandbox angewendet wurde (Netzwerk blockiert, Dateisystem auf extrahierte Dateien beschrÀnkt)

Die Sandbox wurde eingefĂŒhrt, um Path-Traversal- und CodeausfĂŒhrungs-Schwachstellen wĂ€hrend der Archivextraktion zu entschĂ€rfen (CVE-2022-23530, CVE-2022-23531, CVE-2026-22870, CVE-2026-22871).

Scannen von Paketen aus S3

GuardDog kann ein in S3 gespeichertes Paket scannen, entweder als Ordner/PrÀfix oder als einzelnes Archivobjekt:

root@kitploit:~
guarddog npm scan s3://my-bucket/path/to/package/
guarddog npm scan s3://my-bucket/path/to/package.tar.gz

Dabei werden Ihre vorhandenen AWS-Anmeldeinformationen verwendet (Umgebungsvariablen, ~/.aws, SSO oder eine IAM-Rolle). GuardDog verifiziert die Authentifizierung vorab ĂŒber STS und beendet den Vorgang mit einem Fehler, wenn keine gĂŒltigen Anmeldeinformationen gefunden werden. Die Objekte werden in ein temporĂ€res Verzeichnis synchronisiert, unter der Sandbox wie jeder andere nicht vertrauenswĂŒrdige Inhalt gescannt und anschließend von der Festplatte entfernt.

Regeln

GuardDog verwendet zwei Arten von Erkennungsregeln, die beide in die risikobasierte Bewertungs-Engine einfließen:

  • Quellcode-Regeln (YARA): Statische Analyse des Paketquellcodes zur Erkennung von FĂ€higkeiten und Bedrohungen
  • Metadaten-Regeln (Python-Detektoren): Analyse der Paketregister-Metadaten zur Erkennung von Indikatoren fĂŒr Lieferkettenangriffe

Die vollstĂ€ndige Liste der Regeln pro Ökosystem finden Sie in RULES.md.

Hinweise zum Schreiben neuer Regeln finden Sie in WRITING_RULES.md.

GuardDog in einer GitHub Action ausfĂŒhren

Der einfachste Weg, GuardDog in Ihre CI-Pipeline zu integrieren, ist die Nutzung des SARIF-Ausgabeformats und dessen Upload in das Code Scanning-Feature von GitHub.

Damit erhalten Sie:

  • Automatisierte Kommentare zu Ihren Pull Requests basierend auf der GuardDog-Scanausgabe
  • Integriertes False-Positive-Management direkt in der GitHub-OberflĂ€che

Beispiel-GitHub Action mit GuardDog:

root@kitploit:~
name: GuardDog

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

permissions:
  contents: read

jobs:
  guarddog:
    permissions:
      contents: read # for actions/checkout to fetch code
      security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
    name: Scan dependencies
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: astral-sh/setup-uv@v7

      - run: uvx guarddog pypi verify requirements.txt --output-format sarif --exclude-rules repository_integrity_mismatch > guarddog.sarif

      - name: Upload SARIF file to GitHub
        uses: github/codeql-action/upload-sarif@v3
        with:
          category: guarddog-builtin
          sarif_file: guarddog.sarif

Entwicklung

Eine lokale Version von GuardDog ausfĂŒhren

  • Stellen Sie sicher, dass Poetry eine Umgebung mit python >=3.10 hat: poetry env use 3.10.0
  • AbhĂ€ngigkeiten installieren: poetry install
  • GuardDog ausfĂŒhren: poetry run guarddog oder poetry shell und dann guarddog ausfĂŒhren

Unit-Tests

Alle Unit-Tests ausfĂŒhren: make test

Unit-Tests gegen Paketmetadaten-Heuristiken ausfĂŒhren: make test-metadata-rules (Tests finden Sie hier).

Benchmarking

Sie können GuardDog auf legitimen und bösartigen Paketen ausfĂŒhren, um False Positives und False Negatives zu ermitteln. Siehe ./tests/samples

CodequalitĂ€tsprĂŒfungen

FĂŒhren Sie den TypprĂŒfer aus mit

root@kitploit:~
mypy --install-types --non-interactive guarddog

und den Linter mit

root@kitploit:~
flake8 guarddog --count --select=E9,F63,F7,F82 --show-source --statistics --exclude tests/analyzer/sourcecode,tests/analyzer/metadata/resources,evaluator/data
flake8 guarddog --count --max-line-length=120 --statistics --exclude tests/analyzer/sourcecode,tests/analyzer/metadata/resources,evaluator/data --ignore=E203,W503

Konfiguration ĂŒber Umgebungsvariablen

Das Verhalten von GuardDog kann ĂŒber Umgebungsvariablen angepasst werden:

Allgemeine Konfiguration

Konfiguration der Metadaten-Regeln

UmgebungsvariableBeschreibungStandardwert
GUARDDOG_NEW_DEPENDENCY_RISK_THRESHOLDMindestrisikobewertung fĂŒr eine neu eingefĂŒhrte AbhĂ€ngigkeit, um das ĂŒbergeordnete Paket in der Regel risky_new_dependency zu kennzeichnen5.0

Sicherheitslimits fĂŒr die Archivextraktion

GuardDog implementiert mehrere SicherheitsprĂŒfungen beim Extrahieren von Paketarchiven, um vor Compression Bombs und Angriffen zur Erschöpfung von Dateideskriptoren zu schĂŒtzen:

Maintainer

  • Sebastian Obregoso
  • Ian Kretz
  • Tesnim Hamdouni

Autoren

  • Ellen Wang
  • Christophe Tafani-Dereeper

Danksagungen

Inspiration:

  • Backstabber’s Knife Collection: A Review of Open Source Software Supply Chain Attacks
  • What are Weak Links in the npm Supply Chain?
  • A Survey on Common Threats in npm and PyPi Registries
  • A Benchmark Comparison of Python Malware Detection Approaches
  • Towards Measuring Supply Chain Attacks on Package Managers for Interpreted Languages
Tool herunterladen
FaktorGewichtungBeschreibung
Schweregrad30%Höchster Schweregrad-Fund (niedrig/mittel/hoch)
Angriffskette20%Vorhandensein vollstĂ€ndiger Angriffsstufen (frĂŒh → mittel/spĂ€t)
SpezifitĂ€t30%Wie spezifisch Muster fĂŒr Malware im Vergleich zu legitimem Code sind
Raffinesse20%Fortschrittsgrad der Technik
UmgebungsvariableBeschreibungStandardwert
GUARDDOG_PARALLELISMAnzahl der Threads fĂŒr die parallele VerarbeitungAnzahl der verfĂŒgbaren CPUs
GUARDDOG_VERIFY_EXHAUSTIVE_DEPENDENCIESAlle möglichen Versionen von AbhÀngigkeiten analysieren (true/false)false
GUARDDOG_NPM_INCLUDE_DEV_DEPENDENCIESdevDependencies beim Scannen von npm-package.json-Dateien einbeziehen (true/false); kann auch pro Aufruf mit guarddog npm verify --include-dev-dependencies umgeschaltet werdenfalse
GUARDDOG_TOP_PACKAGES_CACHE_LOCATIONSpeicherort des Cache-Verzeichnisses fĂŒr Top-Paketeguarddog/analyzer/metadata/resources
GUARDDOG_YARA_EXT_EXCLUDEKommagetrennte Liste von Dateierweiterungen, die vom YARA-Scan ausgeschlossen werden sollenini,md,rst,txt,lock,json,yaml,yml,toml,xml,html,csv,sql,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,changelog,readme,makefile,dockerfile,pkg-info,d.ts
UmgebungsvariableBeschreibungStandardwert
GUARDDOG_MAX_UNCOMPRESSED_SIZEMaximal zulĂ€ssige unkomprimierte GrĂ¶ĂŸe in Bytes (verhindert das Erschöpfen des Speicherplatzes)2147483648 (2 GB)
GUARDDOG_MAX_COMPRESSION_RATIOMaximal zulÀssiges KompressionsverhÀltnis (erkennt verdÀchtige Kompressionsmuster)100 (100:1)
GUARDDOG_MAX_FILE_COUNTMaximale Anzahl von Dateien, die in einem Archiv zulÀssig sind (verhindert die Erschöpfung von Dateideskriptoren/Inodes)100000