CVE-2016-2388
Prioritize patching. It under exploitation confirmed by CISA and has a public proof of concept.
Apply updates per vendor instructions.
Summary
Falha de divulgação de informação (CWE-200) na configuração da Universal Worklist (UWL) do SAP NetWeaver AS JAVA que permite a um atacante não autenticado, via requisição HTTP manipulada contra componentes Web Dynpro do UWL, obter uma lista de usuários cadastrados no sistema SAP. Por si só o impacto é baixo — só nomes de usuário — mas a CVE ganhou peso porque compõe uma cadeia de ataque documentada publicamente junto com uma SQL injection (CVE-2016-2386) e um problema de criptografia (CVE-2016-1910) que, juntas, permitem extrair credenciais de administrador em texto claro. Está no catálogo KEV da CISA desde 2022, confirmando exploração ativa.
Technical detail
O problema está nos componentes Web Dynpro relacionados à configuração da Universal Worklist do NetWeaver AS JAVA — a pesquisa da ERPScan identificou páginas como .../webdynpro/resources/sap.com/.../JWFTestAddAssignees# e, em variantes posteriores, .../tc~rtc~coll.appl.rtc~wd_chat/Chat# e .../Messages#. Essas telas expõem um seletor de usuários (funcionalidade de 'atribuir tarefa' ou 'adicionar participante a chat') que não valida se o solicitante está autenticado antes de retornar a lista de contas do UME (User Management Engine) do sistema.
O mecanismo de exploração é simples: a aplicação Web Dynpro renderiza um botão 'Choose', que abre uma janela de busca de usuários; ao acionar 'Search' sem qualquer sessão válida, o backend devolve os logins cadastrados. Não há validação de autorização (PR:N no vetor CVSS) nem interação de terceiros — o próprio atacante dispara a requisição.
O valor real da falha aparece em combinação: com os nomes de usuário em mãos, um atacante pode alimentar a SQL injection time-based da CVE-2016-2386 (no serviço UDDISecurityService) filtrando por colunas do UME associadas a um login específico (ex. 'Administrator' ou 'j2ee_admin'), extraindo o hash de senha armazenado. A CVE-2016-1910, um problema no esquema de codificação/hashing usado pelo SAP, permite então recuperar a senha em texto claro a partir desse hash. CVE-2016-2388 é, portanto, o passo de reconhecimento que viabiliza a cadeia completa.
How it’s exploited
Pré-requisito de rede: acesso HTTP ao endpoint do NetWeaver AS JAVA na porta do dispatcher (tipicamente 50000/50001), sem necessidade de credenciais válidas — a exploração é totalmente não autenticada e classificada pela própria ERPScan como 'Remotely Exploitable: Yes / Locally Exploitable: No'. A complexidade é baixa: basta acessar a URL do componente Web Dynpro vulnerável e disparar a busca de usuários pelo componente exposto (o PoC público em exploit-db/39841 descreve os cliques na interface; a versão em exploit-db/43495 documenta as URLs alternativas usadas em campanhas mais recentes).
Sozinha, a falha entrega apenas enumeração de contas — útil para reconhecimento, ataques de força bruta direcionados e engenharia social, mas sem CVSS de integridade ou disponibilidade. O cenário de risco real documentado publicamente é o encadeamento com CVE-2016-2386 (SQLi anônima no UDDISecurityService) e CVE-2016-1910 (falha criptográfica), que juntas permitem a um atacante remoto e não autenticado obter a senha em texto claro de contas administrativas do SAP, incluindo o usuário Administrator/j2ee_admin.
A presença no catálogo KEV da CISA (adicionado em 2022, com prazo de correção em 30/06/2022) confirma exploração observada em ambientes reais, não apenas prova de conceito de laboratório.
Versions
How to protect
O fornecedor publicou a SAP Security Note 2256846 como correção oficial; a mitigação primária é aplicar essa nota via SAP Support Portal nos sistemas NetWeaver AS JAVA afetados. Não há, nas fontes disponíveis, um número de patch level ou Support Package específico documentado publicamente além da referência à nota — trate a aplicação da nota SAP como a ação de correção definitiva e valide a versão exata de patch com o próprio SAP Note, que exige acesso a uma conta S-User válida no SAP Support Portal.
Como controle compensatório quando a aplicação imediata da nota não é possível: restringir o acesso de rede aos endpoints Web Dynpro relacionados à Universal Worklist e aos componentes de chat colaborativo (rtc.appl.rtc~wd_chat) apenas a redes internas confiáveis, e revisar a configuração de autenticação anônima nos componentes ICM/Web Dynpro do NetWeaver — o UME não deveria permitir consultas de usuário sem sessão autenticada. Um WAF ou proxy reverso na frente do NetWeaver pode bloquear requisições não autenticadas a esses caminhos específicos, mas isso é paliativo, não correção — a lógica de autorização ausente permanece no componente.
O catálogo KEV da CISA lista como ação recomendada apenas 'aplicar atualizações conforme instruções do fornecedor', sem workaround alternativo detalhado. Não confie apenas em bloqueio de URL por assinatura de WAF genérico: as variantes de PoC usam caminhos Web Dynpro diferentes (JWFTestAddAssignees, wd_chat/Chat, wd_chat/Messages), e outros componentes podem expor o mesmo padrão de falha sem terem sido catalogados.
How to detect
Monitorar logs de acesso HTTP do NetWeaver AS JAVA por requisições não autenticadas (sem cookie de sessão SAP válido) a caminhos Web Dynpro contendo 'JWFTestAddAssignees', 'wd_chat/Chat' ou 'wd_chat/Messages', especialmente seguidas de chamadas de busca/listagem de usuários pouco depois da carga inicial da página — padrão que indica uso do fluxo 'Choose' → 'Search' descrito nos PoCs públicos. Se o mesmo IP também gerar requisições SOAP para /UDDISecurityService/UDDISecurityImplBean com payloads longos ou tempos de resposta anormalmente altos (indicativo de SQLi time-based da CVE-2016-2386), trate como indício de tentativa de exploração encadeada. Não há um IOC de assinatura única confiável — os endpoints variam entre versões e componentes instalados, então a ausência desses padrões específicos não garante que o sistema não foi sondado por outra variante do mesmo componente Web Dynpro.