TIBCO JasperReports Library Directory Traversal Vulnerability
Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.
Apply updates per vendor instructions.
Resumen
Falha de directory traversal (CWE-22) no endpoint reportresource/reportresource/ do TIBCO JasperReports Server/Library, que permite ler arquivos arbitrários do sistema operacional através do parâmetro resource. O CVSS 9.9 reflete o pior cenário (acesso total a confidencialidade, integridade e disponibilidade), mas o pesquisador que descobriu a falha demonstrou exploração sem qualquer autenticação — mais grave, portanto, do que o PR:L sugerido pela TIBCO no vetor CVSS. Está no catálogo KEV da CISA com exploração confirmada em ambiente real.
Detalle técnico
A vulnerabilidade está no serviço reportresource/reportresource/, que recebe um parâmetro resource usado para localizar arquivos de recursos do JasperReports dentro da aplicação. A única validação aplicada é exigir que o valor comece com o prefixo net/sf/jasperreports/ — uma checagem de string, não de caminho canonicalizado. Isso foi pensado como controle de acesso, mas não impede sequências ../ depois do prefixo obrigatório.
Um atacante satisfaz a checagem de prefixo e em seguida usa ../../../../ para escapar do diretório esperado e alcançar qualquer arquivo legível pelo processo do servidor de aplicação, incluindo arquivos de configuração fora da árvore da aplicação web. O pesquisador que reportou a falha (Elar Lang) descreve a defesa como suficiente apenas para 'enganar scanners', não para bloquear o traversal real.
O impacto documentado é leitura de arquivos: listagem de diretórios e leitura de conteúdo, incluindo arquivos de configuração de banco de dados como js.jdbc.properties, que costuma conter credenciais de conexão com o banco de dados usado pelo JasperReports Server. A partir daí a cadeia de comprometimento pode se estender (acesso ao banco, pivoteamento), o que ajuda a justificar os impactos de integridade e disponibilidade também marcados como altos no vetor CVSS, mesmo que a PoC pública demonstre apenas leitura.
Cómo se explota
O vetor é uma requisição HTTP simples ao endpoint reportresource/reportresource/ com o parâmetro resource manipulado, sem necessidade de autenticação prévia — o próprio pesquisador testou contra o site de demonstração público da TIBCO e conseguiu listar diretórios e ler arquivos sem login. Isso contrasta com o PR:L (privilégio baixo) atribuído pela TIBCO no vetor CVSS oficial; a divergência entre o que o fornecedor declarou e o que foi demonstrado publicamente é relevante para quem está priorizando risco.
Complexidade de exploração é baixa: não há necessidade de engenharia social, condição de corrida ou configuração especial — apenas alcançar a URL do endpoint via rede e montar o parâmetro com o prefixo exigido seguido de sequências de traversal. O resultado prático demonstrado publicamente é leitura de arquivos arbitrários acessíveis ao processo do servidor de aplicação, o que já é suficiente para extrair credenciais de banco de dados e outros segredos de configuração.
A presença no catálogo KEV da CISA (adicionada em 2022-12-29, com prazo de correção definido para 2023-01-19) confirma exploração ativa observada, mesmo cerca de três anos após a divulgação pública, típico de instâncias legadas expostas na internet sem atualização.
Versiones
Cómo protegerse
A TIBCO publicou um advisory oficial com a seção de solução ('Security Advisory: March 6, 2019 — TIBCO JasperReports Library — 2018-18809'); o caminho recomendado é aplicar a atualização/patch indicado ali para a linha de produto específica em uso. Não conseguimos confirmar, a partir do conteúdo lido, os números exatos de versão que corrigem a falha para cada um dos oito produtos afetados — consulte o advisory oficial da TIBCO diretamente antes de declarar qualquer ambiente corrigido.
Como o próprio caso mostra, o site de demonstração da própria TIBCO continuou vulnerável por mais de um mês depois da publicação do advisory (de 06/03/2019 até 26/04/2019), o que indica que aplicar apenas a atualização declarada não é garantia — vale testar o endpoint reportresource/reportresource/ com um payload de traversal contra o próprio ambiente após qualquer patch.
Como controle compensatório quando a atualização não é viável de imediato: restringir ou bloquear acesso externo ao endpoint /jasperserver-pro/reportresource/reportresource/ via proxy reverso ou WAF, e revisar/rotacionar credenciais expostas em arquivos de configuração (como js.jdbc.properties) caso haja qualquer suspeita de exposição prévia. Filtros baseados apenas em exigir o prefixo net/sf/jasperreports/ — que é exatamente a 'defesa' original que falhou — não funcionam como mitigação.
Cómo detectar
Procurar em logs de acesso web (access logs do servidor de aplicação/proxy) por requisições ao caminho /reportresource/reportresource/ contendo o parâmetro resource com o valor exigido net/sf/jasperreports/ seguido de sequências de traversal (../, codificadas ou não, como %2e%2e%2f). Tentativas de leitura de arquivos de configuração específicos como js.jdbc.properties no valor do parâmetro são um indicador forte de exploração ativa, não apenas de varredura.
Não há assinatura única confiável além do padrão de URL, já que a 'defesa' de prefixo original não impede variações de encoding do traversal; ambientes sem logging detalhado de parâmetros de query podem não ter nenhum registro retroativo de exploração, o que é uma limitação real para investigação forense de incidentes antigos.