随着微服务架构的普及,Nacos 作为注册中心与配置中心的选择越来越广泛。作为一款优秀的开源中间件,其安全性自然备受关注。近期在安全测试中,一个关于 Nacos 的身份验证绕过漏洞(CVE-2021-29441)被频繁检出,尤其在涉及等保测评的场景下,此漏洞的修复成为运维安全工作的要点之一。

1. Nacos权限绕过漏洞详情
此漏洞的核心在于,当 Nacos 开启了账户密码认证后,其在处理请求时存在一个逻辑缺陷:如果请求头(Header)中的 User-Agent 被设置为 Nacos-Server,系统将跳过所有认证与授权检查,直接处理请求。这意味着攻击者可以借此未授权访问接口,获取或修改敏感的配置信息。

该漏洞主要影响版本为 1.4.2。我们可以通过简单的 API 测试来复现此问题。
场景一:未添加账号密码直接访问(返回403)
正常未认证的请求会因权限不足被拒绝。

场景二:添加正确账号密码访问(正常)
携带正确的认证参数可以成功访问。

场景三:不添加账号密码,但在Header中设置 User-Agent: Nacos-Server(正常,漏洞复现)
即使不提供任何账户密码,只要在请求头中植入特定的 User-Agent 值,即可绕过认证,成功访问受保护的配置接口。这直接暴露了系统的安全风险。


由此可见,Header 中加上 user-agent: Nacos-Server,确实能绕过 Nacos 的认证机制,这是一个典型的安全漏洞。
2. 漏洞修复方案
官方修复此漏洞的主要方式是升级到已修复该问题的版本。目前,升级至 2.1.1 或更高版本是推荐方案。
2.1 获取最新版本
你可以从 Nacos 官方快速开始页面或 GitHub Releases 页面下载最新版本。


直接下载链接:
https://github.com/alibaba/nacos/releases/download/2.1.1/nacos-server-2.1.1.zip
从 1.4.2 升级到 2.1.1,请务必参考官方提供的升级文档。以下是升级过程中需要特别注意的几个配置项修改。
2.2 Nacos配置文件修改
编辑配置文件 nacos/conf/application.properties,确保以下配置项正确设置。
# 第122行附近
server.tomcat.basedir=file:.
# 第148行附近,关键安全配置
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
注意:若不修改 server.tomcat.basedir,在启动新版本时可能会报错。
2.3 数据库结构更新
如果你的 Nacos 使用了外置数据库(如 MySQL),升级到 2.x 版本后,需要对数据库表结构进行更新。
/* config_info表增加字段 */
ALTER TABLE config_info ADD COLUMN encrypted_data_key text NULL COMMENT '秘钥';
/* his_config_info表增加字段 */
ALTER TABLE his_config_info ADD COLUMN encrypted_data_key text NULL COMMENT '秘钥';
请将 config_info 和 his_config_info 替换为你实际的数据表名。
2.4 修复后验证
完成升级与配置后,重启 Nacos 服务并进行验证。
场景复测:不添加账号密码,但添加 User-Agent: Nacos-Server Header(应返回403)
修复后,同样的绕过手段将失效,系统会正确返回 403 Forbidden 错误。


测试结果表明,该权限绕过漏洞已被成功修复。
正常认证访问测试(应正常)
使用正确的账号密码进行访问,一切功能正常。

经过验证,常规认证功能不受升级影响。
3. 临时缓解方案(不升级版本)
如果由于某些原因无法立即升级,在 1.4.2 版本上也可以通过修改配置文件来关闭有问题的白名单机制,作为临时缓解措施。
编辑 nacos/conf/application.properties 文件:
# 第148行附近
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
修改后重启 Nacos 服务即可。但这仅是针对此漏洞的临时修复,长期来看,升级到官方修复版本是更安全的选择。
总结
安全是微服务稳定运行的基石,对于 Nacos 这类核心中间件组件的安全漏洞更应给予足够重视。本次 CVE-2021-29441 权限绕过漏洞的修复过程并不复杂,核心在于及时升级版本并正确配置安全参数。在日常的运维工作中,建立定期的安全扫描与组件更新机制,能有效避免系统“裸奔”在公网或内网中,防患于未然。如果你在升级或修复过程中遇到其他问题,欢迎到云栈社区的相关板块交流讨论。