Cyberattaques alimentées par l'IA : Comment détecter, prévenir et se défendre contre les menaces intelligentes

Lire la suite
Nous utilisons l'intelligence artificielle pour les traductions de sites et, bien que nous nous efforcions d'être précis, il se peut que les traductions ne soient pas toujours exactes à 100 %. Nous vous remercions de votre compréhension.

Révéler et remédier à une vulnérabilité de la bibliothèque Dompdf avec OPSWAT MetaDefender Core 

par OPSWAT
Partager cet article
Tai Tran et Hai Dang Bui, étudiants de l'Université des technologies de l'information, posant pour un portrait professionnel sur fond bleu.
Des étudiants ont participé au programme de bourses OPSWAT

L'essor rapide des technologies a créé une forte demande de développeurs qualifiés. Les logiciels libres sont devenus un outil essentiel pour cette main-d'œuvre en pleine croissance. Il existe aujourd'hui des centaines de milliers de logiciels libres bien établis dans différents langages de programmation. Plus de 90 % des développeurs utilisent ces composants libres dans leurs applications propriétaires, ce qui souligne l'efficacité et la valeur ajoutée des logiciels libres. Le marché mondial des logiciels libres devrait atteindre 80,7 milliards de dollars d'ici à 2030, soit un taux de croissance annuel de 16,7 %, ce qui souligne encore son importance. 

Les Software font partie intégrante des opérations commerciales dans le monde entier et sont donc fréquemment ciblés par les acteurs de la menace. En 2023, les dépenses consacrées à la sécurité des applications s'élevaient à environ 5,76 milliards de dollars, avec des projections atteignant 6,67 milliards de dollars en 2024. Au sein de l'AppSec, la sécurité de la chaîne d'approvisionnement des logiciels a pris de l'importance au cours des trois dernières années, représentant la catégorie d'attaque à la croissance la plus rapide, avec des brèches et des exploits majeurs faisant régulièrement la une des journaux. 

Les entreprises partent souvent du principe que la plupart des risques proviennent des applications web publiques. Toutefois, cette perspective a changé au cours des dernières années. Avec des dizaines de petits composants dans chaque application, les risques peuvent désormais émerger de n'importe quel endroit de la base de code. Il est plus que jamais essentiel pour les organisations de se familiariser avec les failles de sécurité existantes et émergentes dans le cycle de développement des logiciels. Dans ce billet de blog, nos boursiers diplômés examinent de plus près la CVE-2023-23924, une faille de sécurité critique découverte dans la bibliothèque dompdf largement utilisée, un outil PHP puissant qui permet la génération dynamique de documents PDF à partir de HTML et de CSS. 

Grâce à une analyse complète, nous explorerons les subtilités techniques de cette vulnérabilité, les technologies connexes qui jouent un rôle crucial, ainsi qu'une simulation du processus d'exploitation. Nous examinerons également comment OPSWAT MetaDefender CoreOPSWAT MetaDefender Core, en particulier son Software Bill of Materials (SBOM) peut être utilisé pour détecter et atténuer cette vulnérabilité, permettant ainsi aux développeurs de logiciels et aux équipes de sécurité de garder une longueur d'avance sur les menaces potentielles. 

Contexte de CVE-2023-23924 

Une faille de sécurité a été découverte dans la version 2.0.1 de dompdf et rendue publique au début de l'année 2023 :

  • La validation de l'URI sur dompdf 2.0.1 peut être contournée lors de l'analyse SVG en passant le paramètre <image> avec des lettres majuscules. Cela permet à un attaquant d'appeler des URL arbitraires avec des protocoles arbitraires, conduisant à une désérialisation arbitraire des objets dans les versions de PHP antérieures à 8.0.0. À travers le wrapper URL PHAR, cette vulnérabilité peut provoquer la suppression arbitraire de fichiers et même l'exécution de code à distance, en fonction des classes disponibles. 
  • Les analystes de NVD ont attribué un score CVSS de 9.8 CRITIQUE à CVE-2023-23924. 
