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 pulito.

Gli scanner di segreti sono bravi a lanciare l'allarme e non molto utili a spegnerlo. Ti consegnano un elenco di credenziali compromesse e lasciano a te la pulizia. Credactor chiude il cerchio: trova un segreto hardcoded e lo riscrive sul posto, così una fuga di dati passa dal rilevamento alla correzione con un singolo comando.

Credactor: scan, redact, commit clean Tenere le credenziali fuori dal codice sorgente è una pratica di sicurezza di base, non opzionale. Credactor rende quella base economica da mantenere, sulla tua macchina prima di un commit o in CI prima di un merge. Eseguilo da solo, o insieme agli scanner di cui ti fidi già.
# Credactor finds this:
db_password = "h8Tq2vKp9mRz4Wd"

# By default it rewrites the secret as a sentinel that fails loudly at runtime:
db_password = "REDACTED_BY_CREDACTOR"

# With --replace-with env, it writes a reference that reads from the environment:
db_password = os.environ["DB_PASSWORD"]

La redazione riscrive i file nel tuo working tree. Se un segreto è già stato committato, ruota la chiave e ripulisci anche la cronologia (ad esempio, con git filter-repo). Riscrivere un file non sostituisce la revoca di una credenziale compromessa.


Perché Credactor

  • Redazione, non solo rilevamento. La maggior parte degli scanner si ferma alla scoperta. Credactor sostituisce il segreto sul posto: un sentinella REDACTED_BY_CREDACTOR ben visibile che fallisce a runtime per impostazione predefinita, oppure un riferimento a variabile d'ambiente consapevole del linguaggio (Python, JavaScript/TypeScript, Go, Java/Kotlin, Ruby, PHP e shell) come os.environ["KEY"]. La sostituzione è codice valido. Se il file non include già l'import corrispondente (ad esempio import os), aggiungilo.
  • Sicuro per impostazione predefinita. Scritture atomiche, backup .bak automatici, protezioni sui confini dei symlink e sui permessi dei file, e mascheramento completo dei segreti in ogni output. Se non è possibile scrivere un backup sicuro, Credactor salta il file invece di riscriverlo alla cieca, e un crash durante la scrittura lascia l'originale intatto.
  • Zero dipendenze a runtime. Solo libreria standard di Python 3.11+, più un extra opzionale per le codifiche non UTF-8.
  • Progettato per la pipeline. Output SARIF per GitHub Code Scanning, un gate --ci in sola lettura con codici di uscita precisi, un hook pre-commit e l'importazione dei report di Gitleaks, TruffleHog o Betterleaks. Rileva con lo scanner che già esegui, correggi con Credactor.

Installazione

pip install credactor

Richiede Python 3.11+. Nessun'altra dipendenza. Funziona su Linux, macOS e Windows (testato in CI su Linux e Windows).

Su macOS e Linux puoi installarlo con Homebrew:

brew install rxb06/tap/credactor

La formula installa in un proprio virtualenv e include l'extra opzionale [encoding], quindi un'installazione con Homebrew rileva i segreti anche nei file non UTF-8. Un semplice pip install credactor omette quell'extra; aggiungilo con pip install 'credactor[encoding]' se vuoi la stessa copertura.

Dal sorgente:

git clone https://github.com/rxb06/credactor.git
cd credactor
pip install -e .

credactor funziona poi da qualsiasi directory.

Avvio rapido

Esegui prima --dry-run e rivedi i risultati prima di redigere. I falsi positivi sono possibili, e con --fix-all un falso positivo viene riscritto. Sopprimi i valori noti come sicuri con # credactor:ignore o una voce in .credactorignore.

credactor --dry-run .                 # scan, change nothing
credactor .                           # scan, then redact interactively (y/n per finding)
credactor --fix-all .                 # redact everything after one confirmation
credactor --fix-all --yes .           # redact non-interactively (CI / scripts)
credactor --ci .                      # read-only gate: exit 1 on findings
credactor --replace-with env .        # redact to env-var references instead of the sentinel

Hook pre-commit

L'hook controlla solo il contenuto in stage, quindi un segreto già committato non viene segnalato di nuovo. Usa credactor --scan-history . per controllare ciò che è già nel repo.

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/rxb06/credactor
    rev: v2.7.4   # pin to the latest release tag
    hooks:
      - id: credactor

GitHub Action

- uses: rxb06/[email protected]

L'action passa sempre --ci, quindi segnala e fa da gate ma non riscrive mai il checkout. I risultati fanno fallire lo step; imposta fail-on-findings: false per segnalare senza fare da gate. Un errore fa fallire lo step in ogni caso.

Carica su Code Scanning invece di fallire sui risultati:

- uses: rxb06/[email protected]
  with:
    format: sarif
    upload-sarif: true
    fail-on-findings: false

Il job necessita di permissions: security-events: write per il caricamento. Vedi la guida all'integrazione CI per ogni input, inclusa l'importazione dei report di Gitleaks, TruffleHog e Betterleaks.

Rilevamento

Credactor rileva i tipi di credenziali che trapelano più spesso e assegna a ciascuno una gravità per consentirti di fare triage a colpo d'occhio.

CategoriaEsempiGravità
Chiavi di provider cloudAWS (AKIA…), GCP (AIza…), Stripe (sk_live_…), Slack (xoxb-…)Critica
Token di piattaformaGitHub (ghp_, github_pat_), GitLab (glpat-), npm (npm_), PyPI (pypi-)Critica
Chiavi privateBlocchi PEM (-----BEGIN … PRIVATE KEY-----)Critica
JWTToken a tre segmenti eyJ…Alta
Stringhe di connessioneURL con credenziali inline (scheme://user:pass@host)Alta
Variabili di credenzialipassword = "…", api_key = "…", secret_key = "…"Alta/Media/Bassa
Attributi XML<add key="Password" value="…" />Alta/Media/Bassa
Stringhe ad alta entropiahex tra virgolette (32–64 caratteri) / Base64 (60+ caratteri)Media/Bassa

I token deterministici dei provider (i prefissi sopra) vengono segnalati indipendentemente dall'entropia. I rilevatori euristici (JWT, stringhe di connessione, hex, Base64) devono superare una soglia di entropia. Hex o Base64 isolati vengono segnalati solo se tra virgolette. Un valore ad alta entropia non tra virgolette viene catturato solo su una variabile con nome di credenziale, il che risparmia gli SHA di git e i checksum. Per le regole complete di rilevamento e gravità, vedi il Manuale.

Il set di regole native di Credactor è più ristretto di quello di uno scanner dedicato, e alcuni formati di provider (ad esempio SendGrid, Twilio e i webhook di Slack) non vengono rilevati. Il suo punto di forza è la correzione: abbinalo a Gitleaks, TruffleHog o Betterleaks per il rilevamento più ampio, oppure eseguilo da solo.

Abbinalo a un altro scanner, redigi tutto

Categorie