← back
CVE-2016-2386criticalunder attackCWE-89

CVE-2016-2386

100Vexday Risk Score

Prioritize patching. It under exploitation confirmed by CISA and has a public proof of concept.

ssvc Actcvss 9.8epss 71%
from disclosure to weapon93 days
Published on NVDFeb 16
1st PoC+93d
CISA KEV+2305d
exploitation probability
71%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
8 public exploit(s)
Action required by CISAfederal deadline: 2022-06-30

Apply updates per vendor instructions.

Summary

Injeção de SQL não autenticada no serviço UDDI do SAP NetWeaver AS Java (7.1 a 7.5, conforme testado pela ERPScan; SAP cita especificamente a versão 7.40), explorável via SOAP sem qualquer credencial. É usada na prática como primeiro elo de uma cadeia que extrai hashes de senha e, combinada com outras duas CVEs do mesmo pesquisador, chega a comprometer contas administrativas do NetWeaver — por isso está no catálogo KEV da CISA.

Technical detail

A falha (CWE-89) está no endpoint SOAP /UDDISecurityService/UDDISecurityImplBean, especificamente na operação deletePermissionById. O parâmetro permissionId enviado no corpo XML é concatenado diretamente em uma consulta SQL sem parametrização nem sanitização, permitindo que o atacante controle totalmente a cláusula WHERE da query.

A injeção é do tipo blind (booleana e baseada em tempo) — não há saída direta dos dados na resposta HTTP. O PoC público usa subconsultas com COUNT(*) contra tabelas internas do NetWeaver (UME_STRINGS, J2EE_CONFIGENTRY, BC_UDV3_EL8EM_KEY, T_CHUNK, T_DOMAIN, entre outras) para inferir verdadeiro/falso pela resposta do servidor ou pelo tempo de resposta. A tabela UME_STRINGS é o alvo de maior interesse porque armazena, entre outros valores, o hash da senha de usuários administrativos indexado por um PID no formato PRIVATE_DATASOURCE.un:.

O CVSS 9.8 divulgado pela NVD (C:H/I:H/A:H) difere do 9.1 (C:H/I:H/A:N) calculado pela ERPScan, que classificou o impacto original como 'resource consumption' — algumas das tabelas usadas nas queries de teste (como T_CHUNK) são grandes o suficiente para causar atrasos de vários segundos por requisição, o que sustenta um componente de disponibilidade além da exfiltração de dados.

O valor prático da falha aumenta quando encadeada: a mesma pesquisa (vah13/ERPScan) publicou junto CVE-2016-2388 (divulgação de nomes de usuário válidos via endpoints Web Dynpro de chat) e CVE-2016-1910 (fraqueza criptográfica que permite decodificar o hash extraído para a senha em texto claro). A SQLi isolada já entrega hashes; a cadeia completa entrega credenciais administrativas em texto claro.

How it’s exploited

O vetor é uma requisição SOAP POST não autenticada contra o endpoint UDDISecurityImplBean, tipicamente exposto na porta HTTP do AS Java (porta 50000 ou variante configurada). Não há pré-requisito de autenticação, configuração não padrão específica ou interação do usuário — o único requisito real é que o serviço UDDI Server esteja habilitado e acessível na rede, o que é comum em instalações padrão do NetWeaver AS Java dessa faixa de versões.

A exploração é blind: o atacante injeta subconsultas booleanas ou baseadas em tempo no campo permissionId e infere o resultado bit a bit (ou caractere a caractere), o que torna a extração lenta — o exploit público de referência leva minutos para recuperar um único hash de senha, iterando sobre a tabela UME_STRINGS. Ferramentas automatizadas (como o script Python público) tornam esse processo trivial de repetir em escala contra múltiplos alvos.

