-
Notifications
You must be signed in to change notification settings - Fork 12.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于特殊构造的url造成越权漏洞的修复方案建议 #4726
Comments
感谢反馈 我是用最新的1.4.1版本 对以上几种情况进行了实验:
目前看来勉强能够拦截住。 此外我们强烈不推荐将Nacos暴露在公网环境,目前的鉴权仅能做到简单的权限隔离,远远达不到安全的程度 |
最新的漏洞修复后控制台还能登录吗?从升级的结果来看,登录 http://127.0.0.1:8848/nacos/ 已经被拒绝了。 |
目前来看是会拒绝的,就是说现在是二选一,要么应用auth=true关闭控制台,要么auth=false沿用之前不安全的版本版本。现在一般就是,生产关闭控制台,开发开启控制台了。我也在等,后面是不是有更优的升级版本。 |
我直接拉了个分支把这个问题修复了,给登录的这个http://127.0.0.1:8848/nacos/加了白名单 我这边的项目环境 日常环境 生产环境是通namespace区分的。 private static final String LOGIN = "/nacos/";
|
请下载最新的1.4.1版本,控制台不可用问题已修复了 |
之前重新下载了新版,没能ok(之后不知道是不是有ok的版本),所以就自己动手修改代码,然后制作docker镜像了,现在运行了有一段时间了。今天突然想起来这事,觉得可以分享一下,所以就挖个坟吧。 我这里有自己拉了个分支,在master分支修改了AuthFilter.java文件,排除了对静态路径以及一些使用密钥签名之后的请求了拦截。 出于安全考虑,在排除路径之前,参照spring框架、apache tomcat会对路径作的一些处理,同样也对路径做了一些特殊的处理
该版本建议开启 indetity 校验
fork项目地址 |
常见URL匹配不当造成的越权情形总结,主要有以下几种:
spring 能够灵活适应双斜杠情形的URL,如:
如:
会被处理为
url编码的字符
在其他编程语言中,可能还会有
\u0000
造成的文件名截断问题,Java中应该早已不存在该问题了在spring进行url mapping之前,apache通过request.getRequestDispatcher对url进行了规范,上面1、2种情形,在该阶段被处理成规范的url,参见
org.apache.tomcat.util.http.RequestUtil.normalize
,这与文件路径的规范化处理File.getCanonicalFile
相似。spring通过
org.springframework.web.servlet.handler.AbstractHandlerMapping
进行url mapping时,再次对url进行了处理,参见org.springframework.web.util.UrlPathHelper.getLookupPathForRequest
,该阶段对应了上面3、4两种情形所以,我觉得可以考虑参考下面两个方法对url进行一些处理
上面四种情形,特别是第三种,没翻过源码的可能都不知道还有这种情况,在做权限匹配时需要多加小心。希望能对您有所帮助。
The text was updated successfully, but these errors were encountered: