← voltar
CVE-2021-26828highsob ataqueCWE-434

CVE-2021-26828

83Vexday Risk Score

Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.

ssvc Actcvss 8.8epss 39%
da publicação à arma0 dias
Publicada no NVD11 de jun.
1ª PoC31 de mar.
CISA KEV+1636d
probabilidade de exploração
39%top 2% das CVEs
exploração observada
simCISA + VulnCheck
5 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2025-12-24

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Resumo

Falha de upload irrestrito de arquivo (CWE-434) no ScadaBR, um SCADA web baseado em Java popular no Brasil, que permite a um usuário autenticado com qualquer privilégio enviar um arquivo .jsp através do endpoint view_edit.shtm e executá-lo no contexto do servidor de aplicação — resultando em execução remota de código completa sobre o host que roda o SCADA. Importa porque o projeto ScadaBR original foi descontinuado pelos desenvolvedores brasileiros; não há patch oficial para o ScadaBR propriamente, só para o fork que o sucedeu (Scada-LTS), o que deixa instalações legadas permanentemente vulneráveis a menos que sejam migradas ou isoladas.

Detalhamento técnico

A falha está no endpoint view_edit.shtm, usado pela interface web do ScadaBR para upload de imagens/gráficos associados às telas de supervisão (views) do SCADA. O componente de upload não valida adequadamente extensão nem conteúdo do arquivo enviado — aceita qualquer payload, incluindo arquivos .jsp — e grava o resultado em um diretório servido pelo container de aplicação Java (tipicamente Tomcat) subjacente ao ScadaBR. Isso é um Unrestricted Upload of File with Dangerous Type (CWE-434) clássico: o atacante controla tanto o conteúdo quanto, na prática, o caminho onde o arquivo fica acessível via HTTP.

Como o arquivo gravado é um JSP dentro de uma árvore de webapp Java, basta uma requisição HTTP subsequente para o caminho onde ele foi salvo para o container compilar e executar o código a cada acesso, com os privilégios do processo do servidor de aplicação — não do usuário ScadaBR que fez o upload. Isso eleva uma falha de upload para RCE irrestrita no host.

O CVSS 3.1 (8.8, AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) reflete que a exploração não exige interação do usuário nem condições de rede exóticas, mas exige privilégio baixo (PR:L) — ou seja, autenticação válida na aplicação, mesmo que de conta com poucos direitos. Não há indicação nas fontes analisadas de que a falha seja explorável sem autenticação.

O fork que deu sequência ao projeto, Scada-LTS, tratou o mesmo problema estrutural no seu próprio código de upload (ViewEditController, ZIPProjectManager, ViewGraphicLoader) restringindo os tipos aceitos a bitmap/SVG e adicionando validação de conteúdo — não apenas de extensão — além de mitigação para SSRF relacionada ao mesmo fluxo de importação de projeto.

Como é explorada

O vetor é uma requisição de upload de arquivo autenticada contra view_edit.shtm, substituindo o payload de imagem esperado por um arquivo .jsp com código Java arbitrário, seguida de uma requisição HTTP ao caminho onde esse arquivo foi persistido para forçar sua compilação e execução pelo container. Existe PoC pública documentando o fluxo (repositório hevox/CVE-2021-26828_ScadaBR_RCE, referenciado pelo próprio pesquisador que reportou a falha no fórum oficial do ScadaBR), e a CVE está no catálogo KEV da CISA, o que indica exploração confirmada em ambiente real — não apenas teórica.

O único pré-requisito relevante é uma sessão autenticada no ScadaBR; as fontes não indicam necessidade de privilégio administrativo, apenas de uma conta válida (PR:L no vetor CVSS). Em ambientes SCADA, contas de operador com credenciais fracas ou padrão são historicamente comuns, o que reduz na prática a barreira de autenticação — mas isso não está confirmado especificamente para o ScadaBR nas fontes consultadas, é um fator de risco geral de ICS, não uma característica documentada desta CVE.

O resultado final é execução de código arbitrário com os privilégios do processo do servidor de aplicação Java que hospeda o ScadaBR — em muitas instalações industriais, esse host tem acesso direto ou indireto a equipamentos de controle (PLCs, RTUs), então RCE no SCADA pode significar pivô para a rede de operação, não só comprometimento do servidor web.

Versões

Afetadas
ScadaBR até 0.9.1 (build Linux) e até 1.12.4 (build Windows), conforme a descrição oficial da CVE.
Corrigidas em
Não há versão corrigida do ScadaBR propriamente (projeto descontinuado). A correção do mesmo padrão de falha foi aplicada no fork Scada-LTS via pull request #2174, incorporada no milestone 2.7.1; as fontes não indicam número de release específico do Scada-LTS após esse merge.

Como se proteger

Não existe versão corrigida do ScadaBR original: o projeto foi descontinuado pelos desenvolvedores brasileiros após a versão 1.1, segundo relato dos próprios mantenedores no fórum oficial. A correção conhecida foi implementada no fork que deu continuidade ao projeto, Scada-LTS (pull request #2174, milestone 2.7.1), que passou a filtrar tipos de arquivo permitidos em upload (restringindo a bitmap e SVG) e validar conteúdo, não apenas extensão. Quem roda ScadaBR e precisa de correção oficial precisa migrar para o Scada-LTS na versão que incorpora essa PR ou posterior — as fontes não especificam um número de versão de release do Scada-LTS que já contenha a correção fora do milestone 2.7.1.

Se a migração não for viável no curto prazo, o paliativo real é restringir o acesso à interface web do ScadaBR (view_edit.shtm e demais endpoints administrativos) a rede de gerência isolada, sem exposição direta à internet ou a redes de usuário geral, e revisar/eliminar contas com credenciais padrão ou fracas — já que a exploração exige apenas autenticação de baixo privilégio. Bloquear upload de arquivos com extensão .jsp via proxy reverso ou WAF na frente da aplicação reduz a superfície, mas é um controle compensatório, não uma correção: qualquer falha de normalização de path ou de extensão dupla pode contornar filtro superficial.

O que não funciona: apenas trocar senhas de administrador não elimina o risco, porque a falha não exige privilégio administrativo — qualquer conta autenticada válida basta segundo o vetor CVSS (PR:L). Também não há indicação de que atualizar o ScadaBR para uma versão mais recente do próprio ScadaBR resolva o problema, porque o projeto não recebeu mais releases após a descontinuação relatada pelos mantenedores.

Como detectar

Nos logs do servidor web/aplicação, procurar requisições POST para view_edit.shtm com corpo multipart contendo arquivos com extensão .jsp (ou variações de extensão/duplo encoding) em vez dos tipos de imagem esperados. No sistema de arquivos, procurar arquivos .jsp recém-criados dentro dos diretórios de upload/gráficos da webapp do ScadaBR, especialmente fora do padrão de nomes/pastas usados por uploads legítimos de imagem. Não há assinatura de exploração publicamente confirmada além da PoC referenciada (hevox/CVE-2021-26828_ScadaBR_RCE); ambientes que não retêm logs de upload ou não têm monitoração de integridade de arquivos na árvore da webapp não terão sinal confiável de tentativa passada.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
OpenPLC ScadaBR through 0.9.1 on Linux and through 1.12.4 on Windows allows remote authenticated users to upload and execute arbitrary JSP files via view_edit.shtm.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Produtos afetados
n/a · n/a
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.