
CLI di analisi statica che scansiona il codice generato dall'IA alla ricerca di vulnerabilità come SQL injection, reflection non sicura e segreti hardcoded, con esportazione SARIF e gating CI/CD.
Un tool di analisi statica veloce e autonomo, progettato specificamente per rilevare le vulnerabilità introdotte dagli assistenti di codifica AI. CanoP analizza la tua codebase localmente per identificare i rischi di sicurezza nel codice generato dall'AI.
fixes.json strutturati. Questi contengono prompt specifici progettati per essere reimmessi nei Large Language Models (LLM) per una remediation immediata e context-aware.
CanoP analizza il tuo codice localmente e produce rilevamenti di sicurezza attuabili con una guida alla remediation pronta per l'AI.
CanoP carica le sue regole incluse da canop/rules/*.yml ed esegue il suo scanner di pattern integrato localmente. Se la CLI di Semgrep è installata, CanoP può anche utilizzare le stesse regole per l'analisi basata su AST. Semgrep è opzionale; l'installazione standard del pacchetto non scarica né richiede la CLI di Semgrep.
CanoP è distribuito come pacchetto Python standard tramite PyPI.
Su Windows, o se ti trovi già all'interno di un ambiente virtuale attivo, puoi utilizzare l'installer standard pip:
pip install canop
Le moderne distribuzioni macOS e Linux spesso impediscono le installazioni globali di pip per proteggere i pacchetti di sistema (PEP 668). Lo standard della community per installare tool CLI Python in ambienti isolati è pipx:
pipx install canop
(Nota: pipx install canop funziona perfettamente anche su Windows!)
Verifica l'installazione per assicurarti che la CLI sia disponibile nel path di sistema:
canop --version
Inizializza i file di configurazione nel tuo repository. Questo comando crea un file di policy .canop.yml e un file .canopignore per escludere directory rumorose come node_modules o venv dalla scansione:
canop init
Esegui una scansione di sicurezza completa sulla tua directory corrente. Lo scanner valuta il tuo codice rispetto al motore di regole interno e restituisce una tabella dettagliata con un punteggio di sicurezza finale:
canop scan .
Scansiona solo i file che sono stati modificati in git. Questo riduce drasticamente il tempo di scansione ed è ideale per gli hook pre-commit, garantendo che il nuovo codice sia sicuro prima di essere committato:
canop scan . --changed
Per impostazione predefinita, CanoP mantiene il terminale pulito limitando i rilevamenti visualizzati a 50. Se hai bisogno di approfondire o modificare questo valore:
# 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 è progettato per agire come guardiano della sicurezza nelle pipeline di deployment automatizzate (come GitHub Actions o GitLab CI). Puoi configurare lo scanner per restituire un codice di uscita diverso da zero—che fa fallire automaticamente la build—se specifici criteri di sicurezza non vengono soddisfatti.
# 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
Per i team che richiedono tracciamento storico, auditing o integrazione con sistemi esterni, CanoP supporta diversi formati di output.
# 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 estrae i metadati di remediation dal suo motore di regole per generare prompt che istruiscono gli assistenti di codifica AI su come correggere esattamente le vulnerabilità rilevate.
# Generate a fixes.json file containing actionable prompts for your LLM
canop scan . --prescriptions fixes.json
Il comportamento di CanoP può essere codificato utilizzando un file .canop.yml posizionato nella root del tuo progetto. Questo file funge da policy di sicurezza centralizzata, garantendo che tutti gli sviluppatori e le pipeline CI/CD rispettino le stesse soglie.
# .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
Puoi anche affidarti a .canopignore per definire file o directory specifici che lo scanner deve saltare. Utilizza pattern glob standard, funzionando in modo identico a .gitignore.
Se desideri contribuire alla CLI o testare modifiche localmente, clona il repository e installalo in modalità editable. La modalità editable mappa il comando terminale canop direttamente al tuo codice sorgente live.
git clone https://github.com/openbreach/CanoP.git canop
cd canop
pip install -e .
Esegui la suite di test localmente prima di inviare modifiche:
python -m unittest discover -s tests -v
Per costruire gli artefatti di distribuzione, installa gli strumenti di release ed esegui:
pip install -r requirements-dev.txt
python -m build
Le regole di sicurezza sono definite nel formato standard Semgrep YAML e si trovano all'interno di canop/rules/*.yml. Consulta CONTRIBUTING.md per linee guida complete su come strutturare, testare e inviare nuove regole per espandere le capacità di rilevamento dello scanner.
Se trovi bug, hai richieste di funzionalità o hai bisogno di assistenza generale, apri una issue su GitHub o contattaci direttamente all'indirizzo [email protected].
Questo progetto è distribuito sotto la Licenza MIT - consulta il file LICENSE per i dettagli.