CVE-2025-11965CVE-2025-11965是Eclipse Vert.x框架中StaticHandler组件存在的一个安全配置绕过漏洞。该漏洞影响Vert.x的4.0.0至4.5.21版本以及5.0.0至5.0.4版本。Vert.x是一个用于在JVM上构建响应式应用程序的工具包,广泛用于构建高性能的Web应用程序和微服务。
StaticHandler是Vert.x Web模块中的一个核心组件,用于提供静态文件服务,例如HTML页面、CSS样式表、JavaScript文件、图片等资源。该组件通常包含一项安全配置,用于限制对隐藏文件(以点号'.'开头的文件和目录,如.git、.svn、.htaccess等)的访问,以防止敏感信息泄露。
然而,该漏洞的核心问题在于:StaticHandler的配置仅正确限制了直接访问隐藏文件(如访问/.gitignore),但未能有效限制对隐藏目录内部文件的访问。这意味着攻击者可以通过构造特定路径来绕过安全检查,成功检索隐藏目录中的文件内容,例如访问/.git/config路径即可获取Git仓库的配置文件,其中可能包含远程仓库地址、用户信息等敏感数据。
该漏洞的CVSS评分为7.5,属于高危级别。攻击者无需认证即可通过网络远程利用,且不需要用户交互。漏洞主要影响机密性,攻击者可读取服务器上的敏感配置文件,但不会对系统完整性和可用性造成直接影响。
从技术层面分析,该漏洞的根因在于StaticHandler在处理静态文件请求时的路径过滤逻辑存在缺陷。
Vert.x的StaticHandler通过setIncludeHidden(boolean)方法来控制是否允许访问隐藏文件。当该配置设为false时,框架应当在路径解析阶段检查路径中的每个目录段和文件名是否以点号'.'开头,如果是则拒绝访问。
然而,在受影响的版本中,StaticHandler的过滤逻辑仅检查了路径的最终文件名(basename)是否为隐藏文件,而未递归检查路径中的中间目录是否为隐藏目录。例如:
- 访问/.gitignore → 正确拦截(因为文件名.gitignore以点开头)
- 访问/.git/config → 未拦截(因为最终文件名config不以点开头,但中间目录.git是隐藏目录)
这种不完整的检查逻辑导致了安全配置绕过的可能。攻击者只需在URL路径中包含隐藏目录名称加上斜杠和目标文件名,即可绕过限制访问隐藏目录内的任意文件。
利用方式非常简单:攻击者通过HTTP GET请求访问类似http://target/.git/config的URL,即可读取服务器上.git目录中的config文件。如果服务器部署在包含版本控制系统元数据的目录中(如.git、.svn、.hg等),攻击者可能获取源码仓库信息、用户凭证、远程仓库地址等敏感数据,进一步可能导致源代码泄露或供应链攻击。