FlawOpen

flawopen.com/Teardowns/cve-2026-102255-sonicwall-sma1000-workplace-ssrf

● CVE-2026-102255 · CVSS 10.0[1] · Crítica
Investigación · FlawOpen

CVE-2026-102255: SSRF en SonicWall SMA1000 WorkPlace

CVE-2026-102255 es una SSRF previa a la autenticación con CVSS 10,0 en WorkPlace de SonicWall SMA1000. El 12 de octubre, MS-ISAC dijo que entonces no había informes de explotación activa de las cuatro vulnerabilidades del aviso. También describió una ruta condicional desde esta SSRF hasta la ejecución remota de código si se encadena con CVE-2026-102256, un fallo distinto de inyección de comandos que requiere una cuenta de administrador autenticada. El aviso no detalla la cadena ni cómo se cumpliría la autenticación; es una evaluación de riesgo, no una cadena demostrada. El 9 de octubre se informaron intentos en honeypots compatibles con CVE-2026-102255, pero no se confirmó ningún compromiso. Actualice al hotfix corregido.[1], [2], [3], [4], [5], [6]

💡 Explicación en Lenguaje Sencillo (ELI5)

Imagina el dispositivo como una persona de recepción que lleva mensajes entre salas. El fallo permite que un desconocido le pida entregar un mensaje en salas que deberían exigir una verificación de identidad. SonicWall corrigió esa vía; el aviso no revela la ruta interna ni el parche de código fuente.[1]

Conceptos Clave y Términos

Falsificación de solicitudes del lado del servidor (SSRF)
Se engaña a un servidor para que realice una solicitud elegida por un usuario no confiable. SonicWall indica que el dispositivo puede solicitar en nombre del atacante y alcanzar funciones internas.[1], [3]

Mapeos de marcos

  • Referencia CWE para la debilidad descrita en esta guía: CWE-918

Análisis de Causa Raíz

SonicWall describe una vía de acceso alternativa no prevista en Appliance WorkPlace de SMA1000. Un atacante remoto sin autenticar puede hacer que el dispositivo emita solicitudes en su nombre, alcance funciones internas y realice operaciones no autorizadas. El aviso de SonicWall no publica un diff del firmware. BleepingComputer cita al investigador Ryan Dewhurst al informar de intentos en honeypots que usaron OPTIONS contra la interfaz Extraweb de WorkPlace y se dirigieron al servicio CouchDB local. El reportaje no demuestra que algún intento comprometiera un sistema; este artículo lo presenta como un informe atribuido de intentos, no como explotación confirmada. No se reproducen el payload ni las credenciales mencionados. SonicWall asigna CVSS 10,0 Crítica; el registro CVE indica CWE-918. El fabricante afirma que las vulnerabilidades de octubre no están relacionadas con otras fallas SonicWall. No unas esta CVE con divulgaciones anteriores de SMA1000 en una cadena de explotación. El aviso de SonicWall del 6 de octubre decía que entonces no había pruebas de explotación activa. El 9 de octubre, BleepingComputer informó que el investigador Ryan Dewhurst señaló que honeypots de Previdian detectaron intentos compatibles con esta CVE; no se había establecido si alguno comprometió un sistema. Actualización del 12 de octubre de 2026: MS-ISAC indica que entonces no había informes de explotación activa de las cuatro vulnerabilidades del aviso. Esto es compatible con el informe del 9 de octubre sobre intentos en honeypots: los intentos no demuestran una explotación exitosa y MS-ISAC no identifica víctimas. El mismo aviso evalúa que la SSRF previa a la autenticación CVE-2026-102255 podría encadenarse con CVE-2026-102256, un fallo distinto de inyección de comandos del sistema operativo que requiere un administrador autenticado, para llegar a ejecución remota de código y comprometer por completo el sistema. No explica cómo se cumpliría el requisito de autenticación, no identifica una secuencia demostrada ni informa de esa cadena en actividad observada. Trátelo como una evaluación condicional de riesgo gubernamental, no como una cadena de explotación confirmada o reproducible. SonicWall indica que las compilaciones corregidas son 12.4.3-03670+ y 12.5.0-03082+; aplique la actualización aunque la cadena no se haya demostrado.[1], [2], [3], [4], [6]

Flujo de Ataque Paso a Paso

Paso 1

Una solicitud sin autenticar llega a WorkPlace

SonicWall sitúa el fallo previo a la autenticación en WorkPlace de SMA1000. BleepingComputer informa de intentos OPTIONS observados por honeypots contra la interfaz Extraweb de WorkPlace; esto no confirma un compromiso exitoso.[1], [4]

Paso 2

El dispositivo actúa en nombre del atacante

El fabricante afirma que puede alcanzar funciones internas y realizar operaciones no autorizadas. BleepingComputer informa que los intentos apuntaban al CouchDB local, pero el investigador no había confirmado un compromiso exitoso.[1], [4]

Paso 3

Respuesta operativa: aplique el hotfix e investigue

SonicWall identifica como corregidas las compilaciones 12.4.3-03670+ y 12.5.0-03082+. Si se retrasa la aplicación del hotfix, restrinja la exposición de WorkPlace como contención temporal, conserve los registros e investigue. Los intentos informados no demuestran un compromiso exitoso.[1], [4], [5]

Código Fuente: Vulnerable vs. Seguro

El código fuente del firmware y el diff del parche no son públicos. Este ejemplo genérico en Python limita al usuario a un identificador de servicio fijo; la aplicación controla origen y ruta y desactiva redirecciones. No es código SonicWall, no reproduce la CVE ni es una defensa SSRF completa. Aplica el hotfix de plataforma de SonicWall.[1]

Fragmento de origen: Generic SSRF defense illustration; not SonicWall source

IMPLEMENTACIÓN VULNERABLE
# Ilustración genérica; no es código de SonicWall ni reproduce la vulnerabilidad.
def fetch_health(user_supplied_url, session):
    return session.get(user_supplied_url, timeout=3)
PARCHE SEGURO Y ROBUSTO
# Patrón genérico de defensa contra SSRF; no es código de SonicWall ni un parche completo.
from urllib.parse import urljoin

SERVICE_PATHS = {"status": "/health"}
BASE_URLS = {"status": "https://status.example.internal"}

def fetch_health(service_id, session):
    base = BASE_URLS.get(service_id)
    path = SERVICE_PATHS.get(service_id)
    if base is None or path is None:
        raise ValueError("unknown service")
    # La entrada del usuario selecciona una capacidad fija, nunca una URL ni un host.
    return session.get(urljoin(base, path), timeout=(2, 3), allow_redirects=False)

Lista de Verificación de Seguridad para Ingeniería

Fuentes