
Exploit de prueba de concepto para CVE-2026-42203, una vulnerabilidad SSTI en el endpoint /prompts/test de LiteLLM, con verificación de devolución de llamada CEYE para pruebas autorizadas.
Este documento explica cómo iniciar un entorno local de LiteLLM y ejecutar CVE-2026-42203.py para verificar la vulnerabilidad SSTI en /prompts/test.
Úselo solo en un entorno de laboratorio local para el que tenga autorización. No apunte el script a objetivos de Internet público no autorizados.
Entre en el directorio Lab e inicie LiteLLM, Postgres y Prometheus:
docker compose up -d
Verifique el estado de los contenedores:
docker compose ps
Confirme que el servicio es accesible:
curl http://127.0.0.1:4000/
La Master_Key predeterminada es: sk-master-test-key-1234
Páselos mediante parámetros de línea de comandos:
python3 cve_2026_42203_litellm_prompts_test_ssti.py \
--auth 'sk-local-test-key' \
--ceye-domain 'your-id.ceye.io' \
--ceye-token 'your-ceye-api-token'
Significado de las variables:
LITELLM_API_KEY: clave de acceso de LiteLLM; en el entorno local de Docker suele corresponder a LITELLM_MASTER_KEY en .env.CEYE_DOMAIN: tu subdominio de CEYE, por ejemplo xxxxxx.ceye.io.CEYE_TOKEN: tu token de API de CEYE, utilizado para consultar registros de callback.Ejemplo completo:
python3 cve_2026_42203_litellm_prompts_test_ssti.py \
--target http://127.0.0.1:4000 \
--auth 'sk-local-test-key' \
--ceye-domain 'your-id.ceye.io' \
--ceye-token 'your-ceye-api-token'
Parámetros clave:
--target: dirección del servicio LiteLLM, por defecto http://127.0.0.1:4000.--auth / --api-key: clave de LiteLLM utilizada para llamar a /prompts/test.--ceye-domain: dominio de callback de CEYE.--ceye-token: token de API de CEYE. El script lo mostrará automáticamente enmascarado al imprimir.--wait: segundos de espera para el callback de CEYE, por defecto 20.--interval: intervalo en segundos para sondear los registros de CEYE, por defecto 3.--timeout: tiempo de espera de las solicitudes HTTP, por defecto 10 segundos.--insecure: añada este parámetro si el destino tiene un certificado HTTPS autofirmado; deshabilita la verificación TLS.Si CEYE recibe el callback, el script generará:
[VULNERABLE] CEYE received the callback request.
Si no se recibe ningún callback dentro del tiempo de espera, el script generará:
[NOT_VULNERABLE] CEYE did not receive the callback request within the wait window.