Skip to main content
Press slash or control plus K to focus the search. Use the arrow keys to navigate results and press enter to open a threat.
Reconnecting to live updates…

Pro.gravit.launcher:launchserver api: LaunchServer FileServerHandler has an unauthenticated path traversal issue (CVE-2026-54617)

0
Critical
Published: 07/02/2026 (07/02/2026, 20:49:18 UTC)
Source: GCVE Database
Product: pro.gravit.launcher:launchserver-api

Description

### Summary An unauthenticated path traversal in the LaunchServer HTTP file server (`FileServerHandler`) lets any remote actor read **any file** readable by the LaunchServer process (e.g. `../../../../etc/passwd`). This is a generic arbitrary-file-read primitive, so the fix must address the traversal itself, not any specific file. The readable files include the server's own secrets, which turns this from information disclosure into full compromise: the ECDSA private key that signs access JWTs (`.keys/ecdsa_id`), the refresh-token salt (`.keys/legacySalt`), and `LaunchServer.json` (database credentials). With the signing key an attacker mints a valid access token for any account, including admins. That is a full authentication bypass. Pre-auth, default config, port 9274. **Affected:** GravitLauncher LaunchServer ≤ 5.7.11 (the LaunchServer application; the published `pro.gravit.launcher:*-api` Maven artifacts do not contain the vulnerable code). ### Details In `FileServerHandler.channelRead0`: ```java path = Paths.get(IOHelper.getPathFromUrlFragment(uri)).normalize().toString().substring(1); // line 194 File file = base.resolve(path).toFile(); // line 200 - no second normalize() ``` `substring(1)` blindly strips a leading slash, assuming the request-target always starts with `/`. Netty's `HttpServerCodec` accepts a request-target **without** a leading slash verbatim (`decoderResult().isSuccess() == true`). For such a target, `normalize()` cannot collapse the leading `..`, `substring(1)` turns `../` into `./` (leaving the remaining `..`), and `base.resolve(path)`, which is not re-normalized, resolves **outside** `updatesDir`. `file.isHidden()` (line 201) is checked only on the final path component, so targets that don't start with a dot (`ecdsa_id`, `rsa_id`, `legacySalt`, `LaunchServer.json`) are served even with `showHiddenFiles=false`. The file server is enabled by default (`netty.fileServerEnabled=true`) and bound to `0.0.0.0:9274`. No auth handler precedes `FileServerHandler`; `WebSocketServerProtocolHandler("/api")` forwards non-WebSocket / non-`/api` requests down to it, so the attack is a plain HTTP GET (no WebSocket). ### PoC Reproduced on a from-source build of v5.7.11 (Netty 4.2.12). **Must use a raw socket.** curl/browsers/HTTP libraries normalize the path and prepend `/`, hitting the safe branch (false "not reproducible"). ``` printf 'GET ../../.keys/ecdsa_id HTTP/1.1\r\nHost: x\r\n\r\n' | nc <host> 9274 ``` Returns the raw ECDSA private-key bytes. Same for `../../.keys/rsa_id`, `../../.keys/legacySalt`, `../../LaunchServer.json`. `%2e%2e/...` (no leading slash) also works. Depth-robust arbitrary read: `../../../../../../etc/passwd`. Control (confirms the root cause): `GET /../../.keys/ecdsa_id` (WITH leading slash) → 404. Only the no-leading-slash form escapes. ### Impact Unauthenticated remote read of any file the process can access. What that exposes: - `.keys/ecdsa_id`: the key that signs access JWTs. With it, an attacker mints a valid token for any account, including admins, so this is a full authentication bypass. - `.keys/legacySalt`: lets an attacker forge refresh tokens. - `LaunchServer.json`: database credentials. - Any other file readable by the process (config, logs, system files). Deployment note: a normalizing L7 reverse proxy (stock nginx `location / { proxy_pass ...; }`) rejects the no-leading-slash request (400) and collapses leading-slash traversal, blocking the primary vector. But the default bind is `0.0.0.0:9274`, so protection relies on firewalling the backend port; L4/TCP proxies (HAProxy TCP, nginx `stream`, CF Spectrum) and direct exposure remain exploitable. ### Suggested fix 1. Re-`normalize()` after `base.resolve(path)` and verify `resolved.startsWith(base)`. 2. Reject request-targets that don't start with `/` (400). 3. Default-bind to `127.0.0.1`; store `.keys` outside `updatesDir`.

