Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as non-readonly user
-
DeliveryCraft DELETE /api/permissions with extra JSON key
-
ExploitInject key concatenated into SQL WHERE
-
ExecutionUse blind boolean/error oracle responses
-
ImpactExtract admin email, password hashes and salts
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Traccar account that is NOT read-only and that holds access to at least one object usable in a permission pair (e.g. a device/group/user link), per the description. Exploitation is performed by submitting DELETE /api/permissions with an extra, attacker-chosen JSON key beyond the two validated keys; that key name is concatenated into the SQL WHERE clause. Limiting factors: unauthenticated requests are explicitly rejected, the account must have write (non-readonly) permissions, and only affects Traccar versions prior to 6.14.0 - patched instances validate that the permission map contains exactly two keys. |
| Impact | This is a genuine, well-substantiated SQL injection (CWE-89) confirmed by vendor advisory GHSA-jx5h-fxhc-cc9w and a specific fix commit, with the root cause visible in the diff (DatabaseStorage.removePermission concatenated every JSON map key as a SQL column identifier while Permission.java validated only two). The vendor CVSS of 7.1 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N) is well-calibrated: network-reachable and low-complexity, but gated by PR:L - the attacker must already be an authenticated, non-readonly user holding a usable permission-pair object, so this is not an unauthenticated pre-auth breach. Impact is real: a blind boolean/error oracle enables extraction of arbitrary DB values including administrator email, password hashes and salts (justifying C:H), plus conditional permission-row deletion (I:L). No EPSS score, no CISA KEV listing, and no public POC were provided, so this is 'no public exploit identified at time of analysis' - a patch-and-prioritize item rather than an actively-exploited emergency. The main risk amplifier is that credential-hash exfiltration can escalate a low-privilege account toward full admin compromise, which elevates practical severity above the raw score for internet-exposed Traccar instances. |
| Exploit ScenarioDerived | An authenticated non-readonly Traccar user who has access to any object usable in a permission pair sends DELETE /api/permissions with a JSON body containing the two legitimate keys plus a third attacker-controlled key whose name is injected verbatim into the SQL WHERE clause. By crafting boolean or error conditions in that key, the attacker turns the endpoint into a blind oracle and iteratively extracts the administrator's email, password hash and salt. No public POC was provided, but the fix commit and advisory fully disclose the mechanism. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 17, 2026
SQL injection in the Traccar GPS tracking server affects all versions prior to 6.14.0 and allows an authenticated, non-read-only user to extract arbitrary database values - including administrator email addresses, password hashes and salts - or to conditionally delete permission rows. The attacker submits a DELETE /api/permissions request with an extra, attacker-chosen JSON key: only the first two keys are validated by Permission.java, while DatabaseStorage.removePermission() concatenates every map key into the SQL WHERE clause as a column identifier, turning the key name into injectable SQL and providing a blind boolean/error oracle. Exploitation requires a valid account with write permissions and access to at least one object usable in a permission pair; unauthenticated requests are explicitly rejected (CVSS 3.1 7.1, PR:L, C:H/I:L). No public exploit code has been identified at time of analysis, and a vendor-released patch (6.14.0) is available.
RemediationAI
Upgrade Traccar to version 6.14.0 or later, which enforces that a permission map contains exactly two entries and builds the DELETE query from explicit owner/property identifiers with bound parameters; the tracked fix is upstream commit cd0dbaf5df806139f508cbafaba20b34e62b499e and the release notes are at https://github.com/traccar/traccar/releases/tag/v6.14.0 (advisory: https://github.com/traccar/traccar/security/advisories/GHSA-jx5h-fxhc-cc9w). No vendor-released patch exists for versions before 6.14.0, so where upgrading immediately is not possible, compensating controls are needed: strip write/manage privileges from non-administrative accounts so they cannot reach DELETE /api/permissions (trade-off: legitimate device/group sharing and permission maintenance must then be performed by an administrator), and restrict the /api/permissions route at a reverse proxy or API gateway to trusted administrative source addresses or roles (trade-off: breaks legitimate remote permission management from untrusted networks). Because the injection is blind, restricting the database account used by Traccar to the minimum required schema privileges reduces the ability to destroy or modify data but does not prevent extraction of read-accessible values such as password hashes and salts, so it should be treated as a hardening measure only. Any instance that ran a vulnerable version with untrusted write-capable accounts should also rotate Traccar user credentials and review permission rows for unexpected deletions, since the same primitive can conditionally delete records.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-89, SQL injection, in a Java application where request JSON is bound to a LinkedHashMap<String, Long> inside org.traccar.model.Permission. Because Jackson binds arbitrary extra keys into that map, and because Permission.java only inspected the first two entries, a third key could reach DatabaseStorage.removePermission(). That method built its WHERE clause by joining every map key with " = ?" (for example, key + " = ?" concatenated per entry), so the attacker-controlled key was inserted directly into the SQL text as a column name rather than being passed as a bound parameter - with the corresponding value still bound, yielding classic blind/boolean and error-based extraction. The attacker must already be authenticated with a non-readonly account that can reference at least one object (device, group, user, etc.) to form a permission pair, which limits, but does not eliminate, the impact. The fix commit cd0dbaf5df806139f508cbafaba20b34e62b499e both hardens the model - rejecting maps whose size is not exactly 2 with an IllegalArgumentException - and rewrites the query to use Permission.getKey(getOwnerClass()) and Permission.getKey(getPropertyClass()) with two explicitly bound parameters, removing any dependence on map key names in SQL construction.
Know when Java gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
Network REST endpoint with low complexity but requires an authenticated non-readonly account (PR:L); oracle leaks admin hashes/salts (C:H) and allows conditional permission-row deletion (I:L), no availability impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
Traccar is an open source GPS tracking system. Prior to 6.14.0, an authenticated, non-readonly user with access to an object usable in a permission pair can submit DELETE /api/permissions with an extra attacker-controlled JSON key. Permission(LinkedHashMap<String, Long>) in src/main/java/org/traccar/model/Permission.java validates only the first two keys, but DatabaseStorage.removePermission() in src/main/java/org/traccar/storage/DatabaseStorage.java concatenates every map key into the SQL WHERE clause as a column identifier. The extra key therefore becomes attacker-controlled SQL and provides a blind boolean or error oracle that can extract arbitrary database values, including administrator email, password hashes, and salts, or conditionally delete permission rows. Unauthenticated requests are rejected. This issue is fixed in 6.14.0.
Technical POC Analysis
CWE-89.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity SQL injection flaw in Traccar's GPS tracking server (all versions before 6.14.0) lets any authenticated user with write access manipulate backend database queries, potentially exposing administrator email addresses and password hashes or deleting access-control records. Because Traccar often underpins fleet, asset, and lone-worker tracking operations, credential theft or permission tampering here could expose location data and disrupt safety-critical monitoring. Leadership should care about the elevated insider and compromised-account risk this creates across the organization's tracked assets and workforce.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
EUVD-2026-82388
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB