Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-64512-Polyglot-PoC — Une preuve de concept pour CVE-2025-64512 utilisant un fichier polyglotte. | Kitploit
Outils/GitHubGitHub/luigigubello/cve-2025-64512-polyglot-poc
Analyse des VulnérabilitésExploitationSécurité WebApprentissage et ÉducationDéveloppement de Charges UtilesExploitation de Binaires
GitHubluigigubello/cve-2025-64512-polyglot-poc

CVE-2025-64512-Polyglot-PoC

Une preuve de concept pour CVE-2025-64512 utilisant un fichier polyglotte.

Voir le dépôt
76il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2025-64512 Charge utile polyglotte

Au cours des dernières semaines (en novembre 2025), une vulnérabilité intéressante (CVE-2025-64512) a été divulguée dans pdfminer.six, un projet Python populaire pour traiter les fichiers PDF, utilisé notamment dans les pipelines d'IA. La vulnérabilité permet une exécution de code à distance en désérialisant des données non fiables via pickle.loads(), en utilisant un fichier PDF comme vecteur d'attaque. Jusqu'ici, tout va bien : c'est une vulnérabilité importante dans un paquet Python populaire. Ce qui a attiré mon attention, c'est l'exploitabilité 👀.

Sur les systèmes de type Linux, seuls les fichiers présents sur le système de fichiers peuvent être résolus. Un attaquant devrait fournir le PDF malveillant à traiter et le fichier pickle malveillant devrait être présent sur le système cible à un emplacement que l'attaquant connaît déjà, car il doit être défini dans le PDF lui-même. Dans de nombreux cas, l'exploitation sera difficile car même si l'attaquant fournit à la fois le PDF et le fichier pickle ensemble, il n'y aurait aucun moyen de connaître à l'avance le chemin complet à spécifier pour le fichier pickle. [...] Dans l'ensemble, il y a généralement moins de risque sur un système Linux ou de type Linux.

Donc, apparemment, pour exploiter cette vulnérabilité sur un système de type Linux, l'attaquant doit :

  • Téléverser ou fournir un fichier PDF malveillant et un fichier pickle malveillant au système vulnérable ;
  • Connaître la position (chemin d'accès) du fichier pickle malveillant sur le système vulnérable.

Pouvons-nous créer un fichier PDF valide qui déclenche la vulnérabilité sans connaître le chemin d'accès du fichier pickle malveillant ?

« Valide » signifie que pdfminer.six ne refuse pas le fichier et commence à le traiter (car ).

un fichier PDF est ce qu'un lecteur PDF ouvre

La réponse est Oui, en créant une charge utile polyglotte (en quelque sorte). L'idée est de créer un fichier qui soit à la fois un pickle.gz valide et un fichier PDF valide, afin que pdf2txt.py puisse commencer à traiter un fichier PDF puis pointer vers lui pour charger le code pickle au format GZIP.

Souvent - mais pas toujours 🥲 - un fichier est un fichier PDF s'il contient %PDF- quelque part, généralement dans les 1024 premiers octets (1 - 2). Pour pdfminer.six, un fichier PDF valide doit simplement avoir un objet /Root (pdfdocument.py#L752). Un fichier GZIP a des octets initiaux spécifiques (RFC 1952 - Sec. 2.3.1), mais il prend en charge les commentaires (FCOMMENT, RFC 1952 - Sec. 2.3.1).

Voici donc la conception du fichier polyglotte : créer un GZIP valide contenant la charge utile pickle malveillante, et intégrer un fichier PDF valide dans le flag FCOMMENT du GZIP. Utilisez ensuite ce fichier comme un PDF valide avec pdf2txt.py pour déclencher la vulnérabilité, et utilisez le même fichier pour exécuter le pickle malveillant.

(2025.12.12) EDIT :

La seule contrainte que nous avons est le nom du fichier : il doit se terminer par .pickle.gz (ceci est intégré dans le code de pdfminer.six, cmapdb.py#L235).

Les deux contraintes que nous avons sont :

  • Nom du fichier : il doit se terminer par .pickle.gz (ceci est intégré dans le code de pdfminer.six, cmapdb.py#L235) ;
  • Emplacement du PDF : nous devons toujours connaître l'emplacement du PDF sur le système vulnérable.

Je suis un peu surpris que cette CVE soit si sous-estimée, compte tenu de la popularité de ce projet (6k ⭐️ sur GitHub, mais utilisé par 34k projets, selon les statistiques GitHub) et des cas d'utilisation (outils en ligne de commande, workflows IA, pipelines, en bref, tous les types d'infrastructures que l'on ne veut pas mettre à jour si elles fonctionnent correctement).

Par exemple, l'outil Microsoft markitdown 0.1.3 (microsoft/markitdown, 84k ⭐️ sur GitHub et utilisé par 2k projets), installé avant le 1er décembre, est vulnérable à l'exécution de code arbitraire via pdfminer.six. L'équipe Microsoft a publié un correctif le 1er décembre, 0.1.4, mais sans alertes de sécurité, donc je ne pense pas que la mise à jour ait été priorisée par les autres équipes d'ingénierie.

D'autres projets pourraient être affectés par la CVE-2025-64512, et elle est assez facile à exploiter.

Projets vulnérables

Une liste (incomplète) des projets vulnérables :

  • pdfminer.six (20250506) (corrigé dans 20251107)
  • markitdown (0.1.3) (corrigé dans 0.1.4)
  • pdfplumber (0.11.7) (corrigé dans 0.11.8)

PoC pour 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 pour 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

Vidéo

poc.gif

Télécharger l’outil