Volver a la wiki

Hardening del Agente Terminal Fase B / Tanda B1 — Seguridad interna (2.0.22)

Descripción

Cierre de cuatro amenazas críticas en el Agente local (terminal/agent/.exe) detectadas en la Auditoría Suprema (Sesión 124). Los cambios son internos al ejecutable — no alteran el contrato HTTP con el frontend ni requieren cambios en la UI. El Agent se recompila a mano (build_agent.bat) y se publica como GitHub Release asset con bump de versión 2.0.22.

Cambios de seguridad

R4: SSH host-key TOFU (anti-MITM en la LAN)

Problema: El Agent conectaba a dispositivos de red con known_hosts=None / auth_strict_key=False — la verificación de identidad SSH estaba desactivada. Un atacante en la red local podía interponer un proxy (MITM) y capturar credenciales o inyectar comandos.

Solución: Nuevo módulo network/host_keys.py implementa Trust-On-First-Use (TOFU):

Aplicado en:

Impacto: primer acceso a un nuevo dispositivo es igual que antes; accesos posteriores quedan protegidos.

R5: Credenciales SNMP cifradas en reposo (DPAPI)

Problema: Campos snmp_community / snmp_v3_auth_key / snmp_v3_priv_key se guardaban en texto plano en metrics.db (SQLite del Agent en el PC del cliente). Los tokens JWT ya iban cifrados con DPAPI, pero las credenciales de dispositivo no.

Solución: Nuevo módulo core/crypto.py cifra estos campos con DPAPI (el mismo mecanismo que protege los JWTs, atado a la cuenta Windows):

Impacto: las credenciales están protegidas por la cuenta Windows del cliente; si alguien logra acceso físico o fichero, no puede descifrarlas sin las claves del usuario.

R6: Trap receiver con allowlist + caps

Problema: El receptor SNMP de traps (UDP 0.0.0.0:162) aceptaba y persistía traps de cualquier origen. Riesgos: DoS de disco (llenar metrics.db con spam), spoof de telemetría (inyectar avisos falsos como si vinieran de equipos monitorizados).

Solución: Mejoras en trap_receiver.py:

Impacto: la telemetría SNMP queda inmune a DoS y spoofing.

CVE asyncssh #81 + otras librerías

Actualizadas en requirements-agent.lock. Cierra el cron rojo agent-pip-audit (activo desde s101).

Limpieza arquitectónica

12 módulos de dead code removidos (Regla 13 — código inerte del monolito v1):

Verificación: subgrafo cerrado (solo se importaban entre sí; 0 importadores vivos). Sus líneas también se quitaron de build_agent.bat y del README.

Reducción de bloat en el .exe: menos código bundled = ejecutable más pequeño y surface de ataque menor.

Validación

Lo que queda (Fase B — coordinar aparte)

Véase también

Subir