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-2018-14442 — PoC pour Foxit Reader CVE-2018-14442 | Kitploit
Outils/GitHubGitHub/payatu/cve-2018-14442
Frameworks d'ExploitationAnalyse des VulnérabilitésExploitationRétro-ingénierieFuzzingExploitation de Binaires
GitHubpayatu/cve-2018-14442

CVE-2018-14442

PoC pour Foxit Reader CVE-2018-14442

Voir le dépôt
58173il y a 7 ansVérifié par Kitploit

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

Foxit Reader CPDF_Parser::m_pCryptoHandler Use After Free

  1. Contexte du format PDF
  2. Dictionnaires de chiffrement
  3. Détails de la vulnérabilité
  4. Contournement d'ASLR et de DEP
  5. Détails de l'environnement
  6. Déclencheur
  7. Auteur

Contexte du format PDF

PDF est un format de fichier utilisé pour représenter des documents. Un PDF est composé de plusieurs objets de données

  • Objets primitifs simples Entier, Nombre, Booléen, Null

  • Objets complexes

Télécharger l’outil
FormatName
[.*]Array
(.*)String
<<.*>>Dictionary
<.*>Hex String
/.*Name
stream.*endstreamStream

Ces objets définissent l'apparence d'un PDF et son contenu. Les structures d'un PDF se présentent sous 2 types d'objets - directs et indirects. Un objet indirect commence par un numéro d'objet et un numéro de génération, suivis de l'objet lui-même. Les objets indirects peuvent être référencés directement dans d'autres objets sous la forme n m R, où n et m sont respectivement les numéros d'objet et de génération. Les objets dictionnaire sont les briques de base du document. Certains objets dictionnaire généraux sont nécessaires pour former une page ou le document lui-même. Le plus important est le dictionnaire Root, qui définit des liens vers tous les autres Pages, Metadata, Names, etc., chacun pouvant être un autre objet. Les objets flux contiennent l'essentiel des données binaires, comme les polices, les images ou les données compressées/chiffrées.

Dictionnaires de chiffrement

Un document PDF peut être chiffré pour protéger son contenu contre tout accès non autorisé. Le chiffrement s'applique à toutes les chaînes et à tous les flux du fichier PDF, à quelques exceptions près comme le dictionnaire Encrypt lui-même. Le chiffrement s'applique principalement aux objets flux. Il ne s'applique pas aux autres types d'objets tels que les entiers et les booléens, qui servent principalement à transmettre des informations sur la structure du document plutôt que sur son contenu. Les informations relatives au chiffrement doivent être stockées dans le dictionnaire de chiffrement du document, qui doit être la valeur de l'entrée "Encrypt" du dictionnaire trailer du document.

Détails de la vulnérabilité

CPDF_Parser::StartParse définit m_pCryptoHandler pour les objets indirects d'un PDF qui sont chiffrés. m_pCryptoHandler devrait être mis à null lorsque CPDF_Parser::ReleaseEncryptHandler est terminé. Au lieu de cela, CPDF_Parser::ReleaseEncryptHandler ne supprime pas la référence à CryptoHandler dans CPDF_Parser, et celle-ci devient pendante. Plus tard, lorsque l'analyseur commence à analyser les objets référencés dans le dictionnaire Root, m_pCryptoHandler+8 est appelé pour déchiffrer les données. Un bug similaire a été corrigé dans pdfium dans le commit 741c362fb75fd8acd2ed2059c6e3e716a63a7ac8. Voir https://bugs.chromium.org/p/chromium/issues/detail?id=726503

Contournement d'ASLR et de DEP

Les PDF permettent d'intégrer du JS dans le document, qui peut être exécuté automatiquement s'il est placé dans OpenAction d'un dictionnaire de type Catalog. Une fois que nous avons l'exécution de JS, nous pouvons sprayer des objets dans l'espace du processus afin d'atteindre une adresse prévisible où nous écrirons notre chaîne ROP. Lorsqu'un document PDF est signé dans Foxit Reader, celui-ci utilise plugins\jrsys\x86\jrsysMSCryptoDll.dll depuis le répertoire d'installation pour lire les informations signées, ce qui charge jrsysCryptoDll.dll à une adresse statique de 0x10000000. Cette DLL importe VirtualAlloc, ce qui facilite l'exécution du payload. L'exploit fourni utilise un heap spraying pour obtenir une disposition mémoire prévisible et une chaîne ROP pour allouer une page RWX, copier et exécuter le payload.

Détails de l'environnement

Cet exploit a été testé avec Foxit Reader 9.0.1.1049 x86 fonctionnant sur MS Windows 7 Enterprise Build 7601 SP1 x86. L'exploit nécessite que le tas soit dans un état spécifique ; s'il échoue, veuillez réessayer. Veuillez consulter la vidéo de démonstration. Cette vulnérabilité est également présente dans Foxit PDF Reader and Converter pour Android.

Déclencheur

bitcoins.pdf est le PDF spécialement conçu qui effectue la réallocation de la mémoire libérée et déclenche le bug principal. Si vous souhaitez reproduire le crash dans le débogueur, veuillez activer Page Heaps pour FoxitReader.exe et ouvrir bitcoins.pdf.

Démo

Vidéo de démonstration

Auteur

Ce crash a été découvert par Cloudfuzz - une plateforme de fuzzing développée chez Payatu. L'analyse approfondie et l'exploitation ont été réalisées par Sudhakar.