
Un chercheur a publié un exploit fonctionnel pour une faille d’exécution de code à distance (RCE) affectant ReportLab Toolkit, une bibliothèque Python populaire utilisée par de nombreux projets pour générer des fichiers PDF à partir d’une entrée HTML.
L’exploit de preuve de concept (PoC) pour la faille, suivi comme CVE-2023-33733, a été publié hier sur GitHub avec un article qui fournit des détails techniques sur la vulnérabilité, augmentant ainsi la probabilité d’in-the- exploitation sauvage.
ReportLab Toolkit est utilisé par plusieurs projets en tant que bibliothèque PDF et compte environ 3,5 millions de téléchargements mensuels sur PyPI (Python Package Index).
Contourner l’ancien correctif
Le problème provient de la possibilité de contourner les restrictions du bac à sable sur ‘rl_safe_eval’, dont le rôle est d’empêcher l’exécution de code malveillant, conduisant l’attaquant à accéder à des fonctions intégrées Python potentiellement dangereuses.
La fonction ‘rl_safe_eval’ a été introduite comme mesure pour empêcher un problème d’exécution de code à distance similaire qui a été découvert en 2019 ; par conséquent, le chercheur s’est concentré sur le contourner.
Le PoC présenté récupère la fonction « type » intégrée qui aide à créer une nouvelle classe nommée « Word », qui hérite de la classe « str », qui peut contourner les contrôles de sécurité et donner accès à des attributs sensibles comme « code ».
Ensuite, ‘type’ est appelé sur lui-même pour contourner les vérifications d’évaluation sécurisées concernant les restrictions de nombre d’arguments, permettant à l’attaquant d’abuser de la fonction ‘type’ originale et intégrée pour créer de nouvelles classes et de nouveaux objets.
Cela conduit à construire une fonction malveillante à partir du bytecode d’une fonction compilée, qui, lorsqu’elle est exécutée, peut effectuer une action arbitraire. Dans l’exemple du chercheur, il appelle une commande du système d’exploitation pour créer un fichier nommé ‘exploited’ dans le répertoire « /tmp/ ».
Le chercheur note que l’intégralité du code d’exploit doit être exécuté avec eval dans une seule expression, il utilise donc l’astuce de « compréhension de liste » pour le structurer en tant que tel.

Le chercheur de Cure53, Elyas Damej, prévient dans son article que l’exploitation de CVE-2023-33733 est aussi simple que d’incorporer du code malveillant dans un fichier HTML qui sera converti en PDF sur un logiciel utilisant la bibliothèque ReportLab.

L’utilisation généralisée de la bibliothèque et un exploit public mettent de nombreux utilisateurs en danger. Les éditeurs de logiciels utilisant la bibliothèque peuvent gérer le risque résultant de la chaîne d’approvisionnement en appliquant la mise à jour de sécurité disponible.
Damej a déclaré à Breachtrace que le problème avait été signalé aux développeurs de ReportLab lors de sa découverte et qu’un correctif était fourni avec la version 3.6.13, publiée le 27 avril 2023.
Le chercheur a précisé que la vulnérabilité affecte toutes les versions antérieures de la bibliothèque.