---
id: "CVE-2026-104203"
kind: "vulnerability"
aliases: ["CVE-2026-104203"]
title: "Traccar: unauthenticated request reads protected device media files"
severity: "high"
cvss: 7.5
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["gps-tracking", "java", "package", "self-hosted", "traccar"]
not_affected_if: ["managed-hosting", "no-media-uploads", "proxy-blocks-semicolons"]
published_at: "2026-11-04T21:17:42+00:00"
first_seen_at: "2026-11-04T21:49:17+00:00"
updated_at: "2026-11-04T21:50:54+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-104203", "first_seen_at": "2026-11-04T21:49:17+00:00"}]
exploit_sources: []
---

# Traccar: unauthenticated request reads protected device media files

Traccar GPS tracking server versions 5.1 through 6.14.x let an unauthenticated attacker bypass media access checks by inserting a semicolon into the /api/media path. The attacker can then download protected uploaded media such as photos, audio or video if they know or guess a device unique ID and media filename.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the running Traccar version and confirm whether it is between `5.1` and `6.14.x`.
- Look for `/api/media/` routes reachable from the internet, and check whether a reverse proxy blocks or rewrites semicolon path parameters.

## Fix

- Traccar: upgrade to `6.15.0`.

## Timeline

- 2026-11-04T21:49:17+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-104203

## Documents

- [advisory] Vendor advisory: github.com https://github.com/traccar/traccar/security/advisories/GHSA-w59q-j9pg-pw7x
- [fix] Patch: github.com https://github.com/traccar/traccar/commit/f6f22ea32a7c6d51f2cdc923cca6d3b2621a205a
- [fix] Release notes: github.com https://github.com/traccar/traccar/releases/tag/v6.15.0

## From the sources

Traccar is an open source GPS tracking system. From 5.1 until 6.15.0, WebModule.java's MediaFilter Guice mapping and WebServer.java's Jetty ResourceServlet assign different routing meanings to path parameters at /api/media/*. An unauthenticated attacker who knows or guesses a device unique ID and media filename can insert a semicolon at the Servlet boundary, bypass MediaFilter's session and device authorization checks, and retrieve the protected media because Jetty still dispatches the noncanonical path to ResourceServlet. The demonstrated impact is read-only disclosure of a protected device media file; depending on the deployment and stored media, this could expose photographs, audio, video, or other uploaded files. The advisory does not establish directory listing, traversal, modification, account takeover, denial of service, or code execution. Reverse proxies that reject or rewrite semicolon path parameters may block the request. This issue is fixed in version 6.15.0.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