Diagramme informatif montrant les métriques pour la version 3.x de CVSS, y compris les chaînes de gravité et de vecteur pour les vulnérabilités de sécurité.

Comprendre la vulnérabilité de Dompdf 

Pour bien comprendre la vulnérabilité CVE-2023-23924 dans dompdf, il est essentiel de se familiariser avec deux technologies étroitement liées : les graphiques vectoriels évolutifs (SVG) et les fichiers PHAR. 

SVG (Scalable Vector Graphics) 

SVG (Scalable Vector Graphics) est un format d'image polyvalent qui a gagné en popularité grâce à sa capacité à restituer des graphiques de haute qualité sur le web tout en restant léger et évolutif. Contrairement aux images matricielles, les SVG sont basés sur le balisage XML, ce qui permet un contrôle précis des éléments tels que les lignes, les formes et le texte. L'un des principaux avantages des SVG est leur capacité à s'adapter de manière transparente sans perdre la qualité de l'image, ce qui les rend idéaux pour la conception de sites web réactifs et les écrans à haute résolution.  

Extrait de code affichant un SVG avec plusieurs polygones de couleurs différentes, illustrant la programmation au format XML
Fichier PHAR 

PHAR (PHP Archive) est analogue au concept de fichier JAR, mais pour PHP. Il permet un déploiement facile en regroupant tout le code PHP et les fichiers de ressources dans un seul fichier d'archive.  

Un fichier PHAR se compose de 4 sections :  

  • Stubs : contient le code pour démarrer l'archive. 
  • Manifest : contient les métadonnées de l'archive. Les métadonnées sont stockées dans un format sérialisé, qui pourrait être utilisé pour déclencher une attaque par désérialisation PHP dans un fichier PHAR malveillant. 
  • Contenu du fichier : contient le contenu de l'archive, y compris le code PHP et les fichiers de ressources. 
  • Signature (facultatif) : contient des données permettant de vérifier l'intégrité du fichier. 

Les métadonnées étant stockées dans un format sérialisé, la combinaison de l'enveloppe PHAR et des métadonnées du fichier PHAR pourrait potentiellement déclencher une attaque par désérialisation lorsqu'elle est utilisée comme entrée dans des fonctions PHP telles que file_get_contents(), fopen(), file(), file_exists(), md5_file(), filemtime(), ou taille des fichiers(). Cette faille de sécurité pourrait permettre à des attaquants d'exécuter du code à distance via un fichier PHAR. 

Tableau détaillant le format de base d'un manifeste d'archive Phar, y compris la taille en octets et la description de chaque partie.

Comment Dompdf génère un fichier PDF

Organigramme illustrant le processus de conversion d'un fichier HTML en format PDF, mettant en évidence les étapes intermédiaires et les formats de fichiers.

Grâce à l'analyse, OPSWAT Graduate Fellows a identifié trois étapes au cours du processus de conversion sur dompdf. Pour convertir un fichier HTML au format PDF, la bibliothèque dompdf analyse d'abord le fichier d'entrée en un arbre DOM et stocke les informations de positionnement et de mise en page de chaque objet. Ensuite, le style CSS est analysé et appliqué à chaque objet. Enfin, les objets sont réorganisés pour tenir sur la page et rendus dans le fichier PDF final.  

Vulnérabilité de sécurité dans Dompdf

Pour améliorer la sécurité, dompdf met en œuvre une validation pour garantir la sécurité des entrées URI avant de passer à l'étape suivante. Ce processus de validation est évident lors du traitement des fichiers SVG dans la valeur de xlink:href attribut. 

Exemple de code PHP pour la manipulation de fichiers SVG, montrant les fonctions d'analyse et de validation du contenu SVG

