Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
autonoma — Détecte et corrige automatiquement les secrets codés en dur dans les dépôts Python — refuse lorsque la correction pourrait casser votre code | Kitploit
Outils/GitHubGitHub/vihaaninnovations/autonoma
Analyse StatiqueAnalyse des VulnérabilitésAnalyse de CodeDevSecOpsDétection de SecretsSécurité de la Chaîne Logistique
GitHubvihaaninnovations/autonoma

autonoma

Détecte et corrige automatiquement les secrets codés en dur dans les dépôts Python — refuse lorsque la correction pourrait casser votre code

Voir le dépôt
218il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Autonoma

Python License Platform Edition PyPI Version

Autonoma détecte les secrets codés en dur et les remplace par des références os.environ[...] en utilisant des réécritures AST. Les modifications ne sont appliquées que lorsque la réécriture est déterministe et préserve la sémantique.

Les réécritures utilisent l'arbre syntaxique analysé — pas des regex sur le texte brut. S'exécute localement sans appels réseau. Fonctionne en CI avec des diffs idempotents et minimaux.

Autonoma Demo


Quel problème cela résout

Secrets codés en dur dans les codebases :

  • les secrets sont commités et restent dans l'historique git
  • les corriger manuellement casse le code ou ignore les cas particuliers
  • les équipes détectent les fuites mais évitent les outils de correction automatique car ils sont dangereux

La plupart des outils les détectent.
Autonoma ne touche que ce dont il peut prouver qu'il est sûr de modifier.


Exemple rapide

autonoma scan .
autonoma fix .
git diff

Installation

pip install autonoma-cli

Intégration Pre-commit

Ajoutez ceci à votre .pre-commit-config.yaml pour empêcher les secrets d'entrer dans votre historique :

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

Essayez-le en 60 secondes

# 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

Résultat attendu après correction :

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

Commandes

scan

Mode de détection. Envoie du JSON vers stdout et un résumé lisible vers stderr. Non-mutant — ne modifie jamais les fichiers.

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

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

Codes de sortie pour scan :

CodeSignification
0Aucun résultat
1Résultats détectés
3Erreur de l'outil

fix

Corrige les secrets codés en dur en utilisant des réécritures AST. Modifie les fichiers sur place.

# Apply fixes
autonoma fix src/

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

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

Codes de sortie pour fix :

CodeSignification
0Aucun résultat — le dépôt était déjà propre
1Résultats existants avant correction (la correction peut avoir réussi — vérifiez le comptage FIXED/REFUSED dans la sortie)
3Erreur de l'outil

La commande fix retourne 1 chaque fois qu'elle a trouvé des secrets avant de tenter une correction, que la réécriture ait réussi ou non. C'est intentionnel : les pipelines CI doivent signaler le commit où les secrets ont été introduits, même après correction automatique. Exécutez autonoma scan ensuite pour confirmer que le dépôt est propre.

history-scan

Analyse l'historique git pour les secrets qui ont été commités puis supprimés ou modifiés.

[!NOTE] Détection uniquement. Cette commande ne réécrit pas l'historique git ni ne modifie les commits.

autonoma history-scan .

Avant / Après

Voici les modèles qu'Autonoma corrige actuellement.

Avant

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

Après (autonoma fix .)

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

Refusé (sécurité par refus prioritaire)

# 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

Les résultats refusés sont signalés dans la sortie JSON et provoquent une sortie non nulle en CI. Les fichiers avec des résultats refusés ne sont jamais modifiés.


Ce qu'Autonoma corrige vs refuse

ModèleExempleComportementRaison
Assignation simpleapi_key = "sk-abc123"CorrigéRéécriture AST déterministe
Attribut de classeclass C: SECRET = "abc"CorrigéRéécriture AST déterministe
Argument nomméconnect(password="abc")CorrigéRéécriture AST déterministe
f-stringkey = f"prefix_{v}"RefuséLa réécriture modifierait le comportement à l'exécution
Concaténationkey = "sk-" + suffixRefuséLa réécriture modifierait le comportement à l'exécution
Valeur dictionnaire/imbriquéecfg = {"pass": "abc"}RefuséPas une cible d'assignation simple
Assignation multipleA = B = "secret"RefuséCible ambiguë
Déjà sûrkey = os.getenv("KEY")IgnoréAucun changement nécessaire
.env.example manquanttout modèleRefuséPas de contrat d'environnement pour dériver le nom de variable

Fonctionnalités CI/CD

Relancer sur un fichier propre ne fait aucune modification. Les réécritures conservent l'indentation et les commentaires d'origine. import os n'est ajouté que s'il manque.

Intégration & CI/CD

GitHub Actions (Scan uniquement)

Pour faire échouer votre build si des secrets sont détectés :

- name: Scan for secrets
  run: autonoma scan .

Commandes héritées

analyze est conservé pour la compatibilité ascendante. Migrez vers scan ou fix.

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

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

Contraintes & Comportements

Ce qu'il corrige

  • Assignations simples : API_KEY = "secret"
  • Attributs de classe : class Config: PASS = "secret"
  • Arguments nommés : connect(password="secret")

Ce qu'il refuse (par conception)

  • Expressions complexes : f-strings, concaténations ou appels de fonctions à droite.
  • Cibles ambiguës : Assignations multiples (A = B = "secret") ou déballage de tuple.
  • Valeurs imbriquées/dictionnaire : Valeurs dans des dictionnaires, listes ou tuples.
  • Contexte manquant : Si aucun .env.example ou contrat d'environnement n'est trouvé dans le dépôt.

Les cas refusés sont signalés dans la sortie JSON et provoqueront des codes de sortie non nuls en CI. Le fichier n'est jamais modifié si un problème qu'il contient est refusé.

Ce qu'il ne fait pas

  • Il n'utilise pas l'entropie/la supposition (il utilise une correspondance heuristique de noms).
  • Il ne modifie pas les fichiers non Python dans l'édition Community.
  • Il ne supprime pas votre code ; des sauvegardes sont écrites sous <file>.bak avant modification.

Limitations actuelles

Télécharger l’outil