CVSS v3.1

Score 9.8critical

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Affected software

Mavenghsa
pro.gravit.launcher:launchserver-api
Affected versions
<=5.7.11

Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.

AI-Powered Analysis

Machine-generated threat intelligence

AILast updated: 07/02/2026, 23:05:42 UTC

Technical Analysis

The LaunchServer HTTP file server component (FileServerHandler) in GravitLauncher LaunchServer versions up to 5.7.11 has an unauthenticated path traversal flaw. The vulnerability is due to improper handling of request-targets that do not start with a slash, causing the path normalization logic to fail and allowing resolution of file paths outside the intended updates directory. This enables attackers to read any file readable by the LaunchServer process, including critical secrets such as the ECDSA private key (.keys/ecdsa_id), refresh-token salt (.keys/legacySalt), and database credentials (LaunchServer.json). The file server is enabled by default, bound to 0.0.0.0:9274, and does not require authentication, making exploitation straightforward via raw socket HTTP GET requests without a leading slash. Normal HTTP clients and proxies that normalize paths block this vector, but direct exposure or TCP-level proxies remain vulnerable. The flaw allows attackers to forge valid access tokens for any account, including admins, resulting in full authentication bypass and system compromise.

Potential Impact

Unauthenticated remote attackers can read arbitrary files accessible to the LaunchServer process, including private keys used to sign JWT access tokens, refresh-token salts, and database credentials. This enables attackers to mint valid access tokens for any user, including administrators, effectively bypassing authentication. The exposure of these secrets can lead to full system compromise, unauthorized access, and data breaches. The vulnerability also allows reading other sensitive files such as configuration and system files, increasing the attack surface.

Mitigation Recommendations

Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Suggested fixes include re-normalizing the resolved file path and verifying it remains within the intended base directory, rejecting request targets that do not start with a leading slash, and binding the file server to localhost (127.0.0.1) by default. Deployments should firewall or restrict access to port 9274 to prevent direct exposure. Use of a normalizing L7 reverse proxy (e.g., stock nginx with path normalization) can block the primary attack vector by rejecting no-leading-slash requests. Until an official fix is available, restrict network access to the vulnerable service and monitor for suspicious activity.

Pro Console: star threats, build custom feeds, automate alerts via Slack, email & webhooks.Upgrade to Pro

Technical Details

Gcve Source
db.gcve.eu
Osv Id
GHSA-5g75-477j-2c2f
Osv Schema Version
1.4.0
Aliases
["CVE-2026-54617"]
Ecosystems
["Maven"]
Database Specific Severity
CRITICAL
Cvss Version
3.1

Threat ID: 6a46ecae27e9c7971943b8d9

Added to database: 07/02/2026, 22:56:46 UTC

Last enriched: 07/02/2026, 23:05:42 UTC

Last updated: 07/31/2026, 12:27:13 UTC

Views: 77

Community Reviews

0 reviews

Crowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.

Sort by
Loading community insights…

Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.

Actions

PRO

Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.

Please log in to the Console to use AI analysis features.

Need more coverage?

Upgrade to Pro Console for AI refresh and higher limits.

For incident response and remediation, OffSeq services can help resolve threats faster.

Latest Threats

Breach by OffSeqOFFSEQFRIENDS — 25% OFF

Check if your credentials are on the dark web

Instant breach scanning across billions of leaked records. Free tier available.

Scan now
OffSeq TrainingCredly Certified

Lead Pen Test Professional

Technical5-day eLearningPECB Accredited
View courses