Une vulnérabilité dans le framework TensorFlow permet l'exécution de code arbitraire
Les mainteneurs de TensorFlow, le projet populaire d'apprentissage automatique et d'intelligence artificielle basé sur Python, ont abandonner la prise en charge de YAML afin de corriger une vulnérabilité critique d'exécution de code.
YAML, ou Yet Another Markup Language, est un choix pratique pour les développeurs qui recherchent un langage de sérialisation des données pour gérer les fichiers de configuration et les données en transit.
Repérée sous le nom de CVE-2021-37678, avec un score de 9.3 sur 10, la faille qui réside dans la fonction "yaml.unsafe_load()" du code TensorFlow permet aux attaquants d'exécuter du code arbitraire lorsqu'une application désérialise un modèle Keras fourni au format YAML.
Les vulnérabilités de désérialisation se produisent lorsqu'une application lit des données malformées ou malveillantes provenant de sources non authentiques, ce qui peut provoquer un déni de service (DoS) ou, pire, exécuter le code arbitraire de l'attaquant.
Après le signalement de la vulnérabilité, TensorFlow a décidé d'abandonner complètement le support de YAML et d'utiliser la désérialisation JSON à la place. "Étant donné que la prise en charge du format YAML nécessite une quantité importante de travail, nous l'avons supprimée pour le moment", indiquent les responsables du projet.
"Il est recommandé d'utiliser la sérialisation JSON au lieu de YAML, ou, une meilleure alternative, de sérialiser vers H5".
Il convient de noter que TensorFlow n'est pas le premier ou le seul projet à utiliser la fonction unsafe_load de YAML. De plus, de nombreux dépot GitHub ont utilisé et utilisent cette fonction.
La correction de CVE-2021-37678 devrait arriver dans la version 2.6.0 de TensorFlow, et sera également rétroportée dans les versions antérieures 2.5.1, 2.4.3 et 2.3.4.