Les chercheurs d'Oligo Security ont découvert trois problèmes de sécurité critiques dans le paquet open source TorchServe, utilisé pour desservir et mettre à l'échelle les modèles PyTorch en production. Appelées ShellTorch, ces failles pourraient offrir à un attaquant d’exécuter des codes arbitraires sur les systèmes affectés. Elles sont capables de lui octroyer le privilège de voir, modifier, voler et supprimer des modèles d'intelligence artificielle et des données sensibles sur le serveur TorchServe. « Ces vulnérabilités peuvent entièrement compromettre l'infrastructure d'IA des plus grandes entreprises du monde », explique Oligo Security. « Elles peuvent conduire à une exécution de code à distance en chaîne complète, et exposer des dizaines de milliers de services et d'utilisateurs finaux, y compris certaines des plus grandes entreprises du monde, à l'accès non autorisé et à l'insertion de modèles d'IA malveillants, et potentiellement à une prise de contrôle complète du serveur ». Deux des vulnérabilités découvertes, référencées CVE-2023-43654 et CVE-2023-1471, ont des scores CVSS respectifs de 9,8 et 9,9, tandis que la troisième n'a pas encore d'entrée CVE.
Au moment de servir des modèles en production, TorchServe provisionne la récupération des fichiers de configuration pour les modèles à partir d'une URL distante en utilisant le flux de travail ou l'API d'enregistrement de modèle. Dans l'une des vulnérabilités (CVE-2023-43654), il a été découvert que la logique de l'API pour une liste autorisée de domaines accepte tous les domaines comme URL valides, ce qui entraîne une contrefaçon de requête côté serveur (Server-Side-Request-Forgery, SSRF). « Cette vulnérabilité permet à un attaquant de télécharger un modèle malveillant qui sera exécuté par le serveur, entraînant ainsi une exécution de code arbitraire », a déclaré Oligo Security.
Les principaux environnements de conteneurs aussi affectés
Un autre problème lié à la faille CVE-2023-1471 fait que TorchServe est exposé à une exécution de code à distance critique via la vulnérabilité de désérialisation SnakeYAML, laquelle résulte d’une mauvaise utilisation de la bibliothèque open source (Java) SnakeYAML. « Les modèles d'IA peuvent inclure un fichier YAML pour déclarer leur configuration souhaitée. En téléchargeant un modèle avec un fichier YAML malveillant, nous avons pu déclencher une attaque de désérialisation non sécurisée qui a entraîné l'exécution de code sur la machine », a indiqué Oligo Security. La troisième faille (sans référence CVE à ce jour) est une vulnérabilité de mauvaise configuration dans l'API de gestion de TorchServe, responsable de la gestion des modèles au moment de l'exécution. L'interface API est configurée pour écouter sur le port 0.0.0.0 par défaut, ce qui la rend accessible aux requêtes externes, privées et publiques. L’exploitation des trois vulnérabilités combinées peut permettre l'exécution de code à distance avec des privilèges élevés, et déboucher sur une prise de contrôle complète du serveur.
Selon Oligo Security, le conteneur d'apprentissage profond (Deep Learning Container, DLC) d'Amazon et de Google s'est révélé vulnérable à ShellTorch. Les services managés d'Amazon et de Google comprennent des contrôles compensatoires qui réduisent l'exposition. « AWS a connaissance des vulnérabilités CVE-2023-43654 et CVE-2022-1471 présentes dans les versions 0.3.0 à 0.8.1 de PyTorch TorchServe, qui utilisent une version de la bibliothèque open source SnakeYAML v1.31 », a déclaré Amazon dans un avis du 2 octobre à propos des vulnérabilités. « La version 0.8.2 de TorchServe résout ces problèmes. AWS recommande aux clients qui utilisent le conteneur PyTorch inference Deep Learning Containers (DLC) 1.13.1, 2.0.0, ou 2.0.1 dans EC2, EKS, ou ECS publié avant le 11 septembre 2023, de mettre à jour vers la version 0.8.2 de TorchServe ». Amazon a précisé que les clients utilisant les Deep Learning Containers (DLC) d'inférence PyTorch via SageMaker ne sont pas concernés. Meta, co-mainteneur avec Amazon de la bibliothèque open source TorchServe, a rapidement corrigé l'API de gestion par défaut pour atténuer la troisième vulnérabilité. Oligo Security a déclaré avoir travaillé avec les mainteneurs de PyTorch pour la divulgation responsable de ces failles.