CVE-2026-54617

CRITICALPre-NVD 9.89.8
EchelonGraph scoreHIGH confidence

Score 9.8 from GitHub Security Advisory (severity: CRITICAL) published 2026-07-02. the CNA's CVSS baseline 9.8; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: cna:github_m, ghsa
9.8
EchelonGraph verdictPlan a fixSerious severity, but no confirmed exploitation yet.
  • High severity, but no confirmed exploitation yet
CISA-KEV: Not listedEPSS: CVSS: 9.8Exploit: NoneExposed: 0

No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.

LaunchServer FileServerHandler has an unauthenticated path traversal issue

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:

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  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

  • Re-normalize() after base.resolve(path) and verify resolved.startsWith(base).
  • Reject request-targets that don't start with / (400).
  • Default-bind to 127.0.0.1; store .keys outside updatesDir.

CVSS v3
9.8
EG Score
9.8(high)
EPSS
KEV
Not listed

Published

July 2, 2026

Last Modified

July 2, 2026

Vendor Advisories for CVE-2026-54617(1)

These vendors published their own advisory mentioning this CVE — often with vendor-specific remediation steps + affected product lists not in NVD.

Patch Availability(1)

Vendor / EcosystemFixed in / PatchReleasedSource
mavenpro.gravit.launcher:launchserver-apighsa

Patches are aggregated from vendor advisories (Red Hat, Microsoft, Cisco, GitHub) and package ecosystems (OSV, GHSA). Multiple rows for the same upstream release have been deduplicated.

Weakness Classification(3)

MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.

Data Freshness Timeline

(refreshed 50× in last 7d / 50× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

  1. 2026-07-07 04:23 UTCEG score recompute
  2. 2026-07-07 04:23 UTCGHSA enrichment
  3. 2026-07-07 00:04 UTCEG score recompute
  4. 2026-07-07 00:04 UTCGHSA enrichment
  5. 2026-07-06 19:47 UTCEG score recompute
  6. 2026-07-06 19:47 UTCGHSA enrichment
  7. 2026-07-06 15:28 UTCEG score recompute
  8. 2026-07-06 15:28 UTCGHSA enrichment
  9. 2026-07-06 11:06 UTCEG score recompute
  10. 2026-07-06 11:06 UTCGHSA enrichment
  11. 2026-07-06 06:47 UTCEG score recompute
  12. 2026-07-06 06:47 UTCGHSA enrichment
  13. 2026-07-06 02:30 UTCEG score recompute
  14. 2026-07-06 02:30 UTCGHSA enrichment
  15. 2026-07-05 22:12 UTCEG score recompute
  16. 2026-07-05 22:11 UTCGHSA enrichment
  17. 2026-07-05 17:53 UTCEG score recompute
  18. 2026-07-05 17:53 UTCGHSA enrichment
  19. 2026-07-05 13:36 UTCEG score recompute
  20. 2026-07-05 13:36 UTCGHSA enrichment
  21. 2026-07-05 09:18 UTCEG score recompute
  22. 2026-07-05 09:18 UTCGHSA enrichment
  23. 2026-07-05 05:00 UTCEG score recompute
  24. 2026-07-05 05:00 UTCGHSA enrichment
  25. 2026-07-05 00:40 UTCEG score recompute
Show 25 more
  1. 2026-07-05 00:40 UTCGHSA enrichment
  2. 2026-07-04 20:23 UTCEG score recompute
  3. 2026-07-04 20:23 UTCGHSA enrichment
  4. 2026-07-04 16:06 UTCEG score recompute
  5. 2026-07-04 16:06 UTCGHSA enrichment
  6. 2026-07-04 11:47 UTCEG score recompute
  7. 2026-07-04 11:47 UTCGHSA enrichment
  8. 2026-07-04 07:29 UTCEG score recompute
  9. 2026-07-04 07:29 UTCGHSA enrichment
  10. 2026-07-04 03:12 UTCEG score recompute
  11. 2026-07-04 03:12 UTCGHSA enrichment
  12. 2026-07-03 22:52 UTCEG score recompute
  13. 2026-07-03 22:51 UTCGHSA enrichment
  14. 2026-07-03 18:34 UTCEG score recompute
  15. 2026-07-03 18:34 UTCGHSA enrichment
  16. 2026-07-03 14:17 UTCEG score recompute
  17. 2026-07-03 14:17 UTCGHSA enrichment
  18. 2026-07-03 09:59 UTCEG score recompute
  19. 2026-07-03 09:59 UTCGHSA enrichment
  20. 2026-07-03 05:42 UTCEG score recompute
  21. 2026-07-03 05:42 UTCGHSA enrichment
  22. 2026-07-03 01:24 UTCEG score recompute
  23. 2026-07-03 01:23 UTCGHSA enrichment
  24. 2026-07-02 21:06 UTCEG score recompute
  25. 2026-07-02 21:06 UTCGHSA enrichment

Frequently asked(4)

What is CVE-2026-54617?
CVE-2026-54617 is a critical vulnerability published on July 2, 2026. LaunchServer FileServerHandler has an unauthenticated path traversal issue 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…
When was CVE-2026-54617 disclosed?
CVE-2026-54617 was first published in the National Vulnerability Database on July 2, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
What is the CVSS score of CVE-2026-54617?
CVE-2026-54617 has a CVSS v4.0 base score of 9.8 (CNA self-assessment; NVD's own analysis pending).
How do I remediate CVE-2026-54617?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2026-54617, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

Explore the affected products and dependency analysis for CVE-2026-54617

Explore →

Is Your Infrastructure Affected by CVE-2026-54617?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.