漏洞详情
Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。若您Nacos未修改 secret.key,则攻击者可利用默认secret.key生成JWT Token,从而造成权限绕过访问到相关API接口。
Nacos 官方于 2023年3月2日发布 2.2.0.1 版本。该版本移除了默认鉴权插件中依赖的nacos.core.auth.plugin.nacos.token.secret.key默认值,在部署新版本时必须要输入自定义的有效token.secret.key 用于登陆后的accessToken生成。
修复建议
- 根据官方文档修改secret.key 为随机值,并注意保密。
- 升级至最新版本
修复过程
Nacos版本 2.2.0
修改Nacos配置文件
- secret.key 使用随机密码生成的Base64
- 开启鉴权:nacos.core.auth.enabled = true
修改项目配置
spring:
cloud:
nacos:
discovery:
password: nacos
username: nacos
server-addr: 127.0.0.1:8848
config:
password: nacos
username: nacos
server-addr: 127.0.0.1:8848
注册中心和配置中心用户名密码添加
启动服务
java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([localhost:8848]) tried: failed to req API:localhost:8848/nacos/v1/ns/instance. code:403 msg: <html><body><h1>Whitelabel Error Page</h1><p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p><div id='created'>Tue Nov 08 15:00:14 CST 2022</div><div>There was an unexpected error (type=Forbidden, status=403).</div></body></html>
at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:464)
at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:386)
at com.alibaba.nacos.client.naming.net.NamingProxy.deregisterService(NamingProxy.java:205)
at com.alibaba.nacos.client.naming.NacosNamingService.deregisterInstance(NacosNamingService.java:244)
如果发现报403错误,是Nacos版本问题
过滤nacoa自带的client,引入新版本。
版本更新后就可以正常启动。
踩坑:
开启鉴权后,在Nacos管理端修改Nacos密码,点击提交会提示权限校验失败,但此时密码其实已经更改了。这块要注意。
版权归原作者 小码氓 所有, 如有侵权,请联系我们删除。