Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
autonoma — Rileva e corregge automaticamente segreti hardcoded in repository Python — rifiuta quando la correzione potrebbe rompere il tuo codice | Kitploit
Strumenti/GitHubGitHub/vihaaninnovations/autonoma
Analisi StaticaAnalisi delle VulnerabilitàAnalisi del CodiceDevSecOpsRilevamento SegretiSicurezza della Supply Chain
GitHubvihaaninnovations/autonoma

autonoma

Rileva e corregge automaticamente segreti hardcoded in repository Python — rifiuta quando la correzione potrebbe rompere il tuo codice

Vedi Repository
2265 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Autonoma

Python License Platform Edition PyPI Version

Autonoma rileva segreti hardcoded e li sostituisce con riferimenti a os.environ[...] utilizzando riscritture AST. Le modifiche vengono applicate solo quando la riscrittura è deterministica e preserva la semantica.

Le riscritture utilizzano l'albero sintattico analizzato — non espressioni regolari su testo grezzo. Viene eseguito localmente senza chiamate di rete. Funziona in CI con differenziali idempotenti e minimi.

Autonoma Demo


Quale problema risolve

Segreti hardcoded nei codebase:

  • i segreti vengono committati e rimangono nella cronologia git
  • risolverli manualmente rompe il codice o trascura casi limite
  • i team rilevano le fughe ma evitano strumenti di auto-riparazione perché non sono sicuri

La maggior parte degli strumenti li rileva. Autonoma tocca solo ciò che può dimostrare essere sicuro da modificare.


Esempio rapido

autonoma scan .
autonoma fix .
git diff

Installazione

pip install autonoma-cli

Integrazione Pre-commit

Aggiungi questo al tuo .pre-commit-config.yaml per impedire che i segreti entrino nella tua cronologia:

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

Provalo in 60 secondi

# 1. Create a test file with hardcoded secrets
cat > test_secrets.py << 'EOF'
SENDGRID_API_KEY = "sg-live-abc123xyz789"
DB_PASSWORD = "Pr0dAccess2024!"
EOF

# Also create the env contract file (required for safe remediation)
printf 'SENDGRID_API_KEY=\nDB_PASSWORD=\n' > .env.example

# 2. Scan — emits JSON findings to stdout
autonoma scan test_secrets.py

# 3. Fix — rewrites the file in place
autonoma fix test_secrets.py

# 4. Scan again — should now be clean (exit 0)
autonoma scan test_secrets.py

# 5. Inspect the result
cat test_secrets.py

Risultato atteso dopo la risoluzione:

import os
SENDGRID_API_KEY = os.environ["SENDGRID_API_KEY"]
DB_PASSWORD = os.environ["DB_PASSWORD"]

Comandi

scan

Modalità di rilevamento. Emette JSON su stdout e un riepilogo leggibile su stderr. Non muta — non modifica mai i file.

# Scan a directory (JSON findings to stdout)
autonoma scan src/

# Save JSON results to a file
autonoma scan src/ > findings.json

Codici di uscita per scan:

CodiceSignificato
0Nessun risultato
1Risultati rilevati
3Errore dello strumento

fix

Rimedita i segreti hardcoded utilizzando riscritture AST. Muta i file sul posto.

# Apply fixes
autonoma fix src/

# Preview patches before writing
autonoma fix src/ --diff

# Write remediation audit log
autonoma fix src/ --report-out audit.json

Codici di uscita per fix:

