Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
autonoma — Detecta e corrige automaticamente segredos codificados em repositórios Python — recusa quando a correção pode quebrar seu código | Kitploit
Ferramentas/GitHubGitHub/vihaaninnovations/autonoma
Análise EstáticaAnálise de VulnerabilidadesAnálise de CódigoDevSecOpsDetecção de SegredosSegurança da Cadeia de Suprimentos
GitHubvihaaninnovations/autonoma

autonoma

Detecta e corrige automaticamente segredos codificados em repositórios Python — recusa quando a correção pode quebrar seu código

Ver Repositório
22há 4 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Autonoma

Python License Platform Edition PyPI Version

Autonoma detecta segredos codificados e os substitui por referências os.environ[...] usando reescritas de AST. As alterações são aplicadas apenas quando a reescrita é determinística e preserva a semântica.

As reescritas usam a árvore sintática analisada — não regex em texto bruto.
Executa localmente sem chamadas de rede. Funciona em CI com diffs idempotentes e mínimos.

Autonoma Demo


Que problema isso resolve

Segredos codificados em bases de código:

  • segredos são commitados e permanecem no histórico do git
  • corrigi-los manualmente quebra o código ou perde casos limite
  • equipes detectam vazamentos mas evitam ferramentas de correção automática porque são inseguras
  • A maioria das ferramentas os detecta.
    Autonoma só mexe no que consegue provar que é seguro alterar.


    Exemplo rápido

    root@kitploit:~
    autonoma scan .
    autonoma fix .
    git diff
    

    Instalação

    root@kitploit:~
    pip install autonoma-cli
    

    Integração com Pre-commit

    Adicione isto ao seu .pre-commit-config.yaml para impedir que segredos entrem no histórico:

    root@kitploit:~
    - repo: local
      hooks:
        - id: autonoma
          name: Autonoma Scan
          entry: autonoma scan
          language: system
          types: [python]
    

    Experimente em 60 segundos

    root@kitploit:~
    # 1. Crie um arquivo de teste com segredos codificados
    cat > test_secrets.py << 'EOF'
    SENDGRID_API_KEY = "sg-live-abc123xyz789"
    DB_PASSWORD = "Pr0dAccess2024!"
    EOF
    
    # Crie também o arquivo de contrato de ambiente (necessário para remediação segura)
    printf 'SENDGRID_API_KEY=\nDB_PASSWORD=\n' > .env.example
    
    # 2. Escaneie — emite resultados JSON para stdout
    autonoma scan test_secrets.py
    
    # 3. Corrija — reescreve o arquivo no lugar
    autonoma fix test_secrets.py
    
    # 4. Escaneie novamente — agora deve estar limpo (código de saída 0)
    autonoma scan test_secrets.py
    
    # 5. Inspecione o resultado
    cat test_secrets.py
    

    Saída esperada após a correção:

    root@kitploit:~
    import os
    SENDGRID_API_KEY = os.environ["SENDGRID_API_KEY"]
    DB_PASSWORD = os.environ["DB_PASSWORD"]
    

    Comandos

    scan

    Modo de detecção. Envia JSON para stdout e um resumo legível para stderr. Não mutante — nunca modifica arquivos.

    root@kitploit:~
    # Escaneie um diretório (resultados JSON para stdout)
    autonoma scan src/
    
    # Salve resultados JSON em um arquivo
    autonoma scan src/ > findings.json
    

    Códigos de saída para scan:

    CódigoSignificado
    0Nenhuma ocorrência
    1Ocorrências detectadas
    3Erro da ferramenta

    fix

    Remedia segredos codificados usando reescritas de AST. Modifica arquivos no lugar.

    root@kitploit:~
    # Aplique correções
    autonoma fix src/
    
    # Visualize as alterações antes de escrever
    autonoma fix src/ --diff
    
    # Escreva um registro de auditoria da remediação
    autonoma fix src/ --report-out audit.json
    

    Códigos de saída para fix:

    CódigoSignificado
    0Nenhuma ocorrência — repositório já estava limpo
    1Ocorrências existiam antes da remediação (a remediação pode ter sido bem-sucedida — verifique a saída para contagens de CORRIGIDO/RECUSADO)
    3Erro da ferramenta

    O comando fix sai com código 1 sempre que encontra segredos antes de tentar a remediação, independentemente de a reescrita ter sido bem-sucedida. Isso é intencional: pipelines de CI devem sinalizar o commit onde os segredos foram introduzidos, mesmo após a correção automática. Execute autonoma scan depois para confirmar que o repositório está limpo.

    history-scan

    Escaneia o histórico do git em busca de segredos que foram commitados e depois removidos ou alterados.

    [!NOTE] Apenas detecção. Este comando não reescreve o histórico do git nem modifica commits.

    root@kitploit:~
    autonoma history-scan .
    

    Antes / Depois

    Estes são os padrões que a Autonoma corrige atualmente.

    Antes

    root@kitploit:~
    # settings.py
    SENDGRID_API_KEY = "sg-live-abc123xyz789"
    DB_PASSWORD = "Pr0dAccess2024!"
    

    Depois (autonoma fix .)

    root@kitploit:~
    # settings.py
    import os
    SENDGRID_API_KEY = os.environ["SENDGRID_API_KEY"]
    DB_PASSWORD = os.environ["DB_PASSWORD"]
    

    Recusado (segurança de recusa primeiro)

    root@kitploit:~
    # f-string — recusado porque a reescrita mudaria a semântica
    api_key = f"prefix_{BASE_KEY}"
    # → RECUSADO: refuse_fstring_mixed_expression
    
    # Valor aninhado em dicionário — recusado porque o alvo não é uma atribuição simples
    DATABASES = {
        "default": {"PASSWORD": "Pr0d@ccess2024!"}
    }
    # → RECUSADO: tipo de alvo de atribuição não suportado
    

    Ocorrências recusadas são relatadas na saída JSON e causam um código de saída diferente de zero no CI. Arquivos com ocorrências recusadas nunca são modificados.


    O que a Autonoma corrige vs recusa

    PadrãoExemploComportamentoPorquê
    Atribuição simplesapi_key = "sk-abc123"CorrigidoReescrita determinística de AST
    Atributo de classeclass C: SECRET = "abc"CorrigidoReescrita determinística de AST
    Argumento nomeadoconnect(password="abc")CorrigidoReescrita determinística de AST
    f-stringkey = f"prefix_{v}"RecusadoA reescrita alteraria o comportamento em tempo de execução
    Concatenaçãokey = "sk-" + suffixRecusadoA reescrita alteraria o comportamento em tempo de execução
    Valor aninhado em dicionáriocfg = {"pass": "abc"}RecusadoNão é um alvo de atribuição simples
    Atribuição múltiplaA = B = "secret"RecusadoAlvo ambíguo
    Já segurokey = os.getenv("KEY")IgnoradoNenhuma alteração necessária
    .env.example ausentequalquer padrãoRecusadoNenhum contrato de ambiente para derivar o nome da variável

    Funcionalidades de CI/CD

    Reexecutar em um arquivo limpo não faz alterações. As reescritas mantêm a indentação original e os comentários. import os é adicionado apenas se estiver ausente.

    Integração e CI/CD

    GitHub Actions (Apenas Escaneamento)

    Para falhar a build se qualquer segredo for detectado:

    root@kitploit:~
    - name: Scan for secrets
      run: autonoma scan .
    

    Comandos Legados

    analyze é mantido para compatibilidade retroativa. Migre para scan ou fix.

    root@kitploit:~
    # Equivalente a 'autonoma scan'
    autonoma analyze src/ --detect-only
    
    # Equivalente a 'autonoma fix'
    autonoma analyze src/ --auto-fix
    

    Restrições e Comportamentos

    O que ele remedia

    • Atribuições simples: API_KEY = "secret"
    • Atributos de classe: class Config: PASS = "secret"
    • Argumentos nomeados: connect(password="secret")

    O que ele recusa (por design)

    • Expressões Complexas: f-strings, concatenações ou chamadas de função no lado direito.
    • Alvos Ambíguos: Atribuições múltiplas (A = B = "secret") ou desempacotamento de tuplas.
    • Valores Aninhados/em Dicionários: Valores dentro de dicionários, listas ou tuplas.
    • Contexto Ausente: Se nenhum .env.example ou contrato de ambiente for encontrado no repositório.

    Casos recusados são relatados na saída JSON e causarão códigos de saída diferentes de zero no CI. O arquivo nunca é modificado se qualquer problema nele for recusado.

    O que ele não faz

    • Não usa entropia/adivinhação (usa correspondência heurística de nomes).
    • Não modifica arquivos que não são Python na Edição Community.
    • Não exclui seu código; backups são escritos como <arquivo>.bak antes da modificação.

    Limitações atuais

    Atualmente, o SEC002 combina padrões de valor de credenciais com lógica de roteamento condicionada por palavras-chave. Credenciais atribuídas a nomes de variáveis altamente atípicos podem não ser detectadas.

    A Autonoma evita intencionalmente detecção de segredos baseada apenas em entropia ampla, a menos que o impacto na precisão possa ser medido contra um corpus rotulado de falsos positivos.


    Esquema JSON

    autonoma scan envia um relatório detect-only para stdout:

    root@kitploit:~
    {
      "schema_version": "1.0",
      "tool_name": "autonoma",
      "tool_version": "0.1.5",
      "generated_at": "2026-03-24T12:00:00Z",
      "mode": "detect-only",
      "summary": {
        "files_processed": 3,
        "total_findings": 2,
        "safe_to_fix": 1,
        "refused": 1
      },
      "findings": [
        {
          "file": "settings.py",
          "line": 4,
          "pattern_type": "api_key",
          "severity": "high",
          "rule_id": "SEC002",
          "safe_to_fix": true,
          "suggested_env_var": "SENDGRID_API_KEY",
          "refusal_reason": null,
          "fingerprint": "sha256:abc123..."
        }
      ]
    }
    

    Licença

    MIT License

    Baixar ferramenta