O resultado final documentado publicamente é a extração do hash de senha de contas administrativas (ex.: Administrator, j2ee_admin). Combinado com o vazamento de nomes de usuário (CVE-2016-2388) e a fraqueza criptográfica (CVE-2016-1910), a cadeia completa resulta em posse da senha administrativa em texto claro — ou seja, comprometimento total do ambiente NetWeaver. A presença no catálogo KEV da CISA (adicionado em 2022, com prazo de correção em 30/06/2022) confirma exploração ativa observada, não apenas teórica.

Versions

Affected
SAP NetWeaver AS JAVA 7.1 a 7.5 conforme testado e reportado pela ERPScan (nota do próprio pesquisador: 'outras versões provavelmente também são afetadas, mas não foram verificadas'). A descrição oficial do CVE cita especificamente SAP NetWeaver J2EE Engine 7.40.
Fixed in
Corrigido pela aplicação da SAP Security Note 2101079 (publicada em 09/02/2016). Não há, nas fontes consultadas, número específico de Support Package por versão — a correção deve ser obtida e aplicada diretamente via a Note no SAP Support Portal.

How to protect

A correção oficial é a SAP Security Note 2101079, publicada em 09/02/2016. Ela deve ser aplicada via o mecanismo padrão de Support Package / patch do SAP NetWeaver AS Java; a nota é referenciada tanto pela NVD quanto pela ERPScan como a solução definitiva — não há detalhe público de número exato de Support Package por versão nas fontes disponíveis, então a aplicação deve seguir o texto da Note diretamente no SAP Support Portal.

Se a aplicação imediata da nota não for viável, o paliativo real é restringir o acesso de rede ao serviço UDDI (e, de forma mais ampla, às portas administrativas do AS Java) a hosts de gerência confiáveis, e desabilitar o componente UDDI Server caso não esteja em uso — muitos ambientes o mantêm ativo por padrão sem necessidade funcional. Um WAF ou proxy reverso capaz de inspecionar o corpo SOAP pode bloquear payloads com aspas simples e palavras-chave SQL no campo permissionId, mas isso é detecção de assinatura, não correção da causa raiz, e é contornável.

O que não funciona: tratar isso apenas como 'vazamento de dados' e restringir só leitura — a injeção permite qualquer manipulação que a sintaxe SQL do backend aceite no contexto da query vulnerável, e o encadeamento com CVE-2016-2388/CVE-2016-1910 mostra que mesmo extração 'lenta' de hash já é suficiente para comprometimento total. Segmentação de rede sem a aplicação da Note reduz superfície mas não elimina o risco para quem tem acesso interno ou já comprometeu outro sistema na mesma rede.

How to detect

Procurar requisições HTTP POST para o endpoint /UDDISecurityService/UDDISecurityImplBean (ou variantes de caminho terminando em UDDISecurityImplBean), especialmente contendo a operação deletePermissionById com valores de permissionId que incluam aspas simples, palavras-chave SQL (AND, SELECT, COUNT) ou nomes de tabelas internas do NetWeaver como UME_STRINGS, J2EE_CONFIGENTRY, BC_UDV3_EL8EM_KEY, T_CHUNK e T_DOMAIN. Como a exploração é blind e tipicamente automatizada, um padrão forte é volume alto de requisições quase idênticas ao mesmo endpoint, variando apenas a condição booleana injetada, com respostas cujo tempo de latência varia de forma anômala (indicativo de SQLi baseada em tempo).

Requisições subsequentes a endpoints Web Dynpro de chat (ex.: caminhos contendo tc~rtc~coll.appl.rtc~wd_chat) partindo do mesmo IP são um sinal de encadeamento com CVE-2016-2388 para enumeração de usuários, reforçando que se trata de um ataque direcionado e não de scanning genérico.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
SQL injection vulnerability in the UDDI server in SAP NetWeaver J2EE Engine 7.40 allows remote attackers to execute arbitrary SQL commands via unspecified vectors, aka SAP Security Note 2101079.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Affected products
n/a · n/a
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.