FlawOpen

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

● CVE-2026-102255 · CVSS 10.0[1] · Crítica
Pesquisa · FlawOpen

CVE-2026-102255: SSRF no SonicWall SMA1000 WorkPlace

CVE-2026-102255 é uma SSRF pré-autenticação com CVSS 10,0 no WorkPlace do SonicWall SMA1000. Em 12 de outubro, o MS-ISAC informou que não havia, naquele momento, relatos de exploração ativa das quatro falhas do boletim. Também descreveu um caminho condicional da SSRF até execução remota de código caso ela seja encadeada à CVE-2026-102256, uma falha distinta de injeção de comandos que exige administrador autenticado. O boletim não explica a cadeia nem como a autenticação seria obtida; trata-se de uma avaliação de risco, não de uma cadeia demonstrada. Tentativas compatíveis com a CVE-2026-102255 foram observadas em honeypots em 9 de outubro, mas não houve confirmação de comprometimento. Atualize para o hotfix corrigido.[1], [2], [3], [4], [5], [6]

💡 Explicação em Linguagem Simples (ELI5)

Imagine o appliance como uma recepcionista que leva recados entre salas. A falha permite que um desconhecido peça a ela para entregar um recado em salas que deveriam exigir verificação de identidade. A SonicWall corrigiu esse caminho; o aviso não revela a rota interna nem o patch de código-fonte.[1]

Conceitos Centrais e Termos

Falsificação de solicitação do lado do servidor (SSRF)
Um servidor é induzido a fazer uma solicitação escolhida por um usuário não confiável. A SonicWall diz que o appliance pode solicitar em nome de quem chama e alcançar funções internas.[1], [3]

Mapeamentos de frameworks

  • Referência CWE para a fraqueza descrita neste guia: CWE-918

Análise de Causa Raiz

A SonicWall descreve um caminho alternativo de acesso não intencional na interface Appliance WorkPlace do SMA1000. Um invasor remoto sem autenticação pode fazer o appliance emitir solicitações em seu nome, alcançar funções internas e executar operações não autorizadas. O aviso da SonicWall não publica um diff do firmware. O BleepingComputer cita o pesquisador Ryan Dewhurst ao relatar tentativas em honeypots que usaram OPTIONS contra a interface Extraweb do WorkPlace e visaram o serviço CouchDB local. A reportagem não confirma que alguma tentativa tenha comprometido um sistema; este artigo trata o caso como um relato atribuído de tentativas, não como exploração confirmada. O payload e as credenciais relatados não são reproduzidos. A SonicWall atribui CVSS 10,0 Crítico; o registro CVE lista CWE-918. O fornecedor afirma que as vulnerabilidades de outubro não se relacionam a outras falhas SonicWall. Não combine esta CVE com divulgações anteriores do SMA1000 em uma cadeia de exploração. O aviso da SonicWall de 6 de outubro dizia que, naquele momento, não havia evidência de exploração ativa. Em 9 de outubro, o BleepingComputer informou que o pesquisador Ryan Dewhurst relatou tentativas compatíveis com esta CVE detectadas por honeypots da Previdian; não foi estabelecido se alguma tentativa comprometeu um sistema. Atualização de 12 de outubro de 2026: o MS-ISAC diz que não havia, naquele momento, relatos de exploração ativa das quatro vulnerabilidades do boletim. Isso é compatível com o relato de 9 de outubro sobre tentativas em honeypots: tentativas não comprovam exploração bem-sucedida, e o MS-ISAC não identifica vítimas. O mesmo aviso avalia que a SSRF pré-autenticação CVE-2026-102255 poderia ser encadeada à CVE-2026-102256, uma falha distinta de injeção de comandos do sistema operacional que exige administrador autenticado, resultando em execução remota de código e comprometimento total. O aviso não explica como o requisito de autenticação seria satisfeito, não descreve uma sequência demonstrada e não relata essa cadeia em atividade observada. Trate isso como avaliação condicional de risco governamental, não como cadeia de exploração confirmada ou reproduzível. A SonicWall lista as builds corrigidas 12.4.3-03670+ e 12.5.0-03082+; aplique o patch independentemente de a cadeia ter sido demonstrada.[1], [2], [3], [4], [6]

Fluxo de Ataque Passo a Paso

Passo 1

Solicitação sem autenticação chega ao WorkPlace

A SonicWall localiza a falha pré-autenticação no WorkPlace do SMA1000. O BleepingComputer relata tentativas OPTIONS em honeypots contra a interface Extraweb do WorkPlace; isso não confirma um comprometimento bem-sucedido.[1], [4]

Passo 2

O appliance age em nome de quem chamou

O fornecedor diz que o appliance pode alcançar funções internas e executar operações não autorizadas. Segundo o BleepingComputer, as tentativas visavam o CouchDB local, mas o pesquisador não havia confirmado um comprometimento bem-sucedido.[1], [4]

Passo 3

Resposta operacional: aplique o hotfix e investigue

A SonicWall identifica como corrigidas as builds 12.4.3-03670+ e 12.5.0-03082+. Se a aplicação do hotfix atrasar, restrinja a exposição do WorkPlace como contenção temporária, preserve os logs e investigue. As tentativas relatadas não comprovam um comprometimento bem-sucedido.[1], [4], [5]

Código-Fonte: Vulnerável vs. Seguro

O código-fonte do firmware e o diff do patch não são públicos. Este exemplo genérico em Python limita quem chama a um identificador fixo de serviço; a aplicação controla origem e caminho e desativa redirecionamentos. Não é código SonicWall, não reproduz a CVE nem é uma defesa completa contra SSRF. Aplique o hotfix da plataforma SonicWall.[1]

Trecho de origem: Generic SSRF defense illustration; not SonicWall source

IMPLEMENTAÇÃO VULNERÁVEL
# Ilustração genérica; não é código SonicWall nem reprodução da falha.
def fetch_health(user_supplied_url, session):
    return session.get(user_supplied_url, timeout=3)
PATCH SEGURO E ROBUSTO
# Padrão genérico de defesa contra SSRF; não é código SonicWall nem patch 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")
    # A entrada do usuário seleciona uma capacidade fixa, nunca uma URL ou host.
    return session.get(urljoin(base, path), timeout=(2, 3), allow_redirects=False)

Lista de Verificação de Segurança para Engenharia

Fontes