← back
CVE-2018-5430highunder attackCWE-200

TIBCO JasperReports Server Information Disclosure Vulnerability

83Vexday Risk Score

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

ssvc Actcvss 7.7epss 49%
from disclosure to weapon16 days
Published on NVDApr 17
1st PoC+16d
CISA KEV+1717d
exploitation probability
49%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
2 public exploit(s)
Action required by CISAfederal deadline: 2023-01-19

Apply updates per vendor instructions.

Summary

Falha de directory traversal (CWE-22) nos web flows Spring do TIBCO JasperReports Server que permite a qualquer usuário autenticado — independente do nível de permissão — ler arquivos arbitrários dentro da estrutura WEB-INF da aplicação, incluindo arquivos de configuração com credenciais de banco de dados. O CVSS 7.7 reflete bem o risco: não precisa de privilégio administrativo, só de uma conta válida qualquer, e o impacto de confidencialidade é alto porque expõe segredos que viabilizam movimento lateral.

Technical detail

O componente vulnerável é o mecanismo de resolução de páginas dos web flows do Spring usados pelo JasperReports Server (endpoint flow.html, parâmetro _flowId=sampleFlow combinado com o parâmetro page). O valor de page é lido via getParameterValues() e passado sem sanitização até getResource() em DirResourceSet.java, que monta um objeto File concatenando o caminho base da webapp (ex: .../tomcat/webapps/jasperserver/WEB-INF/) com o valor controlado pelo atacante. Como não há validação contra sequências '../', é possível sair do diretório esperado (jsp/modules/...) e alcançar qualquer arquivo dentro da estrutura da aplicação.

O atacante controla o parâmetro page por completo, incluindo o número de '../' usados para subir na árvore de diretórios. A aplicação normalmente apenda '.jsp' ao valor de page antes de resolver o arquivo — os pesquisadores da Rhino Security Labs descobriram que um ponto e vírgula (;) ao final do caminho engana o parser Java e faz a extensão '.jsp' ser ignorada, permitindo ler arquivos de configuração como js.jdbc.properties (que contém credenciais de conexão ao banco) mesmo sem controle sobre a extensão de destino. Bytes nulos (%00), a técnica clássica de truncamento, não funcionam nesse caso.

A falha também permite bypass de controle de acesso: um usuário de baixo privilégio (ex: joeuser) consegue, via o mesmo parâmetro page, invocar JSPs administrativos como adminImport ou awsConfiguration que deveriam estar restritos a administradores, simplesmente apontando o traversal para o caminho desses recursos dentro de WEB-INF/jsp/modules/administer/.

How it’s exploited

Pré-requisito real: autenticação válida na aplicação, com qualquer nível de privilégio (PR:L no vetor CVSS). Não há bypass de autenticação embutido nesta CVE especificamente — o atacante precisa de uma conta, mesmo que de usuário comum, o que reduz a superfície a instâncias com self-registration aberto, credenciais padrão, ou a cenários pós-comprometimento de uma conta de baixo privilégio. A partir daí a exploração é trivial: uma requisição GET manipulando o parâmetro page do endpoint flow.html, sem interação de terceiros (UI:N) e com baixa complexidade (AC:L).

Na prática documentada pelos descobridores, a exploração seguiu três caminhos: (1) leitura de arquivos de configuração sensíveis dentro de WEB-INF, incluindo credenciais de banco de dados em texto claro, usadas para pivotar para outros sistemas; (2) bypass de controles de acesso, acessando funcionalidades administrativas (import/export, configuração AWS) a partir de uma conta sem privilégios; (3) em cenário pós-intrusão, inclusão local de arquivo (LFI) — mas essa etapa exige que o atacante já tenha conseguido enviar um arquivo JSP malicioso disfarçado (sem extensão .jsp) para o filesystem do servidor por algum outro vetor, o que não é parte da vulnerabilidade original e depende de acesso de escrita prévio.

A CVE está no catálogo KEV da CISA, confirmando exploração ativa observada, e há exploit público (Exploit-DB 44623) reproduzindo o PoC. Isso torna a falha atrativa para automação em varreduras de instâncias JasperReports expostas, especialmente porque só exige uma conta de teste ou de baixo privilégio para roubar credenciais de infraestrutura.

