Explorando el Malware PEERSTITCH: Amenaza Avanzada que Explotó CVE-2025-61624 en Fortinet
Llevo años revisando los boletines de seguridad de Fortinet, y muy pocos me hacen sentarme a leerlos dos veces. El descubrimiento de PEERSTITCH es uno de esos. No es un exploit más en una lista de CVSS 9.8 — es un recordatorio incómodo de que los appliances de red llevan una década siendo el perímetro de facto de empresas medianas y grandes, y que cuando alguien encuentra un hueco en su shell de comandos, las consecuencias se sienten enrutando hacia el resto de la red.
La historia es técnica y vale contarla bien. Un actor avanzado —todavía sin atribución pública confirmada— descubrió que la CLI de FortiOS, FortiPAM, FortiProxy y FortiSwitchManager podía recibir argumentos manipulados para escribir o borrar archivos fuera del árbol esperado. Lo parchearon en abril de 2026 con CVE-2025-61624, pero el daño llegó después: la ventana de exposición fue suficiente para desplegar PEERSTITCH, un malware residente en memoria para ARM64, sin firma en disco, que esquiva los chequeos de sesión VPN etiquetada.
Lo que me preocupa no es el CVSS 5.4 —es bajo a propósito para pasar desapercibido en los scoreboards de patch management— sino el modus operandi. El payload se inyecta en sesiones VPN legítimas con tagging activo, lo que significa que los registros de firewall lo ven como tráfico autorizado. En este artículo te explico qué es PEERSTITCH, cómo funciona el bypass, qué appliances están en riesgo, y qué puedes hacer como sysadmin para detectar actividad sospechosa mientras esperas tu próxima ventana de mantenimiento.
TL;DR — Lo que vas a tener al final
- Tiempo de lectura: 12–15 minutos (incluye comandos de detección).
- Requisitos: acceso SSH a FortiGate o FortiProxy, logs locales con al menos 30 días de retención, y nociones básicas de CLI de FortiOS.
- Resultado: entiendes el vector de CVE-2025-61624, identificas si tu appliance estuvo expuesto entre enero y abril de 2026, y aplicas una rutina de auditoría concreta.
- Troubleshooting: si los comandos
diag sys flash listofnsysctldevuelven errores, tu firmware es anterior al parche de abril — actualiza antes de continuar.
Qué es PEERSTITCH y por qué importa
PEERSTITCH es un malware no documentado públicamente hasta ahora, residente en memoria, compilado para arquitecturas ARM64 —la CPU de la mayoría de FortiGate y FortiProxy modernos—. La parte más interesante es la primera palabra: memory-resident. No toca el disco, no aparece en ls, no genera un binario persistente. Vive en el espacio de procesos de FortiOS y desaparece cuando el appliance se reinicia. Eso es lo que hace tan difícil detectarlo con antivirus tradicionales o chequeos de integridad de archivos.
El nombre viene, según los analistas que lo describieron, de la técnica de “coser” fragmentos de código en procesos ya cargados —peer-to-peer, sin servidor central— para mantener persistencia sin firma. Aunque no comparte código con implantes históricos tipo Symbiote o BPFDoor, la familia conceptual es la misma: malware de espacio de usuario que prefiere pasar desapercibido en lugar de persistir agresivamente.
¿Por qué importa si el CVSS es solo 5.4? Porque Fortinet es uno de los vendors con mayor huella en Latinoamérica. Cualquier empresa mediana con VPN site-to-site, IPSec contra data centers, o acceso remoto para empleados probablemente corre FortiOS. Si tu empresa tiene un FortiGate sin actualizar desde enero de 2026, este es un CVE que no puedes ignorar por su score.
CVE-2025-61624: el vector real detrás del ataque
El CVE-2025-61624 describe una vulnerabilidad de path traversal en el intérprete de línea de comandos de FortiOS. No es un bug nuevo en abstracto: es el patrón clásico de sanitización incompleta en argumentos CLI. Lo nuevo es dónde ocurre y qué permite.
En concreto: ciertos comandos administrativos aceptan rutas a archivos. Si el atacante puede inyectar secuencias tipo ../../ o caracteres Unicode equivalentes, el shell interno del FortiGate resuelve rutas fuera del árbol esperado. Combinado con un usuario que tenga privilegios de lectura/escritura en el directorio de configuración, el atacante puede:
- Escribir archivos arbitrarios dentro del sandbox del FortiOS (por ejemplo, un binario auxiliar que se cargue en el próximo reinicio).
- Borrar archivos de configuración críticos, forzando un modo de falla controlado.
- Modificar scripts de inicio que FortiOS ejecuta al arrancar, ganando persistencia limitada por ciclos de energía.
El parche de abril de 2026 bloquea las secuencias de path traversal y valida que las rutas resueltas estén dentro de los directorios permitidos. Pero si tu appliance corría firmware vulnerable cuando el ataque se ejecutó, el daño ya está hecho — el payload PEERSTITCH puede haber sido inyectado.
Qué productos están en riesgo
| Producto | Versiones afectadas | Parche disponible desde |
|---|---|---|
| FortiOS | 7.4.0 a 7.4.6, 7.2.0 a 7.2.10, 7.0.0 a 7.0.16 | Abril 2026 |
| FortiPAM | 1.0.0 a 1.3.1 | Abril 2026 |
| FortiProxy | 7.4.0 a 7.4.4, 7.2.0 a 7.2.9 | Abril 2026 |
| FortiSwitchManager | 7.4.0 a 7.4.2 | Abril 2026 |
Si tu firmware está por debajo de la versión parcheada, este artículo aplica para ti. Si ya actualizaste, quédate igual: las técnicas de detección siguen siendo útiles para auditar appliances que fueron vulnerables en algún momento del año.
Cómo funciona el bypass de sesiones VPN etiquetadas
Aquí está el detalle que más me preocupó al leer el reporte original. Los FortiGate etiquetan las sesiones VPN con metadatos que indican el nivel de confianza del origen: trusted, untrusted, tagged. Estas etiquetas alimentan las reglas de firewall internas y los controles de acceso al CLI administrativo.
El truco de PEERSTITCH es ejecutar su payload dentro de una sesión que ya tiene etiqueta tagged legítima. Los logs muestran el contexto del túnel, la IP del peer VPN, y la duración de la sesión — todo coincide con tráfico esperado. Pero el payload se ramifica dentro del proceso de FortiOS usando primitivas de la CLI ya cargadas, evitando generar nuevas conexiones que levantarían alertas en el IDS.
Para el sysadmin, esto significa que revisar los logs de VPN no es suficiente. Necesitas correlacionar:
- Sesiones VPN con duración anormalmente larga (más de 24 horas sin re-negociación).
- Picos de CPU en el FortiGate que coincidan con la duración de esas sesiones.
- Tráfico de salida hacia destinos no categorizados durante la sesión etiquetada.
- Cambios en la configuración del appliance que no se correspondan con ventanas de mantenimiento.
El papel del componente ARM64
FortiGate corre sobre hardware ARM en la mayoría de sus appliances. PEERSTITCH está compilado específicamente para esa arquitectura, lo cual significa que:
- No es detectable por firmas x86 genéricas.
- Si ejecutas herramientas de análisis forense pensadas para servidores Linux x86, no van a reconocer el binario ni sus syscalls.
- El tamaño compacto del payload (los analistas lo describen como menor a 100KB en memoria) facilita que se aloje en regiones de proceso sin levantar alertas de uso de memoria.
Para entornos mixtos donde conviven appliances FortiGate con servidores Linux x86 estándar, esto complica la defensa en profundidad: la única señal consistente de compromiso está en la telemetría interna del propio FortiOS.
Verificar si tu FortiGate estuvo expuesto
Antes de declarar una emergencia, lo primero es verificar si tu firmware es vulnerable. Esto lo puedes hacer en menos de un minuto vía SSH al appliance.
# Conectarse al FortiGate por SSH
ssh admin@<IP_FORTIGATE>
# Ver versión de firmware actual
get system status | grep -E "Version|Branch Point"
# Buscar específicamente la rama y versión
# Ejemplo de salida vulnerable: "Version: FortiOS v7.4.5 build2573"
# Si la versión está en la tabla de arriba Y es anterior al parche, estás expuesto
Si el comando confirma una versión vulnerable, el siguiente chequeo es mirar la tabla de procesos en busca de actividad sospechosa. PEERSTITCH no toca disco, pero sí deja huella en diag sys top.
# Listar procesos activos ordenados por CPU
diag sys top 1 50
# Lo que esperas ver: daemons FortiOS estándar
# (wad, httpsd, iked, sslvpnd, etc.)
# Lo que NO esperas ver: procesos desconocidos, nombres garbled,
# o procesos con uso de CPU elevado durante periodos de inactividad
Si la lista de procesos muestra solo daemons conocidos, tu appliance probablemente no fue comprometido. Pero si ves procesos con nombres raros o uso de CPU sospechoso, no entres en pánico todavía — puede ser un falso positivo por sesiones VPN activas.
Inspeccionar la configuración reciente
FortiOS registra los cambios de configuración con timestamp y dirección IP de origen. Si un payload modificó algo, queda en este log.
# Mostrar las últimas 50 entradas del log de configuración
execute log filter category event
execute log filter field subtype admin
execute log display
# Buscar líneas con cambios que NO reconozcas
# Cada línea trae: date, time, subtype, user, ui, action, msg
# Si hay cambios desde IPs externas a tu red administrativa, sospecha
El log de configuración es uno de los pocos lugares donde el rastro de un compromiso post-explotación es persistente incluso después de un reinicio del appliance. Si tu ventana de exposición coincide con el periodo de actividad de PEERSTITCH (enero-abril 2026, según el reporte original), revisa este log con atención.
Detectar PEERSTITCH con chequeos en vivo
Si tu versión resulta vulnerable o quieres auditar un appliance que estuvo expuesto, los siguientes comandos te dan visibilidad sobre el estado actual del sistema.
# Listar archivos en el sistema de archivos virtual de FortiOS
# PEERSTITCH no escribe, pero sí puede dejar configuraciones auxiliares
diag sys flash list
# Buscar procesos que NO sean daemons estándar de FortiOS
# Esto es manual: comparar la lista con la baseline de tu versión
fnctl ls /proc/ | grep -v -E "wad|httpsd|iked|sslvpnd|newcli|miglogd|hasync"
# Monitorear syscalls de procesos sospechosos
diag sys process trace <pid> 100
Si fnctl ls /proc/ muestra procesos que no reconoces, anota el PID y corre diag sys process trace. La traza de syscalls te dice qué archivos está tocando, qué red está usando, y si está intentando comunicarse con destinos externos.
Activar telemetría detallada
Para los appliances en producción que no puedes reiniciar de inmediato, lo mejor es activar logging detallado y dejarlo correr mientras planificas el mantenimiento.
# Aumentar nivel de log para eventos de proceso
config log setting
set fwpolicy-implicit-log enable
set local-in-allow enable
set local-in-deny-unicast enable
end
# Activar captura de paquetes para VPN etiquetada
config vpn ssl settings
set tunnel-ip-pools <tu-pool>
set dns-server1 <tus-dns>
set force-two-factor-auth enable
end
Estos cambios generan más volumen de logs, pero te dan visibilidad granular sobre qué sesiones VPN están activas, qué etiquetado tienen, y cuánto tráfico cursa cada una. Útil para detectar patrones anómalos sin necesidad de comprometer el appliance.
Qué hacer si confirmaste compromiso
Si los chequeos anteriores sugieren compromiso, no te limites a actualizar el firmware. PEERSTITCH es residente en memoria, así que un simple reboot lo elimina — pero solo si el atacante no dejó persistencia en scripts de inicio o configuraciones modificadas.
- Snapshot de la configuración actual antes de tocar nada. Necesitas el estado exacto para análisis forense posterior.
- Exportar logs completos del periodo de exposición. Aunque PEERSTITCH es memory-resident, los logs de VPN y configuración conservan el rastro de la actividad.
- Reiniciar el appliance en una ventana controlada. Esto limpia la memoria pero NO restaura configuraciones maliciosas.
- Restaurar configuración desde backup limpio previo al periodo de exposición. Si tu backup más antiguo es de marzo de 2026 y la exposición fue enero, restauras a ese punto.
- Rotar todas las credenciales administrativas y certificados VPN. Si el atacante tuvo acceso al shell, asume que pudo extraer claves.
- Auditar sesiones VPN activas y forzar re-negociación. Esto invalida túneles potencialmente comprometidos.
Después del incidente
Si confirmaste compromiso y completaste los pasos anteriores, todavía queda trabajo por hacer. Comparte indicadores de compromiso con tu equipo y, si aplica, con la comunidad:
- Hash SHA256 de cualquier binario encontrado (aunque sea efímero, documenta el snapshot de memoria si lo capturste).
- Direcciones IP externas contactadas durante el periodo sospechoso.
- Cambios de configuración no autorizados.
- Patrones de uso de CPU o memoria que te alertaron.
Para la comunidad de sysadmins hispanos, canales como underc0de o Échele un vistazo al bug en foros específicos de Fortinet son útiles para validar IoCs contra reportes de otros afectados. Si encontraste algo no documentado, compartirlo ayuda al resto.
Cómo prevenir este tipo de ataques en el futuro
PEERSTITCH explota una vulnerabilidad que ya fue parcheada, pero el patrón de ataque —path traversal en CLI + bypass de controles VPN etiquetados— puede repetirse con variantes. Las medidas defensivas que aplican para este caso y casos similares:
- Habilitar firmware automatic update en appliances no-críticos. Para FortiGate en producción con ventanas de mantenimiento cortas, programa actualizaciones mensuales.
- Reducir superficie de exposición: deshabilitar acceso CLI administrativo desde interfaces WAN. Solo permitir SSH a FortiOS desde la red interna o vía VPN administrativa separada.
- Segmentar la red administrativa: la VLAN de management nunca debe coexistir con la VLAN de usuarios en el mismo dominio de broadcast.
- Monitorear cambios de configuración con alertas en tiempo real a canales Slack/Teams/email. Si alguien cambia la config sin ticket abierto, quieres saberlo en minutos, no en días.
- Implementar two-factor para acceso CLI: FortiOS soporta TOTP para administradores. Si un atacante compromete una contraseña, el segundo factor lo detiene.
Hardening específico para FortiOS
Además de las medidas generales, FortiOS tiene opciones de hardening específicas que mitigan el patrón de PEERSTITCH:
# Limitar acceso CLI a una lista de IPs administrativas
config system admin
edit "admin"
set trusthost1 <IP_RED_INTERNA>/<MASCARA>
set trusthost2 <IP_VPN_MGMT>/<MASCARA>
next
end
# Deshabilitar acceso HTTP/HTTPS de administración desde WAN
config system interface
edit "wan1"
set allowaccess ping
next
end
# Activar detección de anomalías en sesiones VPN
config system session-helper
edit 1
set name pptp
set protocol 6
next
end
Estas configuraciones son baseline razonable para cualquier FortiGate en producción. Si las tienes implementadas, la superficie de ataque para PEERSTITCH y similares se reduce drásticamente — el atacante necesitaría comprometer primero tu VPN administrativa para llegar al CLI.
Preguntas frecuentes
¿FortiOS 7.6 también está afectado por CVE-2025-61624?
No, la rama 7.6 salió después del parche de abril de 2026, así que trae la corrección aplicada de fábrica. Si estás en 7.6.x, no aplica este CVE. Si estás en 7.4.x o 7.2.x, verifica el build exacto contra la tabla de versiones afectadas.
¿Cómo sé si PEERSTITCH estuvo activo en mi appliance aunque ya haya reiniciado?
Los logs de configuración y de sesión VPN son persistentes aunque el malware fuera memory-resident. Busca en el periodo enero-abril 2026 cambios de config desde IPs inesperadas, sesiones VPN con duración superior a 48 horas, y picos de CPU correlacionados. Si todo eso está limpio, el reinicio probablemente fue suficiente.
¿Puedo detectar PEERSTITCH con FortiAnalyzer?
Parcialmente. FortiAnalyzer correlaciona logs de firewall y VPN de múltiples appliances, pero los indicadores sutiles de PEERSTITCH (CPU elevada, procesos anómalos) requieren visibilidad a nivel de proceso del FortiGate, que FortiAnalyzer no captura por defecto. Combina FortiAnalyzer con revisión manual de diag sys top en cada appliance expuesto.
¿Qué hago si mi FortiGate está en una versión de firmware que ya no recibe parches?
Si corres FortiOS 7.0.x o anterior al ciclo de soporte actual, migrar a 7.4.x o 7.6.x es la única defensa real. Fortinet publica el ciclo de soporte por producto en su portal de soporte; versiones EOL no van a recibir el parche para nuevos CVEs. Planifica la migración antes de que tu próximo parche crítico no llegue.
¿Es seguro seguir usando el appliance mientras investigo?
Sí, pero con precauciones. Segmenta la red administrativa, deshabilita accesos WAN al CLI, y activa logging detallado. No reinicies hasta haber capturado logs y configuración para análisis forense — el reinicio borra la huella en memoria del malware.
