Bogue Python de 15 ans trouvé dans “plus de 350 000” projets • The Register

Au moins 350 000 projets open source seraient potentiellement vulnérables à l’exploitation via un bogue de module Python qui n’a pas été corrigé depuis 15 ans.

Mardi, la société de sécurité Trellix a déclaré que ses chercheurs en menaces avaient trouvé une vulnérabilité dans Python tarfile module, qui fournit un moyen de lire et d’écrire des ensembles de fichiers compressés, également appelés archives tar. Au début, les chasseurs d’insectes pensaient qu’il leur arrivait de rencontrer un jour zéro.

Il s’est avéré qu’il s’agissait d’environ 5500 jours : l’insecte vit sa meilleure vie depuis dix ans en attendant l’extinction.

Identifiée en tant que CVE-2007-4559la vulnérabilité a été révélée le 24 août 2007 dans un Message de la liste de diffusion Python de Jan Matejek, le gestionnaire de packages Python pour SUSE à l’époque. Il pourrait être exploité pour potentiellement écraser et détourner des fichiers sur l’ordinateur d’une victime lorsqu’une application vulnérable ouvre une archive tar malveillante via tarfile.

“La vulnérabilité ressemble essentiellement à ceci : si vous ouvrez un fichier appelé "../../../../../etc/passwd" puis faites l’administrateur untar il, /etc/passwd sera écrasé”, a expliqué Matejek à l’époque.

L’erreur de traversée du répertoire tarfile était : signalé le 29 août 2007 par Tomas Hoger, ingénieur logiciel chez Red Hat.

Mais c’était déjà couvert, en quelque sorte. La veille, Lars Gustäbel, responsable du module tarfile, avait promis un changement de code qui ajoute un vrai par défaut check_paths paramètre et une fonction d’assistance pour le TarFile.extractall() méthode qui génère une erreur si le chemin d’un fichier d’archive tar n’est pas sûr.

Mais la solution n’a pas résolu le problème TarFile.extract() méthode – qui, selon Gustäbel, ne devait “pas être utilisée du tout” – et laissait ouverte la possibilité que l’extraction de données à partir d’archives non fiables puisse causer des problèmes.

Dans un fil de commentairesGustäbel a expliqué qu’il ne considère plus cela comme un problème de sécurité. “tarfile.py ne fait rien de mal, son comportement est conforme aux directives de définition de pax et de résolution de chemin d’accès dans POSIX”, a-t-il écrit.

“Il n’y a pas d’exploit pratique connu ou possible. Je [updated] la documentation avec un avertissement indiquant qu’il peut être dangereux d’extraire des archives à partir de sources non fiables. C’est tout ce qui doit être fait à l’OMI.”

En effet, le Documentation décrit cette arme à pied :

Avertissement : N’extrayez jamais d’archives de sources non fiables sans inspection préalable. Les fichiers peuvent être créés à l’extérieur cheminpar exemple, les membres avec des noms de fichiers absolus commençant par "/" ou noms de fichiers avec deux points "..".

Et pourtant nous y sommes, avec à la fois le extract() et extractall() posent toujours la menace d’un padtraversal aléatoire.

“La vulnérabilité est une attaque par chemin d’accès dans le extract et extractall fonctionnalités du module tarfile qui permettent à un attaquant d’écraser des fichiers arbitraires en ajoutant la chaîne ‘..’ aux noms de fichiers dans une archive tar », a expliqué Kasimir Schulz, chercheur en vulnérabilités pour Trellix, dans un communiqué. article de blog.

La chaîne “..” modifie le chemin de travail actuel vers le dossier parent. Donc, en utilisant un code comme l’extrait de six lignes ci-dessous, dit Schulz, le tarfile module peut être invité à lire et à modifier les métadonnées du fichier avant de l’ajouter à l’archive tar. Et le résultat est un exploit.

import tarfile

def change_name(tarinfo):
    tarinfo.name = "../" + tarinfo.name
    return tarinfo

with tarfile.open("exploit.tar", "w:xz") as tar:
    tar.add("malicious_file", filter=change_name)

Selon Schulz, Trellix a construit un outil gratuit appelé Créosote pour rechercher CVE-2007-4559. Le logiciel a déjà trouvé le bogue dans des applications telles que Spyder IDE, un environnement scientifique open source écrit pour Python, et Polemarch, un service de gestion d’infrastructure informatique pour Linux et Docker.

La société estime le tarfile l’erreur peut être trouvée “dans plus de 350 000 projets open-source et courante dans les projets à source fermée”. Il souligne également que tarfile est un module standard dans chaque projet Python et est présent dans les frameworks créés par AWS, Facebook, Google et Intel, ainsi que dans les applications d’apprentissage automatique, d’automatisation et de conteneurs Docker.

Trellix dit qu’il travaille à rendre le code corrigé disponible pour les projets concernés.

“Avec nos outils, nous avons actuellement des correctifs pour 11 005 référentiels prêts pour les demandes d’extraction”, explique Charles McFarland, chercheur en vulnérabilités pour Trellix, dans un communiqué. article de blog. “Chaque correctif est ajouté à un référentiel fourchu et une demande d’extraction est effectuée au fil du temps. Cela aidera les individus et les organisations à prendre conscience du problème et leur donnera une solution en un clic.

“En raison de la taille des projets vulnérables, nous nous attendons à ce que ce processus se poursuive dans les semaines à venir. Cela devrait affecter 12,06 % de tous les projets vulnérables, soit un peu plus de 70 000 projets lorsqu’ils seront achevés.”

Les 87,94 % restants des projets concernés voudront peut-être envisager d’autres options possibles. ®

Leave a Reply

Your email address will not be published.