Volver a la wiki

Mega-auditoría B-16 (27-09-2026): un Agente secundario recibía las credenciales SNMP de todos los equipos

Cuándo

27-09-2026, PR #621, commit 0d9a9f3185ac413c121b8cdacdde0abf0a3053ae (release v1.164.4). Mega-auditoría B-16 (tarea #371), preparada el 25-09-2026 y aplicada con el GO de Edu el 27-09-2026.

Síntomas visibles

GET /api/agent/targets/<org> — el camino REST por el que el Agente local (desde su versión 2.28) pide la lista de equipos a vigilar — devolvía la comunidad SNMP, las claves SNMPv3 y la URL HTTP ya descifradas a CUALQUIER Agente de la organización, también a los secundarios. El canal WebSocket ya restringía esa misma lista al Agente principal; el camino REST no tenía la comprobación equivalente.

Causa raíz

La pregunta “¿es este Agente el principal?” vivía duplicada: el WebSocket la resolvía leyendo AgentInstance.role directamente en AgentConsumer._current_role, y el endpoint REST no la hacía en absoluto. Al no depender los dos canales de una única función, bastó con que se abriera un segundo camino de acceso (el REST) para que la comprobación quedara sin aplicar ahí.

Fix aplicado

Lecciones

Preventivos futuros

El test tests/api/test_mega25_r8seg_agente_targets.py fija el comportamiento nuevo. Límite honesto: lo que un Agente secundario guardó en su base local ANTES de este fix se queda ahí — el servidor no puede borrarlo — y si ese secundario arranca su vigilancia por su cuenta, sigue usando esa lista vieja. En producción no hay hoy ningún Agente secundario (3 Agentes, los 3 principales), así que el escenario no se ha dado en real. Sin probar en PROD más allá de CI.

Véase también

Subir