Guilgo Blog

Notas de mi quehacer diario con las técnologias.

Wazuh ha publicado la 4.9.1, versión que corrige la vulnerabilidad CVE-2025-24016 (deserialización insegura en el Wazuh Server) y que más tarde fue explotada por variantes de Mirai contra servidores expuestos. La mitigación efectiva es actualizar a 4.9.1 o superior en manager, indexer y dashboard, y después elevar agentes para mantener compatibilidad.

Resumen ejecutivo

  • CVE-2025-24016 permite RCE en wazuh-manager (v ≥ 4.4.0 y < 4.9.1). Corregido en 4.9.1.
  • Hubo explotación activa por botnets Mirai en 2025 contra servidores con API expuesta.
  • Wazuh indicó que el bug requiere credenciales de API; con panel o API expuestos y claves débiles, el riesgo es crítico.

Fuentes: CVE/NVD, Release notes 4.9.1, avisos de Akamai/Censys y guía oficial de upgrade.

Línea temporal

  • 17‑oct‑2024: se publica 4.9.1 con el fix.
  • feb‑2025: divulgación pública del CVE y PoC.
  • mar‑jun‑2025: campañas Mirai automatizan el exploit contra Wazuh mal configurados.

¿Qué versiones están afectadas?

  • Servidor (manager): 4.4.0 → 4.9.0 vulnerables. Seguro: 4.9.1+.
  • Agentes: no afectados por el CVE, pero deben quedar ≤ versión del manager para compatibilidad.
  • Indexer/Dashboard: actualizar en conjunto con el manager.

Actualización urgente (manager, indexer, dashboard)

Ejecuta como root. Asegúrate de tener backup y ventana de mantenimiento. Mantén las tres piezas en misma versión.

Debian/Ubuntu (APT)

apt-get update
apt-get install --only-upgrade wazuh-manager wazuh-indexer wazuh-dashboard
systemctl restart wazuh-manager wazuh-indexer wazuh-dashboard

RHEL/Alma/Rocky (DNF/YUM)

dnf makecache || yum makecache
dnf upgrade -y wazuh-manager wazuh-indexer wazuh-dashboard || yum update -y wazuh-manager wazuh-indexer wazuh-dashboard
systemctl restart wazuh-manager wazuh-indexer wazuh-dashboard

Verificación de versión

/var/ossec/bin/wazuh-control status  # estado
dpkg -l | egrep 'wazuh-(manager|indexer|dashboard)' || rpm -qa | egrep 'wazuh-(manager|indexer|dashboard)'

Si tienes Ansible/Puppet/Helm, fija version: 4.9.1 (o superior estable actual) en playbooks/charts y despliega.

Upgrade de agentes

Recomendado: remoto desde el manager o vía API para flotas grandes.

# Listar agentes y versiones conocidas
/var/ossec/bin/agent_control -l

# Desencadenar upgrade remoto (todos los que pueda)
/var/ossec/bin/agent_upgrade -a

# Ejemplo selectivo por ID
/var/ossec/bin/agent_upgrade -A 012

Alternativa: actualización local con APT/DNF en cada endpoint. En Windows, usa el paquete WPK o el asistente desde el Dashboard.


Validación post-parche

  1. Compatibilidad: manager==indexer==dashboard.
  2. Agentes conectados: sin pending upgrade, sin disconnected.
  3. Logs limpios: sin errores nuevos en /var/ossec/logs/ossec.log ni en .../api/api.log.
  4. Exposición: el puerto 55000/tcp (API) no debe estar accesible públicamente.

Detección y monitorización

Ingesta del log de API para correlación

Añade a ossec.conf del manager para leer api.log como JSON:

<ossec_config>
  <localfile>
    <log_format>json</log_format>
    <location>/var/ossec/logs/api/api.log</location>
    <tag>wazuh_api</tag>
  </localfile>
</ossec_config>

Recarga:

/var/ossec/bin/wazuh-control restart

Reglas locales de alerta (indicadores del exploit)

Crea/edita /var/ossec/etc/rules/local_rules.xml:

<group name="wazuh_api,attack,mirai,">
  <!-- Accesos al endpoint sensible run_as -->
  <rule id="109010" level="10">
    <if_group>wazuh_api</if_group>
    <match>authenticate/run_as</match>
    <description>Wazuh API endpoint run_as invocado</description>
    <mitre>
      <id>T1190</id>
      <id>T1210</id>
    </mitre>
  </rule>

  <!-- Patrón del payload deserializado -->
  <rule id="109011" level="12">
    <if_group>wazuh_api</if_group>
    <match>__unhandled_exc__</match>
    <description>Posible intento de explotación CVE-2025-24016 (__unhandled_exc__)</description>
    <mitre>
      <id>T1190</id>
    </mitre>
  </rule>
</group>

Ajusta niveles/mitre a tus políticas. Estas reglas no explotan nada, solo detectan patrones.

Búsquedas rápidas en Kibana/OpenSearch

index:wazuh-alerts-* AND (data.message:"authenticate/run_as" OR data.message:"__unhandled_exc__")
index:wazuh-alerts-* AND rule.groups:"wazuh_api" AND rule.id:10901*

IoCs relevantes (campañas Mirai observadas en 2025)

Los IoCs cambian con frecuencia. Úsalos como bloqueo temporal y alimenta tu threat‑intel con listas vivas. Referencias públicas incluyeron los siguientes dominios/IP observados en intentos de explotación y C2:

IPs

176.65.134.62
104.168.101.27
209.141.34.106
65.222.202.53
196.251.86.49

Dominios/Subdominios

nuklearcnc.duckdns.org
cbot.galaxias.cc
neon.galaxias.cc
pangacnc.com
jimmyudp-raw.xyz

Reglas rápidas (ejemplo) para marcar fuente/origen coincidente con IoC por srcip o url (adapta a tu esquema de eventos):

<group name="mirai,ioc,network,">
  <rule id="109020" level="12">
    <field name="srcip">176.65.134.62</field>
    <description>Mirai IoC: origen IP 176.65.134.62</description>
  </rule>
  <rule id="109021" level="12">
    <regex field="url">nuklearcnc\.duckdns\.org|cbot\.galaxias\.cc|neon\.galaxias\.cc|pangacnc\.com|jimmyudp-raw\.xyz</regex>
    <description>Mirai IoC: dominio C2 observado</description>
  </rule>
</group>

Endurecimiento (imprescindible tras actualizar)

  • Cerrar 55000/tcp al exterior; limitar API por firewall/VPN.
  • Rotar credenciales del Dashboard/API; deshabilitar cuentas por defecto.
  • TLS y políticas de contraseñas robustas; MFA si delegas SSO.
  • Least privilege: no compartas claves admin; usa cuentas de servicio.
  • Supervisión continua de api.log y de eventos Wazuh inusuales.

Checklist de 5 pasos

  1. Actualiza a 4.9.1 o superior en manager/indexer/dashboard.
  2. Sube agentes y valida conectividad.
  3. Ingresa api.log y aplica reglas de detección.
  4. Cierra/limita la API; rota credenciales.
  5. Aplica IoCs y revisa dashboards de actividad.

Referencias (para ampliar)

Si ya estás en ramas 4.10.x–4.13.x, también estás protegido contra CVE-2025-24016. Mantén ciclo de parches regular.