Si le fichier d'entrée SVG contient l'élément <image> sous la balise <svg> une condition est mise en œuvre pour n'autoriser que certains protocoles, tels que http://, https:// et file://pour les xlink:href domaine.

Interface web pour un service de conversion PDF permettant aux utilisateurs de télécharger des fichiers HTML ou SVG pour les convertir en PDF

Le resolve_url() validera l'URI avant de le traiter avec la fonction drawImage() fonction. Si le schéma de l'URI ne figure pas parmi les protocoles autorisés, la fonction resolve_url() renverra une exception à l'application. 

Script PHP montrant comment gérer les URI de données, illustrant la gestion des erreurs et la vérification du protocole dans les applications web.

Si l'URI passe la validation, il sera transmis à la fonction drawImage() qui utilise la fonction file_get_contents() pour gérer la valeur de l'URI dans le xlink:href attribut. La faille de sécurité apparaît à ce stade : une attaque de désérialisation PHAR pourrait être déclenchée si un attaquant pouvait contourner la validation et passer un wrapper PHAR dans l'URI. 

Après analyse, on découvre que la validation n'est appliquée qu'aux balises dont l'image du nom est exacte. 

Exemple PHP de manipulation d'images, détaillant les fonctions permettant de dessiner des images à partir d'URL de données et de gérer le contenu des fichiers.

Par conséquent, il peut être facilement contourné en mettant en majuscule un ou plusieurs caractères dans le nom de la balise, comme Image. Par conséquent, un fichier SVG spécialement conçu utilisant Image au lieu de image pourrait échapper à cette validation. 

Dans l'étape suivante, le drawImage() est invoquée, en passant l'URI du fichier SVG à la fonction file_get_contents() . Par conséquent, la combinaison du contournement de la validation et d'une attaque de désérialisation sur un fichier PHAR permet à un attaquant de procéder à une exécution de code à distance. Cette vulnérabilité permet à un attaquant malveillant de compromettre le serveur d'application par le biais d'un fichier SVG s'il est traité par une version vulnérable de dompdf. 

Simulation d'exploitation de Dompdf

Application vulnérable

Pour simuler cette exploitation comme un scénario réel, les boursiers diplômés de OPSWAT ont développé une application web permettant la conversion de HTML en PDF à l'aide de la version 2.0.1 de la bibliothèque dompdf. Cette application permet aux utilisateurs de télécharger des types de fichiers tels que HTML, XML ou SVG, puis de les convertir en fichiers PDF. 

Capture d'écran d'un outil de conversion PDF basé sur le web, avec un avatar humanoïde, mettant l'accent sur les fonctionnalités de téléchargement et de conversion de fichiers.

Un attaquant suivra les étapes suivantes pour exploiter cette vulnérabilité dans une application utilisant une version vulnérable de dompdf (version 2.0.1) : 

Extrait de code PHP montrant l'utilisation de la bibliothèque Dompdf pour convertir un fichier HTML en un fichier PDF au format paysage
Extrait du fichier Composer.json spécifiant l'exigence de la bibliothèque Dompdf version 2.0.1 pour un projet PHP
Flux d'exploitation
Un diagramme graphique expliquant le processus en quatre étapes pour exploiter les fichiers SVG en utilisant la vulnérabilité Dompdf pour exécuter un shell inversé.

Tout d'abord, un attaquant génère un objet malveillant qui crée un shell inversé lorsque le destructeur est appelé. 

Exemple de code PHP illustrant la vulnérabilité de la désérialisation d'objets en PHP qui conduit à l'exécution de code à distance via un shell inversé.

Ensuite, l'attaquant crée un fichier PHAR contenant l'objet de métadonnées malveillant. Lorsque le fichier PHAR est invoqué par le wrapper PHAR dans le fichier file_get_content() les métadonnées sont désérialisées et l'objet spécifié est traité. Au cours de ce processus de désérialisation, elle déclenche les destructeurs et exécute le reverse shell. 