Versions

Affected
TIBCO JasperReports Server: até 6.2.4 (inclusive), 6.3.0, 6.3.2, 6.3.3, 6.4.0, 6.4.2. TIBCO JasperReports Server Community Edition: até 6.4.2 (inclusive). TIBCO JasperReports Server for ActiveMatrix BPM: até 6.4.2 (inclusive). TIBCO Jaspersoft for AWS with Multi-Tenancy: até 6.4.2 (inclusive). TIBCO Jaspersoft Reporting and Analytics for AWS: até 6.4.2 (inclusive).

How to protect

O fornecedor recomenda aplicar as atualizações conforme o advisory oficial (TIBCO Security Advisory de 17/04/2018). As fontes consultadas não trazem o número exato da versão corrigida para cada linha de produto (Server, Community Edition, ActiveMatrix BPM, AWS) — consulte o advisory da TIBCO diretamente para confirmar a versão de destino antes de planejar o upgrade, já que aplicar uma versão errada deixa a instância exposta sem indicação visível disso.

Como paliativo quando o upgrade não é imediato: restringir o acesso à aplicação a redes confiáveis, remover ou desabilitar contas de auto-registro (self-service) que concedem PR:L sem revisão, e auditar/rotacionar credenciais armazenadas em arquivos de configuração dentro de WEB-INF (datasources JDBC, chaves de integração AWS) assumindo que podem já ter sido lidas. Um WAF ou proxy reverso capaz de bloquear sequências de traversal ('../') e o parâmetro page com múltiplos níveis de subida no endpoint flow.html reduz a superfície, mas não é substituto do patch — o bypass via ponto e vírgula mostra que a aplicação tem lógica de parsing de path frágil, então qualquer filtro baseado em blacklist de padrões é contornável.

Não funciona como mitigação: apenas restringir a interface administrativa, já que o exploit é executado por contas de baixo privilégio contra endpoints nominalmente não-administrativos (flow.html é acessível a qualquer usuário autenticado).

How to detect

Em logs de acesso web, procurar por requisições ao endpoint flow.html com o parâmetro _flowId=sampleFlow combinado com o parâmetro page contendo sequências de traversal ('../') ou apontando para caminhos fora de jsp/modules/ esperados, especialmente combinações terminadas em ponto e vírgula (;) — a técnica usada para burlar o apêndice automático de '.jsp'. Requisições desse padrão vindas de contas de usuário não-administrativas para caminhos administrativos (adminImport, awsConfiguration) ou para arquivos de propriedades (ex: referências a .properties) são indício forte de exploração.

Não há assinatura única confiável porque o parâmetro page aceita qualquer caminho relativo — variações de profundidade de traversal e de arquivo-alvo tornam a detecção baseada em padrão fixo incompleta; recomenda-se monitorar qualquer acesso anômalo a flow.html por contas de baixo privilégio como sinal comportamental, não apenas por assinatura de payload.

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.
The Spring web flows of TIBCO Software Inc.'s TIBCO JasperReports Server, TIBCO JasperReports Server Community Edition, TIBCO JasperReports Server for ActiveMatrix BPM, TIBCO Jaspersoft for AWS with Multi-Tenancy, and TIBCO Jaspersoft Reporting and Analytics for AWS contain a vulnerability which may allow any authenticated user read-only access to the contents of the web application, including key configuration files. Affected releases include TIBCO Software Inc.'s TIBCO JasperReports Server: versions up to and including 6.2.4; 6.3.0; 6.3.2; 6.3.3;6.4.0; 6.4.2, TIBCO JasperReports Server Community Edition: versions up to and including 6.4.2, TIBCO JasperReports Server for ActiveMatrix BPM: versions up to and including 6.4.2, TIBCO Jaspersoft for AWS with Multi-Tenancy: versions up to and including 6.4.2, TIBCO Jaspersoft Reporting and Analytics for AWS: versions up to and including 6.4.2.
CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.