📅 2026年04月30日 19:04 | 🏷️ 漏洞分析 | 🤖 AI安全
SGLang 是一个被广泛使用的大语言模型(LLM)服务框架,为 ChatGPT、Kimi、Claude 等AI应用提供推理服务。2026年4月,该框架被披露存在远程代码执行漏洞(CVE-2026-5760),CVSS评分高达9.8分。攻击者可通过构造恶意Jinja2模板注入(SSTI)攻击,在托管SGLang的服务器上执行任意命令,彻底控制AI推理服务。本文进行深度分析。
📋 漏洞概述
| 属性 | 详情 |
|---|---|
| CVE编号 | CVE-2026-5760 |
| 产品 | SGLang LLM Serving Framework |
| 漏洞类型 | Jinja2 SSTI(服务器端模板注入)→ RCE |
| CVSS评分 | 9.8 / 10(满分级高危) |
| 影响版本 | SGLang < 0.4.2 |
| 利用条件 | 可向模板引擎传递用户输入(未做过滤) |
🔍 技术原理
Server-Side Template Injection (SSTI) 是一种将用户输入直接嵌入模板引擎导致代码执行的漏洞。SGLang 在处理用户传入的提示词(prompt)时,会将用户输入传递给 Jinja2 模板引擎进行渲染。由于未对用户输入做充分的转义或过滤,攻击者可以在提示词中嵌入 Jinja2 模板语法,触发任意代码执行。
攻击原理图解
# 正常用户输入(无害)
prompt = "请解释什么是人工智能"
# → 模板渲染 → 正常回答
# 攻击者构造的恶意输入
malicious_prompt = "{{ cycler.__init__.__globals__['os'].popen('id').read() }}"
成功利用后,攻击者可以:在服务器上执行任意系统命令、读取环境变量(包含API密钥和数据库密码)、安装后门、横向移动到内网其他系统。
🛡️ 修复与防御
# 1. 立即升级(推荐)
pip install sglang==0.4.2
# 2. 临时缓解:在应用层做输入过滤
def sanitize_prompt(prompt):
dangerous_patterns = ["{{", "}}", "{%", "%}"]
for pattern in dangerous_patterns:
prompt = prompt.replace(pattern, "")
return prompt
# 3. 启用WAF规则拦截{{等模板语法
# Nginx规则:
# if ($request_body ~ "\{\{.*\}\}") { return 403; }
# 4. 立即排查:检查是否已有攻击痕迹
grep -r "{{" /var/log/sglang/access.log | head -20
⚠️ 安全影响
- AI推理服务被完全控制:攻击者可操控AI输出结果,植入钓鱼内容或虚假信息
- 数据泄露:读取服务配置中的API密钥、数据库凭证
- 供应链攻击:控制AI服务后,可作为跳板攻击下游应用
- 服务中断:攻击者可能导致服务不可用或植入勒索软件
🔗 参考链接
🔔 免责声明:本文仅供安全研究人员和企业安全团队参考,严禁用于未授权测试。