
Notes de recherche documentant CVE-2024-30350, une lecture hors limites dans la gestion des annotations de Foxit PDF Reader, couvrant le triage, la divulgation et les recommandations défensives.
CVE-2024-30350 est une vulnérabilité de divulgation d'informations par lecture hors limites dans Foxit PDF Reader. Le problème a été publié par Trend Micro Zero Day Initiative sous la référence ZDI-24-333 et suivi avant divulgation sous la référence ZDI-CAN-22708.
L'avis public décrit la zone vulnérable comme le traitement des objets Annotation par Foxit PDF Reader. Un PDF spécialement conçu peut amener l'application à lire au-delà de la fin d'un tampon alloué. L'exploitation nécessite une interaction de l'utilisateur, comme l'ouverture d'un fichier PDF malveillant ou la visite d'une page qui en diffuse un. L'impact immédiat est la divulgation d'informations sensibles, et l'avis note que la condition peut être utile lorsqu'elle est enchaînée avec d'autres vulnérabilités.
Ce dépôt documente la vulnérabilité, le flux de travail de recherche, le processus de triage et les notes de divulgation. Il n'inclut intentionnellement pas de preuve de concept weaponisée.
| Champ | Valeur |
|---|
| CVE | CVE-2024-30350 |
| Avis ZDI | ZDI-24-333 |
| Cas ZDI | ZDI-CAN-22708 |
| Produit | Foxit PDF Reader |
| Éditeur | Foxit |
| Composant | Traitement des objets Annotation |
| Faiblesse | Lecture hors limites |
| CWE | CWE-125 |
| Impact | Divulgation d'informations |
| CVSS | 3.3 |
| Vecteur | CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N |
| Date de rapport au fournisseur | 2023-12-20 |
| Date de l'avis public | 2024-03-28 |
| Date de mise à jour de l'avis | 2024-07-01 |
| Corrigé par | Mises à jour de sécurité de Foxit PDF Reader 2024.1 et Foxit PDF Editor 2024.1 |
Selon le bulletin de sécurité de Foxit du 5 mars 2024, les versions Windows affectées incluaient Foxit PDF Reader 2023.3.0.23028 et antérieures, ainsi que plusieurs lignes de versions de Foxit PDF Editor jusqu'aux versions listées dans le bulletin.
Les annotations PDF sont représentées sous forme de dictionnaires attachés aux pages via le tableau /Annots de la page. Un lecteur doit analyser le dictionnaire d'annotation, résoudre les valeurs directes et indirectes, normaliser les données de géométrie et d'apparence, et relier le résultat aux chemins de rendu, de sélection, d'édition, de JavaScript et d'accessibilité.
La classe de bug pour CVE-2024-30350 est un échec de validation des limites dans ce pipeline d'analyse des annotations. Un objet annotation malformé pouvait amener Foxit PDF Reader à faire confiance à une longueur dérivée ou à une forme d'objet qui ne correspondait plus au tampon sous-jacent. Sous le chemin vulnérable, le programme pouvait lire au-delà de la limite de l'objet alloué. Le mode de défaillance observé était une violation d'accès lors du traitement des annotations ; avec une disposition mémoire différente, la même primitive pouvait exposer la mémoire de processus adjacente.
Le problème n'était pas une vulnérabilité réseau en un clic. L'attaquant devait convaincre l'utilisateur cible d'ouvrir un document spécialement conçu ou d'atteindre une page de diffusion qui provoquait l'ouverture du document. Cela se reflète dans l'exigence d'interaction utilisateur du CVSS.
L'investigation originale a commencé comme un audit ciblé de familles d'objets PDF complexes plutôt que comme une campagne générale de fuzzing de format de fichier. Le traitement des annotations a été choisi parce que les annotations se situent à une intersection dense entre la logique du parseur, le comportement de l'interface utilisateur, l'exposition JavaScript et les mises à jour incrémentielles de documents.
Le corpus initial mélangeait des documents ordinaires avec des pages synthétiques contenant des dictionnaires d'annotation à forte variance. Le générateur variait les longueurs de tableaux, l'indirection d'objets, les valeurs nulles, les types primitifs inattendus, les références récursives et les combinaisons de flux d'apparence. Les échantillons les plus utiles n'étaient pas entièrement aléatoires. Ils étaient suffisamment conscients de la grammaire pour atteindre le code de normalisation des annotations, mais encore suffisamment malformés pour tester les hypothèses du parseur natif.
Le premier signal fut un crash qui ne se reproduisait que lorsqu'une page contenait une structure d'annotation malformée spécifique et que l'annotation était forcée à travers le chemin de traitement interactif. L'ouverture du document suffisait à analyser la page, mais la reproduction fiable s'améliorait lorsque la vue était rafraîchie, la page zoomée, ou l'arbre d'annotations touché par le code de sélection ou de rendu.
Le débogage a permis de circonscrire le problème à une lecture au-delà de la fin d'une allocation de tas lors du traitement de l'objet annotation. Le crash ne ressemblait pas à un déréférencement de pointeur nul. L'instruction défaillante consommait de la mémoire adjacente à un tampon lié aux annotations, et les relations de taille dans l'échantillon minimisé suggéraient une inadéquation entre un compteur logique analysé et le stockage réel disponible pour cet objet.
L'échantillon a été minimisé en supprimant de manière répétée les objets PDF, ressources de page, polices, métadonnées et flux non liés jusqu'à ce qu'il ne reste que l'arbre de pages, la page cible et la structure d'annotation. Le fichier réduit préservait la même signature de crash, ce qui le rendait approprié pour une divulgation coordonnée.
Après triage, la découverte a été soumise via Zero Day Initiative. La date de rapport au fournisseur dans l'avis public est le 2023-12-20. L'avis coordonné a été publié le 2024-03-28, et Foxit a traité le problème dans la ligne de mise à jour 2024.1.
L'impact direct est la divulgation de mémoire du processus Foxit PDF Reader. Isolément, cela signifie généralement un impact de confidentialité limité. Dans une chaîne d'exploitation plus complète, cependant, une lecture hors limites peut être précieuse pour divulguer le contenu du tas, les pointeurs d'objets, la disposition des allocations ou d'autres états de processus nécessaires pour rendre fiable une vulnérabilité distincte de corruption de mémoire.
Cela explique le score CVSS autonome faible tout en rendant le problème significatif pour le durcissement des chaînes d'exploitation.
Les utilisateurs doivent mettre à jour Foxit PDF Reader et Foxit PDF Editor vers les versions corrigées. Les organisations qui traitent des PDF non fiables doivent également maintenir activées les protections Protected View, Safe Reading Mode, les contrôles de réputation de fichiers, le filtrage des pièces jointes et les atténuations d'exploitation des points de terminaison.
Pour les développeurs de parseurs, la principale leçon est que les dictionnaires d'annotation doivent être traités comme des entrées structurées non fiables même lorsque le PDF environnant est syntaxiquement valide. Les longueurs dérivées, les tableaux normalisés, les objets indirects résolus et les représentations d'objets en cache doivent être validés à chaque frontière entre le parseur, le moteur de rendu, le scripting et le code d'interface utilisateur.
| Chemin | Objectif |
|---|---|
README.md | Aperçu principal de la vulnérabilité |
docs/discovery-process.md | Récit de recherche de bout en bout |
docs/advisory-notes.md | Faits et références de l'avis public |
docs/triage-checklist.md | Liste de contrôle générale utilisée pour le triage des crashs de lecteur PDF |