1. 先搞清楚 CVE-2026-47101 到底危险在哪LiteLLM 是一个开源的大模型统一接入网关兼容 OpenAI 标准 API可以把 OpenAI、Anthropic、Google 等上百个模型统一调度起来很多团队拿它做多模型负载均衡、成本监控和私有化部署。CVE-2026-47101 是 LiteLLM 的一个权限提升漏洞CVSS 3.1 评分 8.8属于高危级别。它的核心危害是一个只有internal_user普通权限的账号可以绕过 RBAC 角色限制把自己提升成proxy_admin管理员进而完全接管 LiteLLM 代理服务器——操控多模型调度、读取和生成 API 密钥、篡改成本监控配置。这个漏洞的根源在/key/generate这个生成虚拟 API 密钥的接口。它在处理allowed_routes字段时没有做权限校验直接把用户传入的路由配置存了下来不检查这些路由是否在当前用户的权限范围内。于是普通用户就能构造一个包含管理员专属路由的密钥用这个密钥调用管理接口完成提权。利用条件有三个攻击者手里有一个有效的internal_user角色密钥目标服务可以访问/key/generate和/user/update端点系统启用了 RBAC 角色访问控制。影响版本是 LiteLLM 1.83.14。POC 已经公开利用门槛低所以如果你在自建 LiteLLM 网关这篇就是给你写的排查和修复路径。适合谁看正在运维 LiteLLM 网关的开发、运维、安全同学用 LiteLLM 做多模型统一入口的团队以及想借这次机会把密钥管理收敛到统一通道的人。下面我会给出可复制的版本核查命令、受影响配置项清单、升级与权限收敛步骤并演示怎么通过 TaoToken 统一 Key 通道集中轮换密钥、验证修复后调用链是否恢复正常。2. 修复前的准备用 TaoToken 统一 Key 通道做密钥收敛在动手升级之前有一件事值得先做把散落在各处的模型密钥收敛到一个统一通道。原因很直接——CVE-2026-47101 的利用前提是攻击者拿到一个有效的internal_user密钥。如果你的 LiteLLM 配置里塞满了各家模型的原始 Key一旦提权成功攻击者能顺藤摸瓜拿到所有上游密钥。反过来如果 LiteLLM 只持有一个统一通道的 Key轮换和吊销的成本会低很多。TaoToken 就是这样一个统一 Key/API 通道官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。它的作用是让你用一套 Key 去调用多个模型LiteLLM 侧只需要配置一个上游 provider不用把 OpenAI、Anthropic 的原始密钥都写进 config.yaml。具体怎么做先在 TaoToken 控制台创建一个 API Key然后把它作为 LiteLLM 的唯一上游凭据。这样即使 LiteLLM 被提权泄露的也只是这一个 Key你可以在控制台一键吊销并重新生成不影响其他业务。控制台入口在这里https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite API Keys 管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。这一步不是必须的但它能让后面的密钥轮换从翻遍配置文件变成点一下按钮。我试过在升级前先把上游 Key 换成统一通道的升级完验证调用链时省了不少事。如果你暂时不想动上游配置也可以先跳过直接进入第 3 节的版本核查和升级。3. 可复制配置版本核查、升级与权限收敛3.1 版本核查命令先确认你当前跑的是哪个版本。如果你是用 pip 装的pip show litellm | grep -i version如果是用 Docker 跑的进容器查docker exec -it litellm-gateway pip show litellm | grep -i version或者直接看启动日志里的版本号docker logs litellm-gateway 21 | grep -i litellm.*version | head -5只要输出小于 1.83.14就属于受影响范围需要升级。3.2 升级命令pip 环境直接升级并固定版本pip install --upgrade litellm1.83.14 pip install litellm1.83.14Docker 环境改镜像 tag 后重建docker pull ghcr.io/berriai/litellm:1.83.14-stable docker stop litellm-gateway docker rm litellm-gateway docker run -d --name litellm-gateway -p 4000:4000 \ -v /path/to/config.yaml:/app/config.yaml \ ghcr.io/berriai/litellm:1.83.14-stable \ --config /app/config.yaml升级完再跑一次版本核查命令确认输出是 1.83.14 或更高。3.3 受影响配置项清单打开你的config.yaml重点检查这几项配置项风险点修复动作general_settings.allow_user_key_generation允许普通用户生成密钥设为 false或限制到管理员general_settings.allowed_routes未校验路由权限升级后确认补丁生效手动收紧白名单router_settings下的模型列表上游原始 Key 明文换成 TaoToken 统一 Keylitellm_settings.rbacRBAC 是否启用启用并复核角色映射model_list的api_key字段多把上游密钥收敛为单一通道 Key3.4 权限收敛配置片段把下面这段 JSON 存成config.yaml的对应部分或者作为独立配置文件引用。注意路径要和你实际部署一致{ general_settings: { allow_user_key_generation: false, allowed_routes: [ /chat/completions, /embeddings, /models ], rbac: true }, model_list: [ { model_name: gpt-4o, litellm_params: { model: openai/gpt-4o, api_base: https://taotoken.net/api, api_key: os.environ/TAOTOKEN_API_KEY } } ] }这里的关键是把api_base指向https://taotoken.net/apiapi_key用环境变量注入不要把明文写进文件。allowed_routes只放业务真正需要的路由/key/generate和/user/update不要出现在普通用户的允许列表里。如果你用的是 Claude Code 或 Cline 这类客户端配置三件套是Base URL 填https://taotoken.net/apiKey 填 TaoToken 控制台生成的 KeyModel ID 填你要用的模型名比如gpt-4o或claude-sonnet-4-20250514。Cline 的 MCP 配置里同样遵循这三件套不要混用其他来源的 Key。4. 验证请求确认修复后调用链恢复正常升级和配置改完后别急着收工跑一遍验证。先确认服务起来了curl -s http://localhost:4000/health返回{status:healthy}说明网关正常。然后测一次模型调用curl -s http://localhost:4000/v1/chat/completions \ -H Authorization: Bearer $LITELLM_MASTER_KEY \ -H Content-Type: application/json \ -d { model: gpt-4o, messages: [{role: user, content: ping}] }如果返回里有choices字段和正常的 message 内容说明调用链通了。如果返回 401检查 Key 是否正确如果返回local proxy failed检查api_base是否可达。接着验证提权路径是否被封死。用一个普通internal_user的 Key 去调/key/generate带上管理员专属路由curl -s -X POST http://localhost:4000/key/generate \ -H Authorization: Bearer $INTERNAL_USER_KEY \ -H Content-Type: application/json \ -d {allowed_routes: [/user/update, /key/delete]}修复后应该返回 403 或权限不足的错误而不是成功生成密钥。如果还能成功说明补丁没生效或者配置没改对回到第 3 节重新检查。最后确认 TaoToken 通道的调用是否正常。用统一 Key 直接打一次curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d {model: gpt-4o, messages: [{role: user, content: ping}]}返回正常说明统一通道没问题LiteLLM 侧的上游配置可以放心用。想快速验证模型对话效果可以用模型对话页https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 。5. 本篇常见错排查升级和验证过程中最容易撞上这几个报错逐个说清楚。401 Unauthorized最常见。先确认Authorization头里的 Key 是不是当前环境的。LiteLLM 的 master key 和普通 user key 权限不同调管理接口要用 master key。如果你用的是 TaoToken 的 Key确认它没有过期或被吊销去 API Keys 页核对https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。local proxy failed这个报错通常出现在 LiteLLM 转发到上游时。检查api_base是否写对TaoToken 的地址是https://taotoken.net/api不要漏掉/api后缀也不要多加/v1LiteLLM 会自己拼。另外确认容器能访问外网DNS 解析正常。reading choices 报错返回体里没有choices字段多半是上游返回了错误结构。先看完整响应体如果是{error: ...}按错误信息处理。常见原因是 Model ID 写错比如把gpt-4o写成gpt4o。Model ID 要和 TaoToken 文档里列的一致文档入口https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。OAuth 相关报错如果你用 Claude Code 接入可能会碰到 OAuth 流程问题。Claude Code 的接入配置参考https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude-code-anthropicutm_campaignrewrite 。确认 Base URL、Key、Model ID 三件套都填对OAuth 回调地址不要带多余路径。升级后服务起不来检查config.yaml语法1.83.14 对部分字段做了校验加强。用python -c import yaml; yaml.safe_load(open(config.yaml))验证 YAML 合法性。如果报字段未知对照官方 release note 删掉废弃字段。提权测试仍然成功说明补丁没生效。确认pip show litellm的版本确实是 1.83.14 以上Docker 的话确认镜像 tag 没写错。还有一种可能是你改了代码但没重启服务LiteLLM 需要重启才能加载新版本。6. 把密钥轮换和长期编码收敛到统一通道修完这个漏洞建议顺手做两件事。第一把所有internal_user和管理员密钥轮换一遍。CVE-2026-47101 的 POC 已公开在野利用虽然还没发现但密钥可能已经在你不知道的时候被复制过。轮换时用 TaoToken 控制台集中操作比逐个改配置文件快得多。第二如果你团队长期做编码和 Agent 类任务可以考虑把调用通道固定下来。TaoToken 的 Coding Plan 适合长期编码场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。它的好处是 Key 和额度集中管理LiteLLM 侧只配一个上游安全边界清晰。接入文档在这里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite API Keys 管理在这里https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。升级完 LiteLLM、验证完调用链之后把上游 Key 换成统一通道的下次再出类似漏洞你的响应时间会从排查所有配置缩短到吊销一个 Key。