A falha no jsPDF identificada como CVE-2025-68428, com pontuação 9.2 em severidade, colocou em alerta desenvolvedores e equipes de segurança que utilizam a popular biblioteca JavaScript para geração de PDFs em ambientes Node.js. O problema afeta diretamente aplicações backend que processam entradas controladas pelo usuário e pode resultar em acesso não autorizado a arquivos sensíveis do servidor. Considerando que o jsPDF é amplamente adotado em projetos modernos, a vulnerabilidade jsPDF representa um risco real e imediato para a segurança Node.js em produção.
A biblioteca jsPDF é amplamente usada para criar documentos PDF dinamicamente, tanto no navegador quanto no servidor. No contexto do Node.js, ela costuma ser integrada a APIs que geram relatórios, faturas, comprovantes e documentos personalizados. A gravidade da CVE-2025-68428 está no fato de que funções críticas da biblioteca permitem o carregamento de arquivos locais sem a devida validação de caminho, abrindo espaço para ataques de inclusão de arquivos locais, conhecidos como LFI.
O que é a vulnerabilidade CVE-2025-68428
A CVE-2025-68428 é classificada como uma falha de Local File Inclusion, causada pela ausência de sanitização adequada de caminhos de arquivos fornecidos como entrada para determinadas funções do jsPDF em ambiente Node.js. Em termos práticos, a biblioteca confia excessivamente em parâmetros passados pelo desenvolvedor ou, em cenários mais críticos, pelo próprio usuário final.
Quando uma aplicação utiliza o jsPDF para carregar imagens, fontes ou conteúdos HTML a partir de caminhos dinâmicos, um invasor pode manipular esses parâmetros para apontar para arquivos arbitrários do sistema. Como não há validação robusta para impedir sequências como ../, o mecanismo de resolução de caminhos do Node.js acaba permitindo o acesso a arquivos fora do diretório esperado.
Esse tipo de falha é especialmente perigoso em servidores Linux, onde arquivos como /etc/passwd, variáveis de ambiente, chaves privadas e arquivos de configuração de aplicações podem ser lidos silenciosamente. A vulnerabilidade jsPDF não exige execução de código, apenas leitura, o que a torna mais difícil de detectar em logs tradicionais.

Imagem: Parallax
Funções afetadas no Node.js
Diversas funções centrais do jsPDF estão diretamente relacionadas à CVE-2025-68428. A função loadFile é o exemplo mais direto, pois foi projetada para carregar arquivos locais e remotos sem impor restrições rígidas de caminho. Quando utilizada com parâmetros dinâmicos, ela pode ser explorada para acessar qualquer arquivo legível pelo processo Node.js.
A função addImage também é afetada, já que permite a inclusão de imagens a partir de caminhos no sistema de arquivos. Se o caminho da imagem for controlável, um atacante pode apontar para arquivos sensíveis que, embora não sejam imagens válidas, ainda assim podem ser lidos e incorporados ao fluxo de processamento.
No caso da função html, o risco surge quando o conteúdo HTML referencia recursos externos ou locais, como imagens ou folhas de estilo. Esses recursos podem ser resolvidos internamente pelo jsPDF, novamente sem validação adequada. Por fim, a função addFont apresenta comportamento semelhante ao carregar arquivos de fonte a partir do sistema, permitindo a leitura de qualquer arquivo acessível.
Em todos esses casos, o problema não está apenas na função em si, mas na suposição de que os caminhos fornecidos são confiáveis, o que raramente é verdade em aplicações expostas à internet.
Impacto e escala do problema
O impacto potencial da falha no jsPDF é amplificado pela popularidade da biblioteca. Estima-se que o jsPDF registre cerca de 3,5 milhões de downloads semanais, sendo amplamente utilizado em APIs corporativas, sistemas de ERP, plataformas de e-commerce e serviços SaaS. Isso significa que uma parcela significativa do ecossistema Node.js pode estar vulnerável.
O principal risco está no vazamento de informações sensíveis do servidor. Arquivos de configuração contendo credenciais de banco de dados, tokens de APIs, segredos JWT e chaves privadas podem ser expostos a atacantes remotos. Em ambientes de nuvem, isso pode levar à escalada de privilégios, acesso a outros serviços e comprometimento completo da infraestrutura.
Além do impacto técnico, há também implicações legais e regulatórias. Vazamentos de dados causados por falhas conhecidas e não corrigidas podem resultar em sanções sob legislações como LGPD e GDPR, especialmente se envolverem dados pessoais processados pela aplicação.
Como mitigar e corrigir a falha
A correção definitiva para a CVE-2025-68428 é a atualização do jsPDF para a versão 4.0.0, na qual os mantenedores implementaram controles mais rigorosos sobre o carregamento de arquivos locais. Essa versão introduz validações internas e restringe o uso de caminhos arbitrários em ambiente Node.js.
Além da atualização da biblioteca, é altamente recomendável utilizar o modo de permissão do Node.js, um recurso de segurança que limita o acesso do processo a partes específicas do sistema de arquivos. As versões recomendadas do Node.js para uso desse mecanismo são 22.13.0, 23.5.0 e 24.0.0+. Com o modo de permissão ativo, mesmo que uma falha de LFI exista, o impacto é drasticamente reduzido.
Outra medida importante é revisar todas as integrações do jsPDF no projeto, identificando pontos onde caminhos de arquivos são construídos a partir de entradas externas. Sempre que possível, substitua caminhos dinâmicos por mapeamentos internos e diretórios previamente definidos.
Recomendações de higienização
Para equipes que não podem atualizar imediatamente para a versão 4.0.0, algumas medidas de mitigação temporárias podem reduzir o risco. A primeira delas é a validação estrita de caminhos, rejeitando qualquer entrada que contenha sequências de travessia de diretórios ou caminhos absolutos.
Também é recomendável executar o processo Node.js com privilégios mínimos, garantindo que ele não tenha acesso a arquivos sensíveis do sistema. Em ambientes Linux, isso inclui o uso de usuários dedicados e permissões de arquivo restritivas.
Outra prática defensiva é isolar a funcionalidade de geração de PDF em um serviço separado, com acesso limitado ao sistema de arquivos. Dessa forma, mesmo que a vulnerabilidade jsPDF seja explorada, o impacto fica contido a um ambiente controlado.
Conclusão e a importância da gestão de dependências
A falha no jsPDF evidenciada pela CVE-2025-68428 reforça a importância da gestão ativa de dependências em projetos Node.js. Bibliotecas populares não estão imunes a falhas críticas, especialmente quando passam a ser usadas em contextos para os quais não foram originalmente projetadas, como o backend.
Manter dependências atualizadas, acompanhar alertas de segurança e adotar mecanismos nativos de proteção, como o modo de permissão do Node.js, são práticas essenciais para reduzir a superfície de ataque. Desenvolvedores e administradores devem revisar seus projetos, identificar o uso do jsPDF e agir proativamente para corrigir ou mitigar a vulnerabilidade jsPDF antes que ela seja explorada em larga escala.
