找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4067

积分

0

好友

563

主题
发表于 3 天前 | 查看: 19| 回复: 0

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

幽默的BUG问责漫画

1. Nacos权限绕过漏洞详情

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

Nacos权限绕过漏洞详情截图

该漏洞主要影响版本为 1.4.2。我们可以通过简单的 API 测试来复现此问题。

场景一:未添加账号密码直接访问(返回403)
正常未认证的请求会因权限不足被拒绝。

未认证访问返回403截图

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

添加认证后正常访问截图

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

未认证但添加特定Header访问截图

请求头设置User-Agent为Nacos-Server

由此可见,Header 中加上 user-agent: Nacos-Server,确实能绕过 Nacos 的认证机制,这是一个典型的安全漏洞。

2. 漏洞修复方案

官方修复此漏洞的主要方式是升级到已修复该问题的版本。目前,升级至 2.1.1 或更高版本是推荐方案。

2.1 获取最新版本

你可以从 Nacos 官方快速开始页面或 GitHub Releases 页面下载最新版本。

Nacos官方下载页面截图

GitHub发布页面截图

直接下载链接
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_infohis_config_info 替换为你实际的数据表名。

2.4 修复后验证

完成升级与配置后,重启 Nacos 服务并进行验证。

场景复测:不添加账号密码,但添加 User-Agent: Nacos-Server Header(应返回403)
修复后,同样的绕过手段将失效,系统会正确返回 403 Forbidden 错误。

修复后未认证添加特定Header访问被拒截图

修复后返回403错误详情

测试结果表明,该权限绕过漏洞已被成功修复。

正常认证访问测试(应正常)
使用正确的账号密码进行访问,一切功能正常。

修复后正常认证访问截图

经过验证,常规认证功能不受升级影响。

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 权限绕过漏洞的修复过程并不复杂,核心在于及时升级版本并正确配置安全参数。在日常的运维工作中,建立定期的安全扫描与组件更新机制,能有效避免系统“裸奔”在公网或内网中,防患于未然。如果你在升级或修复过程中遇到其他问题,欢迎到云栈社区的相关板块交流讨论。




上一篇:Seata 1.5.1 如何根治 TCC 模式幂等、悬挂与空回滚三大难题
下一篇:Arthas实战:排查Spring Boot接口响应延迟,定位Tomcat静态资源加载性能瓶颈
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-10 11:05 , Processed in 0.420883 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表