Apache FOP: bypass de escape → injeção PostScript → leitura de arquivo do servidor

Apache FOP (Formatting Objects Processor) é uma biblioteca Java usada para gerar documentos (PDF, PostScript) a partir de modelos XML.
Neste caso, o FOP não gera o PDF diretamente. Em vez disso, ele primeiro produz PostScript, que é então convertido para PDF pelo GhostScript. A vulnerabilidade aparece durante este estágio intermediário.
O FOP escapa o caractere ) como ). Uma rotina separada divide linhas com mais de 200 caracteres inserindo \ seguido por uma nova linha. No entanto, esta lógica não leva em conta o fato de que ) é uma única sequência de escape.
Se a barra invertida de ) cair exatamente no limite de uma quebra de linha, a lógica de divisão de linha insere outro \ e nova linha, produzindo: \n).
Aqui a primeira barra invertida escapa a segunda, deixando ) sem escape. Isso fecha prematuramente a string PostScript, permitindo que o atacante injete código PostScript arbitrário.
O código injetado é então executado pelo GhostScript durante a geração do PDF, permitindo leituras de arquivos do lado do servidor. O artigo também descreve restrições de exploração, técnicas de bypass e como encadear este problema com CVE-2025-46646 (GhostScript) pode levar à execução remota de código completa.
💬 Discutir
Vulnerabilidades
4.5
CVE-2025-46646
Pesquisadores
Truff
Fornecedor
Apache
Almond Offsec
Produto
Apache Fop
Ghostscript
Publicado
2026-03-04, 08:31