
Digitalize. Redija. Faça commit limpo.
Encontre o segredo. Corrija-o. Faça commit limpo.
Scanners de segredos são bons em tocar o alarme, mas não ajudam muito a apagá-lo. Eles entregam uma lista de credenciais vazadas e deixam a limpeza para você. Credactor fecha o ciclo: ele encontra um segredo codificado e o reescreve no local, então um vazamento vai da detecção à correção em um único comando.
Manter credenciais fora do código-fonte é uma prática de segurança básica, não opcional. Credactor torna essa base barata de manter, na sua máquina antes de um commit ou em CI antes de um merge. Execute-o sozinho ou junto com os scanners que você já confia.
# 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"]
A substituição do segredo reescreve arquivos na sua árvore de trabalho. Se um segredo já foi commitado, rotacione a chave e limpe o histórico também (por exemplo, com
git filter-repo). Reescrever um arquivo não substitui a revogação de uma credencial vazada.
REDACTED_BY_CREDACTOR que falha na execução por padrão, ou uma referência de variável de ambiente ciente da linguagem (Python, JavaScript/TypeScript, Go, Java/Kotlin, Ruby, PHP e shell) como os.environ["KEY"]. A substituição é código válido. Se o arquivo ainda não incluir a importação correspondente (por exemplo import os), adicione-a..bak, proteções de limite de link simbólico e permissões de arquivo, e mascaramento completo do segredo em cada saída. Se um backup seguro não puder ser escrito, Credactor pula o arquivo em vez de reescrevê-lo às cegas, e uma falha no meio da escrita deixa o original intacto.--ci somente leitura com códigos de saída precisos, um hook pre-commit (beta) e ingestão de relatórios Gitleaks ou TruffleHog (BETA, e mais por vir). Detecte com Gitleaks ou TruffleHog, corrija com Credactor.pip install credactor
Requer Python 3.11+. Nenhuma outra dependência. Executa em Linux, macOS e Windows (testado em CI em Linux e Windows).
A partir da fonte:
git clone https://github.com/rxb06/credactor.git
cd credactor
pip install -e .
credactor então funciona a partir de qualquer diretório.
Execute
--dry-runprimeiro e revise as descobertas antes de redigir. Falsos positivos são possíveis, e sob--fix-allum falso positivo é reescrito. Suprima valores conhecidos como seguros com# credactor:ignoreou uma entrada.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
A integração do hook está em beta. Execute
credactor --dry-run .manualmente antes de confiar apenas nele.
# .pre-commit-config.yaml
repos:
- repo: https://github.com/rxb06/credactor
rev: v2.5.0 # pin to the latest release tag
hooks:
- id: credactor
Credactor detecta os tipos de credenciais que vazam com mais frequência e atribui a cada um uma gravidade para que você possa triar rapidamente.
Tokens de provedor determinísticos (os prefixos acima) são sinalizados independentemente da entropia. Detectores heurísticos (JWTs, strings de conexão, hex, Base64) devem superar um piso de entropia. Hex ou Base64 isolados são sinalizados apenas quando entre aspas. Um valor de alta entropia não entre aspas é capturado apenas em uma variável nomeada como credencial, o que poupa SHAs e somas de verificação do git. Para as regras completas de detecção e gravidade, veja o Manual.
O conjunto de regras nativo do Credactor é mais restrito que o de um scanner dedicado, e alguns formatos de provedor (por exemplo, SendGrid, Twilio e webhooks do Slack) não são detectados. Sua vantagem é a correção: combine-o com Gitleaks ou TruffleHog para a detecção mais ampla, ou execute-o sozinho.
Credactor funciona sozinho, e fica mais forte em companhia. Já usa Gitleaks ou TruffleHog? Passe o relatório deles para o Credactor e ele redige o conjunto combinado, deduplicado em relação às suas próprias descobertas (na sobreposição, a gravidade mais alta vence). Uma passagem de correção cobre sua varredura e a deles:
gitleaks dir . -f json -r gitleaks.json
credactor --from-gitleaks gitleaks.json --fix-all --yes .
--from-gitleaks / --from-trufflehog (ou uma tabela [ingest] em .credactor.toml) exigem um diretório alvo. Veja o Guia de Integração CI.
--replacement; --scan-history para escanear o histórico de commits do git--secure-delete (sobrescreve e remove o .bak; eleva a barra contra recuperação casual, não uma garantia forense) ou --secure-backup-dir para armazenar backups fora do repositório# credactor:ignore e .credactorignore (globs, file:line, literais de valor).credactor.toml.txt incluso); --scan-json para incluir JSON; --fail-on-error para falhar quando um arquivo não puder ser lido
.py.js.ts.jsx.tsx.sh.bash.env.cfg.ini.toml.yaml.yml.rb.go.java
Além disso, variantes .env.* / .env-* (.env.local, .env.production) e arquivos SSH / chave privada (id_rsa, id_dsa, id_ecdsa, id_ed25519), todos correspondidos pelo nome do arquivo em vez da extensão. JSON é excluído por padrão porque as respostas de API produzem uma alta taxa de falsos positivos; adicione --scan-json para incluí-lo. Um arquivo nomeado diretamente na linha de comando é escaneado mesmo que sua extensão não esteja nesta lista.
| Código | Significado |
|---|---|
0 |
Uma ferramenta de segurança deve ser segura de instalar, não apenas segura de executar. O pipeline de construção e lançamento do Credactor é endurecido de ponta a ponta; detalhes completos no documento de Segurança.
pip install credactor padrão não puxa pacotes de terceiros (apenas o extra opcional [encoding]), então não há nada a verificar no momento da instalação.--require-hashes, com o backend de construção incluído (python -m build --no-isolation contra um setuptools fixado), então uma dependência adulterada falha na construção.scripts/audit_wheel.py compara o wheel e o sdist com a fonte commitada byte a byte (sha256 vs git HEAD); qualquer arquivo adicionado, ausente ou alterado falha na verificação, então uma etapa de construção não pode injetar código despercebida.contents: read por padrão, id-token: write apenas para o job de publicação.Apache 2.0. Veja LICENSE.
| Categoria | Exemplos | Gravidade |
|---|
| Chaves de provedor de nuvem | AWS (AKIA…), GCP (AIza…), Stripe (sk_live_…), Slack (xoxb-…) | Crítico |
| Tokens de plataforma | GitHub (ghp_, github_pat_), GitLab (glpat-), npm (npm_), PyPI (pypi-) | Crítico |
| Chaves privadas | Blocos PEM (-----BEGIN … PRIVATE KEY-----) | Crítico |
| JWTs | eyJ… tokens de três segmentos | Alto |
| Strings de conexão | URLs com credenciais inline (scheme://user:pass@host) | Alto |
| Variáveis de credencial | password = "…", api_key = "…", secret_key = "…" | Alto/Médio/Baixo |
| Atributos XML | <add key="Password" value="…" /> | Alto/Médio/Baixo |
| Strings de alta entropia | hex entre aspas (32–64 caracteres) / Base64 (60+ caracteres) | Médio/Baixo |
.php.cs.kt.tf.hcl.conf.config.properties.xml.pem.key.crt.txt| Nenhuma descoberta, ou todas resolvidas |
1 | Descobertas não resolvidas |
2 | Erro (por exemplo: caminho inválido, --replacement perigoso, --ci --fix-all, ou --fail-on-error com arquivo ilegível) |
| Documento | Descrição |
|---|
| Guia de Configuração | Instalação, configuração, integração CI/CD |
| Manual | Referência completa: cada flag, modo e combinação, comportamento de substituição e backup, detecção e gravidade, códigos de saída e limitações (comportamento verificado por testes) |
| Exemplos | Fluxos de trabalho comuns com saída |
| Integração CI | Hooks pre-commit, pipelines de CI |
| Segurança | Modelo de ameaça, medidas de endurecimento, limitações conhecidas |
| Changelog | Histórico de versões |
| Contribuição | Configuração de desenvolvimento, estilo de código, processo de PR |
| Aviso Legal | Limitações, uso seguro, garantia |