Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2025-64512-Polyglot-PoC — Uma Prova de Conceito para CVE-2025-64512 usando um arquivo poliglota. | Kitploit
Ferramentas/GitHubGitHub/luigigubello/cve-2025-64512-polyglot-poc
Análise de VulnerabilidadesExploraçãoSegurança WebAprendizado e EducaçãoDesenvolvimento de PayloadsExploração de Binários
GitHubluigigubello/cve-2025-64512-polyglot-poc

CVE-2025-64512-Polyglot-PoC

Uma Prova de Conceito para CVE-2025-64512 usando um arquivo poliglota.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
7há 4 mesesAinda não revisado

CVE-2025-64512 Polyglot Payload

Nas últimas semanas (em novembro de 2025), uma vulnerabilidade interessante (CVE-2025-64512) foi divulgada no pdfminer.six, um popular projeto Python para processar arquivos PDF, usado em particular em pipelines de IA. A vulnerabilidade permite execução remota de código através da desserialização de dados não confiáveis via pickle.loads(), utilizando um arquivo PDF como vetor de ataque. Até aí, tudo bem: é uma vulnerabilidade importante em um pacote Python popular. O que chamou minha atenção foi a explorabilidade 👀.

Em sistemas do tipo Linux, apenas arquivos no sistema de arquivos podem ser resolvidos. Um atacante precisaria fornecer o PDF malicioso para processamento e o arquivo pickle malicioso precisaria estar presente no sistema alvo em um local que o atacante já conheça, pois precisa ser definido no próprio PDF. Em muitos casos, isso será difícil de explorar porque, mesmo que o atacante forneça tanto o PDF quanto o arquivo pickle juntos, não haveria como saber antecipadamente qual caminho completo para o arquivo pickle especificar. [...] No geral, há menos risco em um sistema Linux ou similar a Linux.

Então, aparentemente, para explorar essa vulnerabilidade em um sistema do tipo Linux, o atacante deve:

  • Enviar ou fornecer um arquivo PDF malicioso e um arquivo pickle malicioso para o sistema vulnerável;
  • Saber a posição (caminho do arquivo) do arquivo pickle malicioso no sistema vulnerável.

Podemos criar um arquivo PDF válido que acione a vulnerabilidade sem saber o caminho do arquivo pickle malicioso?

"Válido" significa que o pdfminer.six não recusa o arquivo e começa a processá-lo (porque um arquivo PDF é o que um leitor de PDF abre).

A resposta é Sim, criando um polyglot payload (uma espécie de). A ideia é criar um arquivo que seja ao mesmo tempo um pickle.gz válido e um arquivo PDF válido, para que o pdf2txt.py possa começar a processar um arquivo PDF e, em seguida, apontar para ele para carregar o código pickle em formato GZIP.

Frequentemente - mas nem sempre 🥲 - um arquivo é um arquivo PDF se tiver %PDF- em algum lugar, geralmente nos primeiros 1024 bytes (1 - 2). Para o pdfminer.six, um arquivo PDF válido apenas precisa ter um objeto /Root (pdfdocument.py#L752). Um arquivo GZIP tem bytes iniciais específicos (RFC 1952 - Sec. 2.3.1), mas suporta comentários (FCOMMENT, RFC 1952 - Sec. 2.3.1).

Então, este é o design do arquivo polyglot: criar um GZIP válido contendo o payload pickle malicioso e incorporar um arquivo PDF válido no flag FCOMMENT do GZIP. Em seguida, usar este arquivo como um PDF válido com o pdf2txt.py para acionar a vulnerabilidade e usar o mesmo arquivo para executar o pickle malicioso.

(2025.12.12) EDITAR:

A única restrição que temos é o nome do arquivo: ele deve terminar com .pickle.gz (isso está embutido no código do pdfminer.six, cmapdb.py#L235).

As duas restrições que temos são:

  • Nome do arquivo: ele deve terminar com .pickle.gz (isso está embutido no código do pdfminer.six, cmapdb.py#L235);
  • Localização do PDF: ainda precisamos saber a localização do PDF no sistema vulnerável.

Estou um pouco surpreso que esta CVE seja tão subestimada, considerando a popularidade deste projeto (6k ⭐️ no GitHub, mas usado por 34k projetos, de acordo com as estatísticas do GitHub) e os casos de uso (ferramentas de linha de comando, fluxos de trabalho de IA, pipelines, em suma, todos os tipos de infraestrutura que você não quer atualizar se estiver funcionando bem).

Por exemplo, a ferramenta da Microsoft markitdown 0.1.3 (microsoft/markitdown, 84k ⭐️ no GitHub e usado por 2k projetos), instalada antes de 1º de dezembro, está vulnerável a execução arbitrária de código via pdfminer.six. A equipe da Microsoft lançou um patch em 1º de dezembro, 0.1.4, mas sem alertas de segurança, então acho que a atualização não foi priorizada por outras equipes de engenharia.

Outros projetos podem ser afetados pelo CVE-2025-64512, e é bem fácil de explorar.

Projetos Vulneráveis

Uma lista (incompleta) de projetos vulneráveis:

  • pdfminer.six (20250506) (corrigido em 20251107)
  • markitdown (0.1.3) (corrigido em 0.1.4)
  • pdfplumber (0.11.7) (corrigido em 0.11.8)

PoC para pdf2txt.py 20250506

root@kitploit:~
docker build -t cve-2025-64512-poc .  
docker run --rm -it cve-2025-64512-poc
pdf2txt.py payload.pickle.gz

PoC para markitdown 0.1.3

root@kitploit:~
docker build -t cve-2025-64512-poc .  
docker run --rm -it cve-2025-64512-poc
markitdown markitdown-payload.pickle.gz -x pdf -o output.md

Vídeo

poc.gif

Baixar ferramenta