Script PHP démontrant la création d'une archive Phar qui inclut des données d'objets sérialisés pour l'exécution d'une commande à distance.

Enfin, l'attaquant insère le lien URI contenant l'enveloppe PHAR dans la valeur de xlink:href dans la balise Image afin de contourner la validation, d'exécuter un code malveillant et de télécharger ce fichier malveillant vers l'application. 

Extrait de code SVG démontrant comment intégrer un exploit de désérialisation PHP à distance par le biais d'une référence d'image

Pendant le traitement du fichier SVG malveillant téléchargé, l'application établit une connexion inverse avec l'attaquant, ce qui lui permet de compromettre le serveur d'application. 

Interface web d'un convertisseur PDF montrant des options pour télécharger et convertir des fichiers HTML/SVG en PDF, avec un modèle humain numérique
Capture d'écran d'une console Metasploit montrant une connexion TCP inversée réussie et les détails de la configuration du réseau.
Capture d'écran d'un terminal affichant la configuration du réseau et les informations d'identification extraites d'un système Unix

Sécuriser les composants open-source avec OPSWAT MetaDefender Core 

Pour détecter et atténuer la vulnérabilité CVE-2023-23924 dans dompdf, nos boursiers ont utilisé OPSWAT MetaDefender Core , un produit de cybersécurité à plusieurs niveaux offrant des technologies avancées de prévention et de détection des logiciels malveillants, y compris le SBOM. 

OPSWAT SBOM sécurise la chaîne d'approvisionnement des logiciels en fournissant un inventaire complet des composants du code source et des conteneurs. En analysant la bibliothèque dompdf et ses dépendances, OPSWAT SBOM peut rapidement identifier la présence de la version 2.0.1 vulnérable et alerter les utilisateurs du risque potentiel. 

En outre, OPSWAT SBOM peut détecter des technologies connexes, telles que les fichiers SVG et PHAR, qui sont essentielles pour comprendre et atténuer la vulnérabilité CVE-2023-23924. Cette vision holistique des composants logiciels de l'application permet aux équipes de sécurité de prendre des décisions éclairées et de prendre des mesures appropriées pour faire face aux risques identifiés. 

Interface d'analyse de sécurité montrant un fichier JavaScript bloqué en raison de vulnérabilités avec des résultats d'évaluation détaillés

Au-delà de la détection de la version vulnérable de dompdf, OPSWAT SBOM fournit également des informations précieuses sur les composants affectés, leurs versions et toutes les mises à jour ou correctifs disponibles. Ces informations permettent aux équipes de sécurité de prioriser leurs efforts de remédiation et de s'assurer que l'application est mise à jour vers une version sécurisée de dompdf, ce qui permet de remédier efficacement à la vulnérabilité CVE-2023-23924. 

Vue détaillée des vulnérabilités dans un fichier de notation d'objets JavaScript, avec une liste des risques critiques et de haute sécurité et des identifiants CVE.

En s'appuyant sur le moteur SBOM de MetaDefender Core , les organisations peuvent surveiller de manière proactive leur chaîne d'approvisionnement en logiciels, identifier les vulnérabilités potentielles des composants open-source et mettre en œuvre des stratégies d'atténuation opportunes, garantissant ainsi la sécurité et l'intégrité globales de leurs applications. 

Réflexions finales 

La découverte de CVE-2023-23924 dans la bibliothèque dompdf souligne le besoin critique de vigilance dans le paysage dynamique de la sécurité des applications. En s'appuyant sur les idées et les stratégies décrites dans ce billet, les équipes de sécurité peuvent détecter, atténuer et protéger efficacement leurs applications contre de telles vulnérabilités, garantissant ainsi la sécurité et l'intégrité globales de leur écosystème logiciel. 

Restez à jour avec OPSWAT!

Inscrivez-vous dès aujourd'hui pour recevoir les dernières mises à jour de l'entreprise, de l'entreprise, des histoires, des informations sur les événements, et plus encore.