一、引言
1、Nacos 简介:
服务注册与配置的中枢组件
Nacos(Naming and Configuration Service)是阿里巴巴开源的一款集动态服务发现、配置管理与服务治理为一体的中间件平台,广泛应用于Spring Cloud、Dubbo等主流微服务生态系统中。它提供了高可用的注册中心与配置中心功能,支持服务的动态注册、配置热更新、健康检查等关键能力,帮助微服务在分布式系统中进行高效通信与配置共享。
2、关键地位:
Nacos 在企业微服务体系中的核心作用
随着微服务架构在政企、金融、医疗、教育等领域的深入推进,Nacos作为系统运行的“神经中枢”,已成为许多企业微服务体系中不可或缺的一环。它承担着服务治理与配置中心的双重职责,一旦出现安全问题,极易波及整个微服务集群的稳定运行,甚至导致服务瘫痪或数据泄露。其重要性决定了Nacos安全防护必须被优先考虑,而不应仅作为普通中间件处理。
3、潜在风险:
暴露面广,漏洞利用威胁巨大
由于部署简便和文档引导原因,许多单位在部署Nacos时存在安全配置缺失的情况,如未启用认证、未配置访问控制、管理接口对外开放等问题,加之Nacos默认监听在 8848 端口,这使得其在公网和内网中的资产分布量持续增长。近年来,Nacos被频繁曝出存在严重的未授权访问、敏感信息泄露、远程命令执行(RCE)等高危漏洞,攻击者往往能够在无需认证的前提下,直接控制配置中心内容,甚至入侵微服务系统本身。
因此,深入了解Nacos的历史漏洞、攻击方式以及防护建议,对于提升组织微服务系统的整体安全水平具有重要意义。
二、Nacos 技术原理解剖
为了更清楚理解Nacos安全漏洞的成因,我们需要先对其核心架构与运行机制进行简要剖析。
1、架构组成
Nacos的核心功能主要包括两大模块:
服务注册与发现(Naming Service)
提供服务实例的注册、注销、心跳检测、健康检查;
支持 DNS 和 RPC 两种服务发现模式;
通常用于代替 Eureka、Consul 等注册中心。
配置管理(Config Service)
支持配置的统一管理、动态推送与灰度发布;
使用 Data ID + Group 的方式来组织配置;
支持监听机制,客户端配置可自动热更新。
此外,Nacos 还集成了控制台 UI 管理界面,用于可视化操作服务实例与配置内容。很多漏洞就出现在这个控制台接口的认证机制与权限校验逻辑上。
2、核心技术栈语言与框架:
Java 开发,基于 Spring Boot、Spring Cloud;
通信协议:
HTTP/REST 接口为主,支持 RPC 通信(gRPC 已支持);
存储方案:
支持嵌入式数据库(如 Derby)或外接 MySQL;
数据存储于表中(如 config_info、tenant_info);
部署模式:
单机模式(适合测试)
集群模式(生产使用,依赖持久化存储和 Raft 协议)
3
安全机制(默认薄弱)
权限控制(ACL):
需手动开启,否则默认所有接口无需认证;
身份认证:
老版本(
后续版本引入 token、用户名密码认证(JWT-based);
配置访问控制:
Data ID/Group 维度的权限可配置,但易被忽略;
接口暴露广泛:
管理接口 (/nacos/v1/ns, /nacos/v1/cs) 缺乏细粒度控制;
存在若干内部调试接口未做权限拦截(历史漏洞原因)
4
攻击面总结
攻击面 |
描述 |
|
控制台 UI |
若无认证,攻击者可直接读写配置和服务 |
|
配置读取接口 |
可通过 HTTP 请求获取敏感配置 |
|
配置发布接口 |
可写入恶意脚本、木马等配置并远程加载执行 |
|
默认数据库连接信息 |
常见配置项中含有数据库账户密码 |
|
三、Nacos历史漏洞复现
1、CVE-2021-29441
★ 漏洞类型:未授权访问
★ 影响版本:
★ 漏洞描述:攻击者可通过构造请求访问未授权接口,如 /v1/auth/users 接口,进而进行用户信息窃取。
★ 复现环境:
使用 Vulhub 项目中的环境:
cd vulhub/nacos/CVE-2021-29441docker-compose up -d
★ 复现步骤:
未授权访问用户信息
漏洞地址:
http://IP:8848/nacos/v1/auth/users?pageNo=1&pageSize=2
未授权新增用户
漏洞地址:
http://IP:8848/nacos/v1/auth/users?username=admin&password=*
通过Burpsuite抓取漏洞地址接口的数据包,将原本的GET请求参数修改为POST请求参数,并将请求头中的 User-Agent 改为 Nacos-Server,成功创建账号Test/Admin@123
回到Nacos登录界面,使用新增的账号密码登录系统,成功登录
★ 修复建议:
开启认证并设置密钥:
nacos.core.auth.enabled=truenacos.core.auth.system.type=nacosnacos.core.auth.plugin.nacos.token.secret.key=nacos.core.auth.server.identity.key=serverIdentitynacos.core.auth.server.identity.value=
2. 将nacos系统升级到 ≥ 2.0.3。
2、QVD-2023-6271
★ 漏洞类型:身份认证绕过
★ 影响版本:
0.1.0
★ 漏洞描述:由于开源服务管理平台 Nacos默认未更改 token.secret.key,远程攻击者可利用该默认密钥绕过身份验证,直接访问管理后台,进而导致系统被控制等严重后果。
★ 复现环境: