Torna agli aggiornamenti
New releaseAug 22, 2026

credactor v2.6.0

Scansiona. Oscura. Commit pulito.

Condividi

PyPI CI License

Credactor

Trova il segreto. Correggilo. Esegui il commit in modo pulito.

La maggior parte degli scanner di segreti si ferma all'avviso: ottieni un elenco di credenziali compromesse e la pulizia spetta a te. Credactor trova i segreti hardcoded e li riscrive sul posto, così una fuga nel tuo working tree passa da trovata a corretta con un solo comando. Funziona sulla tua macchina, come hook pre-commit o come gate CI, e può anche correggere ciò che Gitleaks, TruffleHog o Betterleaks trovano.

Credactor: scansiona, oscura, esegui il commit in modo pulito
# Before
db_password = "h8Tq2vKp9mRz4Wd"

# credactor --fix-all .   (default: a sentinel that fails loudly at runtime)
db_password = "REDACTED_BY_CREDACTOR"

# credactor --replace-with env --fix-all .   (read it from the environment)
db_password = os.environ["DB_PASSWORD"]

La redazione ripulisce il tuo albero di lavoro. Non revoca la credenziale e non tocca la cronologia git. Se un segreto è stato committato o condiviso, ruotalo, e riscrivi la cronologia se devi rimuoverlo anche da lì (ad esempio con git filter-repo).

Perché Credactor

  • Corregge, non solo segnala. Ogni rilevamento viene sostituito sul posto con un sentinel, un tuo marcatore, o una lookup di variabile d'ambiente nel linguaggio stesso del file.
  • Scritture accurate. Ogni modifica è pianificata in memoria, salvata prima in backup (modalità 0600), scritta su un file temporaneo e rinominata nella posizione finale. Un file che è cambiato durante l'esecuzione, un percorso che esce dalla radice della scansione, o un blocco di chiave privata viene saltato con un avviso, e il suo rilevamento resta segnalato.
  • Funziona con lo scanner che già usi. Passagli un report di Gitleaks, TruffleHog o Betterleaks e corregge i loro rilevamenti e i propri in un'unica passata deduplicata.
  • Pensato per le pipeline. Un gate --ci in sola lettura con codici di uscita chiari, SARIF 2.1.0 con posizioni di riga e colonna per GitHub Code Scanning, una GitHub Action e un hook pre-commit. I segreti sono mascherati in ogni formato di report, e l'output testuale è ripulito così che un file scansionato non possa iniettare sequenze di escape o comandi di workflow CI nel tuo terminale o nel log.
  • Release verificate rispetto al loro sorgente. Libreria standard Python 3.11+ pura senza dipendenze a runtime. Prima che una release raggiunga PyPI, ogni file di Credactor nella wheel e nella sdist è confrontato byte per byte con il sorgente taggato, e i metadati del pacchetto devono corrispondere a pyproject.toml (vedi Rafforzamento della supply chain).

Dove non è lo strumento giusto da solo: le sue regole integrate coprono i formati di credenziali che trapelano più spesso piuttosto che centinaia di provider, e non verifica se un segreto è attivo. Un'esecuzione pulita significa che nulla ha corrisposto alle sue regole, non che il codice non contenga segreti. Abbinalo a uno scanner dedicato per l'ampiezza (vedi Porta il tuo scanner).

Installazione

pip install credactor

Con uv, installalo come strumento, oppure eseguilo una volta senza installarlo:

uv tool install credactor
uvx credactor --dry-run .

Oppure con Homebrew su macOS e Linux:

brew install rxb06/tap/credactor

Richiede Python 3.11 o superiore. Testato in CI su Linux e Windows, da Python 3.11 a 3.13. Per file con codifiche diverse da UTF-8, Latin-1 o UTF-16 semplice, aggiungi l'extra opzionale: pip install 'credactor[encoding]' o uv tool install 'credactor[encoding]' (la formula Homebrew lo include).

Avvio rapido

1. Guarda cosa trova. Nulla viene modificato.

credactor --dry-run .
======================================================================
  CREDENTIAL SCAN REPORT  --  2 finding(s) in 1 file(s)
======================================================================

  FILE: config.py
  ────────────────────────────────────────────────────────────
  Line    3  [HIGH]  [variable:db_password]
           db_password = "h8Tq[REDACTED]"
  Line    4  [CRITICAL]  [pattern:AWS access key]
           aws_key = "AKIA[REDACTED]"

I report mostrano solo i primi quattro caratteri di ogni segreto.

2. Correggili. Esamina prima i risultati: --fix-all riscrive tutti, inclusi i falsi positivi. Per mantenerne uno, aggiungi # credactor:ignore alla sua riga (vedi Suppress false positives) oppure correggi in modo interattivo e rispondi n. Prima che ogni file venga modificato, viene scritta una copia .bak accanto ad esso così puoi annullare.

credactor .                          # ask y/N for each finding (needs a terminal)
credactor --fix-all .                # fix all after one confirmation
credactor --fix-all --yes .          # fix all, no prompt (scripts)
credactor --replace-with env --fix-all .   # environment lookups instead of the sentinel

La modalità Env scrive il lookup, non l'import: aggiungi import os o l'equivalente del tuo linguaggio se il file ne è privo. Su Windows Git Bash, esegui la modalità interattiva come winpty credactor ..

3. Verifica, poi elimina i backup. Ogni .bak contiene ancora il segreto originale, e Credactor non modifica mai il tuo .gitignore, quindi un semplice git add . lo metterebbe in staging.

diff config.py.bak config.py         # check what changed
cp config.py.bak config.py           # undo

Aggiungi *.bak e *.credactor.tmp a .gitignore ed elimina i backup una volta soddisfatto. Per tenere i backup fuori dall'albero fin dall'inizio, passa --secure-backup-dir DIR (una directory esterna al repository) durante l'esecuzione di correzione. --secure-delete cancella invece ciascun backup, lasciando git come unica possibilità di annullamento.

Comandi in breve

ComandoCosa faModifica i file
credactor --dry-run .Segnala i risultatiNo
credactor .Rivedi e correggi un risultato alla voltaSì, con y
credactor --fix-all .Correggi ogni risultato dopo una confermaSì
credactor --ci .Gate: esce con 1 in caso di risultatiMai
credactor --staged --ci .Gate solo su ciò che è in stage per il commitMai
credactor --scan-history .Analizza gli ultimi 100 commit che modificano fileMai
credactor --ci -f sarif . > results.sarifSARIF 2.1.0 per Code ScanningMai
credactor --ci -f json . > findings.jsonReport leggibile da macchinaMai

Ogni flag e combinazione è nel Manuale.

Usalo in pre-commit e CI

Hook pre-commit

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/rxb06/credactor
    rev: v2.7.5
    hooks:
      - id: credactor
pre-commit install

Ogni git commit esegue quindi la scansione del contenuto in staging e viene bloccato se contiene una credenziale. L'hook non riscrive mai i file. Richiede pre-commit 3.2.0 o versione successiva; senza il framework, consulta l' hook standalone.

GitHub Action

steps:
  - uses: actions/checkout@v7
  - uses: rxb06/[email protected]

Categorie