CVE-2018-7841
Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.
The impacted product is end-of-life and should be disconnected if still in use.
Resumen
Falha crítica de injeção não autenticada no U.motion Builder da Schneider Electric, produto de automação residencial/predial. O NVD e o catálogo KEV da CISA classificam como SQL Injection (CWE-89), mas o pesquisador que descobriu e divulgou a falha (RCE Security) documenta e demonstra Command Injection (CWE-78) via shell do sistema operacional — não SQL. O produto está descontinuado (end-of-life) desde antes da divulgação pública; não existe patch e o fornecedor recomenda apenas remover o software.
Detalle técnico
O script track_import_export.php, dentro do módulo de relatórios (modules/reporting/), recebe o parâmetro object_id via GET/POST e o utiliza sem sanitização em uma chamada exec() do PHP, que por sua vez invoca um comando de shell no sistema operacional subjacente. O pesquisador demonstrou isso injetando um comando entre crases (`sleep 10`) dentro do valor de object_id, gerando um delay de 10 segundos na resposta — técnica clássica de confirmação de command injection por timing, sem depender de saída visível.
A classificação oficial como SQL Injection (CWE-89), usada tanto pela NVD quanto pela CISA no KEV, contradiz a análise técnica publicada no Full Disclosure e no advisory original do pesquisador, que descreve e demonstra explicitamente OS Command Injection (CWE-78). Essa divergência é relevante: um analista buscando por padrões de SQLi em WAF ou IDS vai monitorar a assinatura errada. O mecanismo real é injeção de comandos de shell, não manipulação de consultas SQL.
A falha é descrita como bypass de uma correção anterior (CVE-2018-7765) aplicada ao mesmo ponto de entrada — ou seja, o fornecedor já havia tentado sanitizar esse parâmetro antes, e a correção foi insuficiente ou incompleta, permitindo reintrodução do mesmo tipo de vetor de ataque.
Cómo se explota
O vetor é uma requisição HTTP POST para /smartdomuspad/modules/reporting/track_import_export.php, com o parâmetro object_id manipulado dentro do corpo application/x-www-form-urlencoded (junto com op, language e interval). O PoC publicado inclui um cookie PHPSESSID, o que sugere que a requisição precisa de uma sessão de aplicação válida — mas não necessariamente de credenciais de usuário autenticado; o advisory do pesquisador classifica a falha como 'unauthenticated', indicando que a sessão pode ser trivialmente obtida sem login real. O único pré-requisito de fato é acesso de rede à interface web do U.motion Builder.
A exploração não exige interação do usuário, condições de configuração especiais nem privilégios elevados — reflete o vetor CVSS AV:N/AC:L/PR:N/UI:N. Um atacante com acesso à porta/serviço web do produto injeta comandos arbitrários de shell através do object_id, obtendo execução de código no contexto do processo web, o que na prática costuma significar controle total do host (dependendo dos privilégios do processo PHP/servidor web).
A presença no catálogo KEV da CISA confirma exploração ativa observada. Não há detalhes públicos sobre campanhas específicas, mas a existência de PoC público, template Nuclei e EPSS elevado (0.72) indicam alvo atrativo para scanners automatizados e exploração oportunista contra qualquer instância exposta à internet ou a redes OT/prediais acessíveis.
Versiones
Cómo protegerse
Não existe correção. O fornecedor confirmou que o produto foi retirado de linha e removido do portal de downloads pouco depois da notificação da falha; a resposta oficial da Schneider Electric (via SEVD-2019-071-02) e a recomendação da CISA no KEV são a mesma: desinstalar/remover a instalação. Atualizar versão não é opção — não há versão corrigida.
Como controle compensatório, se a remoção imediata não for viável, isolar completamente o host de qualquer rede acessível (segmentação de rede, sem exposição à internet, sem acesso direto de redes de usuário), e desativar ou bloquear no nível de firewall/proxy o acesso ao endpoint /smartdomuspad/modules/reporting/track_import_export.php. Isso reduz superfície mas não elimina o risco caso um atacante já tenha pé na rede interna.
Não contar com WAFs configurados para bloquear padrões de SQL Injection como mitigação — a falha real é command injection via shell, e assinaturas de SQLi não vão capturar o vetor (crases, pipes, $() etc). Regras de WAF devem ser voltadas a metacaracteres de shell no parâmetro object_id, mas isso é paliativo frágil frente a um produto sem suporte e sem análise de código disponível.
Cómo detectar
Nos logs do servidor web, procurar requisições POST para o caminho /smartdomuspad/modules/reporting/track_import_export.php contendo, no parâmetro object_id, metacaracteres de shell — crases (`), pipes (|), ponto-e-vírgula (;), $() ou palavras-chave de comando como sleep, cat, wget, curl. Requisições com tempos de resposta anormalmente longos (padrão de sleep N para confirmação blind) também são indício de tentativa de exploração.
Como o produto é EOL e sem instrumentação de segurança nativa, não há sinal telemetria do próprio fornecedor; a detecção depende inteiramente de logging externo (proxy, firewall de aplicação, captura de tráfego) posicionado na frente do serviço.