Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
autonoma — Detecta y corrige automáticamente secretos codificados en repositorios de Python — se niega cuando la corrección podría romper tu código. | Kitploit
Herramientas/GitHubGitHub/vihaaninnovations/autonoma
Análisis EstáticoAnálisis de VulnerabilidadesAnálisis de CódigoDevSecOpsDetección de SecretosSeguridad de Cadena de Suministro
GitHubvihaaninnovations/autonoma

autonoma

Detecta y corrige automáticamente secretos codificados en repositorios de Python — se niega cuando la corrección podría romper tu código.

Ver Repositorio
218hace 4 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Autonoma

Python License Platform Edition PyPI Version

Autonoma detecta secretos hardcodeados y los reemplaza con referencias a os.environ[...] usando reescrituras del AST. Los cambios se aplican solo cuando la reescritura es determinista y preserva la semántica.

Las reescrituras usan el árbol sintáctico analizado — no regex sobre texto crudo. Funciona localmente sin llamadas de red. Funciona en CI con diffs idempotentes y mínimos.

Autonoma Demo


Qué problema resuelve

Secretos hardcodeados en bases de código:

  • los secretos se comitean y quedan en el historial de git
  • arreglarlos manualmente rompe el código o pasa por alto casos límite
  • los equipos detectan fugas pero evitan herramientas de auto-fix porque no son seguras

La mayoría de las herramientas los detectan.
Autonoma solo toca lo que puede demostrar que es seguro cambiar.


Ejemplo rápido

autonoma scan .
autonoma fix .
git diff

Instalación

pip install autonoma-cli

Integración con Pre-commit

Agrega esto a tu .pre-commit-config.yaml para evitar que los secretos entren en tu historial:

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

Pruébalo en 60 segundos

# 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

Salida esperada después del fix:

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

Comandos

scan

Modo de detección. Emite JSON a stdout y un resumen legible a stderr. No mutante — nunca modifica archivos.

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

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

Códigos de salida para scan:

CódigoSignificado
0Sin hallazgos
1Hallazgos detectados
3Error de herramienta

fix

Remedia secretos hardcodeados usando reescrituras del AST. Modifica archivos en el lugar.

# Apply fixes
autonoma fix src/

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

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

Códigos de salida para fix:

CódigoSignificado
0Sin hallazgos — el repo ya estaba limpio
1Hallazgos existían antes de la remediación (la remediación puede haber tenido éxito — revisa la salida para conteos de FIXED/REFUSED)
3Error de herramienta

El comando fix sale con 1 cada vez que encontró secretos antes de intentar la remediación, independientemente de si la reescritura tuvo éxito. Esto es intencional: los pipelines de CI deben marcar el commit donde se introdujeron los secretos, incluso después del auto-fix. Ejecuta autonoma scan después para confirmar que el repositorio está limpio.

history-scan

Escanea el historial de git en busca de secretos que fueron comiteados y luego eliminados o cambiados.

[!NOTE] Solo detección. Este comando no reescribe el historial de git ni modifica commits.

autonoma history-scan .

Antes / Después

Estos son los patrones que Autonoma realmente arregla hoy.

Antes

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

Después (autonoma fix .)

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

Rechazado (seguridad de rechazo primero)

# 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

Los hallazgos rechazados se reportan en la salida JSON y causan una salida distinta de cero en CI. Los archivos con hallazgos rechazados nunca se modifican.


Lo que Autonoma arregla vs rechaza

PatrónEjemploComportamientoPor qué
Asignación simpleapi_key = "sk-abc123"ArregladoReescritura determinista del AST
Atributo de claseclass C: SECRET = "abc"ArregladoReescritura determinista del AST
Argumento de palabra claveconnect(password="abc")ArregladoReescritura determinista del AST
f-stringkey = f"prefix_{v}"RechazadoLa reescritura cambiaría el comportamiento en runtime
Concatenaciónkey = "sk-" + suffixRechazadoLa reescritura cambiaría el comportamiento en runtime
Valor de diccionario/anidadocfg = {"pass": "abc"}RechazadoNo es un objetivo de asignación simple
Asignación múltipleA = B = "secret"RechazadoObjetivo ambiguo
Ya segurokey = os.getenv("KEY")OmitidoNo se necesita cambio
Falta .env.examplecualquier patrónRechazadoSin contrato de env para derivar nombre de variable

Funcionalidades de CI/CD

Re-ejecutar sobre un archivo limpio no hace cambios. Las reescrituras mantienen la indentación y comentarios originales. import os se agrega solo si falta.

Integración y CI/CD

GitHub Actions (Solo Escaneo)

Para que tu build falle si se detectan secretos:

- name: Scan for secrets
  run: autonoma scan .

Comandos heredados

analyze se mantiene por compatibilidad hacia atrás. Migra a scan o fix.

# Equivalente a 'autonoma scan'
autonoma analyze src/ --detect-only

# Equivalente a 'autonoma fix'
autonoma analyze src/ --auto-fix

Restricciones y Comportamientos

Lo que remedia

  • Asignaciones simples: API_KEY = "secret"
  • Atributos de clase: class Config: PASS = "secret"
  • Argumentos de palabra clave: connect(password="secret")

Lo que rechaza (por diseño)

  • Expresiones complejas: f-strings, concatenaciones, o llamadas a funciones en el lado derecho.
  • Objetivos ambiguos: Asignaciones múltiples (A = B = "secret") o desempaquetado de tuplas.
  • Valores anidados/de diccionario: Valores dentro de diccionarios, listas o tuplas.
  • Contexto faltante: Si no se encuentra un .env.example o contrato de entorno en el repo.

Los casos rechazados se reportan en la salida JSON y causarán códigos de salida distintos de cero en CI. El archivo nunca se modifica si algún problema en él es rechazado.

Lo que no hace

  • No usa entropía/adivinanzas (usa coincidencia heurística de nombres).
  • No modifica archivos que no sean Python en la Edición Comunitaria.
  • No elimina tu código; se escriben copias de seguridad como <file>.bak antes de la modificación.

Limitaciones actuales

Descargar herramienta