CodiceSignificato
0Nessun risultato — il repo era già pulito
1Risultati esistenti prima della remediation (la remediation potrebbe essere riuscita — controlla l'output per i conteggi FIXED/REFUSED)
3Errore dello strumento

Il comando fix esce con codice 1 ogni volta che trova segreti prima di tentare la remediation, indipendentemente dal successo della riscrittura. Questo è intenzionale: le pipeline CI dovrebbero segnalare il commit in cui sono stati introdotti i segreti, anche dopo l'auto-fix. Esegui autonoma scan in seguito per confermare che il repo sia pulito.

history-scan

Analizza la cronologia git per segreti che sono stati committati e successivamente rimossi o modificati.

[!NOTE] Solo rilevamento. Questo comando non riscrive la cronologia git né modifica i commit.

autonoma history-scan .

Prima / Dopo

Questi sono i pattern che Autonoma effettivamente risolve oggi.

Prima

# settings.py
SENDGRID_API_KEY = "sg-live-abc123xyz789"
DB_PASSWORD = "Pr0dAccess2024!"

Dopo (autonoma fix .)

# settings.py
import os
SENDGRID_API_KEY = os.environ["SENDGRID_API_KEY"]
DB_PASSWORD = os.environ["DB_PASSWORD"]

Rifiutati (sicurezza del rifiuto prima di tutto)

# f-string — refused because the rewrite would change semantics
api_key = f"prefix_{BASE_KEY}"
# → REFUSED: refuse_fstring_mixed_expression

# Dict/nested value — refused because the target is not a simple assignment
DATABASES = {
    "default": {"PASSWORD": "Pr0d@ccess2024!"}
}
# → REFUSED: unsupported assignment target type

I risultati rifiutati vengono segnalati nell'output JSON e causano un codice di uscita diverso da zero in CI. I file con risultati rifiutati non vengono mai modificati.


Cosa Autonoma risolve vs rifiuta

PatternEsempioComportamentoMotivo
Assegnazione sempliceapi_key = "sk-abc123"RisoltoRiscrittura AST deterministica
Attributo di classeclass C: SECRET = "abc"RisoltoRiscrittura AST deterministica
Argomento keywordconnect(password="abc")RisoltoRiscrittura AST deterministica
f-stringkey = f"prefix_{v}"RifiutatoLa riscrittura cambierebbe il comportamento a runtime
Concatenazionekey = "sk-" + suffixRifiutatoLa riscrittura cambierebbe il comportamento a runtime
Valore in dict/nidificatocfg = {"pass": "abc"}RifiutatoNon è un target di assegnazione semplice
Assegnazione multiplaA = B = "secret"RifiutatoTarget ambiguo
Già sicurokey = os.getenv("KEY")SaltatoNessuna modifica necessaria
Manca .env.examplequalsiasi patternRifiutatoNessun contratto env da cui derivare il nome della variabile

Funzionalità CI/CD

Eseguendo nuovamente su un file pulito non vengono apportate modifiche. Le riscritture mantengono l'indentazione originale e i commenti. import os viene aggiunto solo se mancante.

Integrazione e CI/CD

GitHub Actions (Solo Scansione)

Per far fallire il build se vengono rilevati segreti:

- name: Scan for secrets
  run: autonoma scan .

Comandi Legacy

analyze è mantenuto per retrocompatibilità. Esegui la migrazione a scan o fix.

# Equivalent to 'autonoma scan'
autonoma analyze src/ --detect-only

# Equivalent to 'autonoma fix'
autonoma analyze src/ --auto-fix

Vincoli e Comportamenti

Cosa risolve

  • Assegnazioni semplici: API_KEY = "secret"
  • Attributi di classe: class Config: PASS = "secret"
  • Argomenti keyword: connect(password="secret")

Cosa rifiuta (per design)

  • Espressioni complesse: f-string, concatenazioni o chiamate di funzione sul lato destro.
  • Target ambigui: Assegnazioni multiple (A = B = "secret") o unpacking di tuple.
  • Valori nidificati/dict: Valori all'interno di dict, liste o tuple.
  • Contesto mancante: Se non viene trovato un .env.example o un contratto ambiente nel repo.

I casi rifiutati vengono segnalati nell'output JSON e causeranno codici di uscita diversi da zero in CI. Il file non viene mai modificato se anche un solo problema in esso viene rifiutato.

Cosa non fa

  • Non utilizza entropia/indovinelli (utilizza corrispondenza euristica dei nomi).
  • Non modifica file non Python nell'Edizione Community.
  • Non cancella il tuo codice; i backup vengono scritti come <file>.bak prima della modifica.

Limitazioni attuali

Scarica lo strumento