
Statisches Analyse-CLI, das KI-generierten Code auf Schwachstellen wie SQL-Injection, unsichere Reflexion und hartcodierte Secrets scannt, mit SARIF-Export und CI/CD-Gating.
Ein schnelles, eigenständiges Tool zur statischen Analyse, das speziell dafür entwickelt wurde, Schwachstellen aufzudecken, die durch KI-Coding-Assistenten eingeführt werden. CanoP analysiert Ihre Codebasis lokal, um Sicherheitsrisiken in KI-generiertem Code zu identifizieren.
fixes.json-Payloads. Diese enthalten spezifische Prompts, die darauf ausgelegt sind, an Large Language Models (LLMs) zurückgegeben zu werden, um eine sofortige, kontextbezogene Behebung zu ermöglichen.
CanoP analysiert Ihren Code lokal und erzeugt umsetzbare Sicherheitsbefunde mit KI-fähiger Behebungsanleitung.
CanoP lädt seine mitgelieferten Regeln aus canop/rules/*.yml und führt seinen integrierten Muster-Scanner lokal aus. Wenn die Semgrep-CLI installiert ist, kann CanoP dieselben Regeln auch für AST-basierte Analysen verwenden. Semgrep ist optional; die Standard-Paketinstallation lädt die Semgrep-CLI nicht herunter und erfordert sie nicht.
CanoP wird als Standard-Python-Paket über PyPI vertrieben.
Unter Windows oder wenn Sie sich bereits in einer aktiven virtuellen Umgebung befinden, können Sie den Standard-pip-Installer verwenden:
pip install canop
Moderne macOS- und Linux-Distributionen verhindern häufig globale pip-Installationen, um Systempakete zu schützen (PEP 668). Der Community-Standard für die Installation von Python-CLI-Tools in isolierten Umgebungen ist pipx:
pipx install canop
(Hinweis: pipx install canop funktioniert auch unter Windows einwandfrei!)
Überprüfen Sie die Installation, um sicherzustellen, dass die CLI in Ihrem Systempfad verfügbar ist:
canop --version
Initialisieren Sie die Konfigurationsdateien in Ihrem Repository. Dieser Befehl erstellt eine .canop.yml-Richtliniendatei und eine .canopignore-Datei, um verrauschte Verzeichnisse wie node_modules oder venv vom Scan auszuschließen:
canop init
Führen Sie einen umfassenden Sicherheitsscan für Ihr aktuelles Verzeichnis durch. Der Scanner bewertet Ihren Code anhand der internen Regel-Engine und gibt eine detaillierte Tabelle mit einem abschließenden Sicherheits-Score aus:
canop scan .
Scannen Sie nur Dateien, die in Git geändert wurden. Dies reduziert die Scanzeit drastisch und ist ideal für Pre-Commit-Hooks, um sicherzustellen, dass neuer Code vor dem Commit sicher ist:
canop scan . --changed
Standardmäßig hält CanoP Ihr Terminal sauber, indem die angezeigten Befunde auf 50 begrenzt werden. Falls Sie jemals tiefer graben oder dies anpassen müssen:
# No cap, show me every single finding:
canop scan . --all
# Set a custom cap (e.g., if you only want to see the top 10 results):
canop scan . --limit 10
CanoP ist darauf ausgelegt, als Sicherheits-Gatekeeper in automatisierten Deployment-Pipelines (wie GitHub Actions oder GitLab CI) zu fungieren. Sie können den Scanner so konfigurieren, dass er einen Exit-Code ungleich Null zurückgibt – was den Build automatisch fehlschlagen lässt –, wenn bestimmte Sicherheitskriterien nicht erfüllt sind.
# Fail the deployment pipeline if any CRITICAL or HIGH vulnerabilities are found
canop scan . --fail-on HIGH
# Fail the deployment pipeline if the aggregate security score falls below 85
canop scan . --min-score 85
Für Teams, die historische Nachverfolgung, Auditing oder Integration mit externen Systemen benötigen, unterstützt CanoP mehrere Ausgabeformate.
# Export the raw native Python dictionary data to a standard JSON file for custom parsing
canop scan . --json-out results.json
# Export to SARIF (Static Analysis Results Interchange Format).
# Uploading this file to GitHub allows GitHub to display the vulnerabilities inline in Pull Requests.
canop scan . --sarif results.sarif
CanoP extrahiert die Behebungsmetadaten aus seiner Regel-Engine, um Prompts zu generieren, die KI-Coding-Assistenten genau anweisen, wie die erkannten Schwachstellen zu beheben sind.
# Generate a fixes.json file containing actionable prompts for your LLM
canop scan . --prescriptions fixes.json
Das Verhalten von CanoP kann mithilfe einer .canop.yml-Datei im Stammverzeichnis Ihres Projekts kodifiziert werden. Diese Datei fungiert als zentrale Sicherheitsrichtlinie und stellt sicher, dass alle Entwickler und CI/CD-Pipelines dieselben Schwellenwerte einhalten.
# .canop.yml
# Require a minimum security grade to pass the pipeline
min_grade: B
# Treat these specific severity levels as pipeline failures
fail_on:
- CRITICAL
- HIGH
# Ignore specific paths from being scanned
ignore:
- "tests/**"
- "docs/**"
# Allow a certain number of findings before returning a non-zero exit code (0 = strictly unlimited)
max_findings: 0
Sie können sich auch auf .canopignore verlassen, um bestimmte Dateien oder Verzeichnisse zu definieren, die der Scanner überspringen soll. Es verwendet Standard-Glob-Muster und funktioniert identisch zu .gitignore.
Wenn Sie zur CLI beitragen oder Änderungen lokal testen möchten, klonen Sie das Repository und installieren Sie es im editierbaren Modus. Der editierbare Modus verknüpft den Terminalbefehl canop direkt mit Ihrem Live-Quellcode.
git clone https://github.com/openbreach/CanoP.git canop
cd canop
pip install -e .
Führen Sie die Testsuite lokal aus, bevor Sie Änderungen einreichen:
python -m unittest discover -s tests -v
Um die Distributionsartefakte zu erstellen, installieren Sie die Release-Tools und führen Sie aus:
pip install -r requirements-dev.txt
python -m build
Sicherheitsregeln sind im Standard-Semgrep-YAML-Format definiert und befinden sich in canop/rules/*.yml. Bitte lesen Sie CONTRIBUTING.md für umfassende Richtlinien zur Strukturierung, zum Testen und zum Einreichen neuer Regeln, um die Erkennungsfähigkeiten des Scanners zu erweitern.
Wenn Sie Fehler finden, Funktionswünsche haben oder allgemeine Hilfe benötigen, öffnen Sie bitte ein Issue auf GitHub oder kontaktieren Sie uns direkt unter [email protected].
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die Datei LICENSE für Details.