去年部署了单机模式的 nacos 并开放了公网,然后今天才发现在 520 有一个陌生的配置写进来了, dataId=nacos.cfg.dataIdfoo ,配置内容为 helloworld ip 是美国的
google 了一下“nacos.cfg.dataIdfoo”,发现了 nacos 存在鉴权绕过的漏洞,《 GHSL-2020-325: Authentication bypass in Nacos - CVE-2021-29441, CVE-2021-29442 》
在 github 仓库也发现了对应的 issue ,Report a security vulnerability in nacos to bypass authentication
并且论坛也曾经有人讨论过,nacos 出现严重安全漏洞
这个漏洞 21 年就被发现了,然而我去年在根据文档部署的时候,丝毫没有注意到关于该鉴权的强调,刚刚回头去看了眼文档,在[权限认证]的子栏目,才发现上面赫然写着:
Nacos 是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。
只好赶忙把 nacos 服务下掉了,如果有兄弟们部署了最好自查一下。
1
LightHiding777 216 天前
我的也出现了
|
2
yannxia 216 天前
是一个老问题了……公司的 WAF 早就屏蔽了
|
3
07aPzknB16ui9Cp3 216 天前
服务发现为什么要放公网,我的理解是不应该这么做
|
4
adoal 216 天前
每次看到这种把内部 infra 暴露到公网的安全案例,第一反应是羡慕豪横,可以任性把花钱买来的或者走申请流程签字才拿到手的公网 IP 这么珍贵的资源用在不需要从外部访问的资源上。
|
5
Foxkeh 216 天前
如果只是运维需要, 建议至少开个 IP 白名单
|
6
cyaki 216 天前
这个端口随便扫, 能扫出一大堆
|
7
totoro52 216 天前
nacos 开公网就是一个伪命题,就好比你把冰箱放家门外面问为什么大家都要开我家冰箱一个道理。
|
8
caola 216 天前 1
防火墙直接限制,允许指定对应 IP 的访问
|
9
james122333 216 天前 via Android
从来都不用这种乱七八糟的东西 公司就除外搂
|
10
heqingpan 216 天前 via Android
OP 暴露 nacos 到外网的目的是什么?
如果只是想用控制台做运维,可以试试用 r-nacos (用 rust 重新实现的兼容服务)。 r-nacos 的控制台支持对外网暴露。 控制台使用独立端口号,然后对这个端口号所有请求加上登录与鉴权验证。 控制台登陆接口内置错误频次限制与验证码,避免对账户的暴力遍历破解。 |
11
OnionJuice 216 天前
nacos 早期版本非常搞笑,登陆只是前端验证,API 没登陆也可以随便调。
|
12
kerb15 OP |
13
heqingpan 215 天前 via Android
@kerb15 如果只是通过公网下发配置,那换 r-nacos 应该能满足你的场景。
部署 r-nacos 后只暴露独立的控制台网络端口到外网,用于下发配置。 sdk 网络端口只给内网应用使用,不要对外网暴露保证安全。 |
14
07aPzknB16ui9Cp3 215 天前
@kerb15 那么你应该想办法做一个虚拟网络而不是直接把某个设施暴露在公网,FRP 或者 TailScale 之类的就可以,比直接暴露好太多了
|
15
ztcaoll222 215 天前
关掉外网,然后搭个 vpn
|
16
lambdaq 214 天前
alibaba 的。哈哈哈
|