Volver a la wiki

Auditoría Suprema 2 · Cola network: DeviceTask sin agente que no caduca y comandos de la whitelist por vendor inalcanzables

Cuándo

04-09-2026 · commit 48872fc4 (PR #503, v1.112.0). Cierra los dos hallazgos de la cola MEDIA/BAJA de la Auditoría Suprema 2 para network (task #286) que el PR #502 (v1.111.0, mismo día) había dejado pendientes por ser decisión de producto, no arreglo mecánico. Edu tomó las dos decisiones esa misma tarde y este PR las implementa. 5 tests nuevos en tests/network/test_cola_auditoria_network.py.

Síntomas visibles

  1. net-#16 — Una DeviceTask sin ningún Agente conectado nunca caducaba. _schedule_retry decide rendirse mirando task.attempts, pero solo el camino “agente encontrado” incrementa ese contador (attempts=F("attempts")+1 dentro del claim atómico); el camino “sin agente” sale antes sin tocarlo. Con attempts clavado en 0, la condición de rendición (attempts >= max_attempts) era matemáticamente inalcanzable: el sweeper de cada minuto reencolaba la tarea para siempre, nunca llegaba a un estado terminal y purge_device_tasks no la borraba jamás — filas queued acumulándose sin límite en cualquier organización con el Agente apagado.
  2. net-#21 — Tres comandos declarados “seguros” en la whitelist por fabricante nunca podían ejecutarse: copy running-config startup-config (Cisco IOS y NX-OS) y delete interfaces (Juniper Junos) están también en el blocklist genérico, que se evalúa ANTES que la whitelist por prefijo. El operador veía “Blocked command” sobre un comando que la propia tabla marcaba como aprobado para ese fabricante — y en NX-OS, que no tiene write memory, no quedaba NINGUNA forma aprobada de persistir un cambio de remediación.

Causa raíz

Fix aplicado

Commit 48872fc4 (PR #503):

Lecciones

Preventivos futuros

Véase también

Subir