Refine your search
1 vulnerability found for by Eclipse Ditto
CVE-2026-107503 (GCVE-0-2026-107503)
Vulnerability from cvelistv5
Published
2026-10-08 09:32
Modified
2026-10-15 13:09
Severity ?
VLAI Severity ?
EPSS score ?
CWE
Summary
In Eclipse Ditto versions 3.6.0 to 3.8.13 and 3.9.0 to 3.9.7, the Ditto Explorer UI loads its complete environment configuration, including the Ditto API URI and the OpenID Connect (OIDC) provider settings, from an arbitrary
cross-origin URL supplied in the environmentsURL query parameter. It adopts this configuration without user confirmation and persists it in the browser's localStorage. A crafted link can therefore set an attacker-controlled OIDC
authority with autoSso enabled. The UI then automatically starts a login at the genuine identity provider but exchanges the returned authorization code together with its PKCE code_verifier at an attacker-controlled token
endpoint. This lets the attacker redeem the code for the victim's access and refresh tokens. Alternatively, an attacker-controlled api_uri causes the UI to send the victim's bearer token or Basic credentials to the attacker. Because
the configuration is persisted, later visits to the UI without the crafted link repeat the token theft. In versions 3.9.0 to 3.9.7, the Swagger UI OIDC integration of the Helm chart and the Docker Compose deployment is affected in
the same way, but requires the user to start the login. The issue is fixed in 3.8.14 and 3.9.8.
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| Eclipse Ditto | Ditto Explorer UI |
Version: 3.6.0 ≤ Version: 3.9.0 ≤ |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-107503",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-10-08T14:24:20.513382Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-10-08T14:27:38.370Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Ditto Explorer UI",
"repo": "https://github.com/eclipse-ditto/ditto",
"vendor": "Eclipse Ditto",
"versions": [
{
"lessThan": "3.8.14",
"status": "affected",
"version": "3.6.0",
"versionType": "semver"
},
{
"lessThan": "3.9.8",
"status": "affected",
"version": "3.9.0",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "IAmNobodyAnyway"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "In Eclipse Ditto versions 3.6.0 to 3.8.13 and 3.9.0 to 3.9.7, the Ditto Explorer UI loads its complete environment configuration, including the Ditto API URI and the OpenID Connect (OIDC) provider settings, from an arbitrary\ncross-origin URL supplied in the \u003ccode\u003eenvironmentsURL\u003c/code\u003e query parameter. It adopts this configuration without user confirmation and persists it in the browser\u0027s localStorage. A crafted link can therefore set an attacker-controlled OIDC\n\u003ccode\u003eauthority\u003c/code\u003e with \u003ccode\u003eautoSso\u003c/code\u003e enabled. The UI then automatically starts a login at the genuine identity provider but exchanges the returned authorization code together with its PKCE \u003ccode\u003ecode_verifier\u003c/code\u003e at an attacker-controlled token\nendpoint. This lets the attacker redeem the code for the victim\u0027s access and refresh tokens. Alternatively, an attacker-controlled \u003ccode\u003eapi_uri\u003c/code\u003e causes the UI to send the victim\u0027s bearer token or Basic credentials to the attacker. Because\nthe configuration is persisted, later visits to the UI without the crafted link repeat the token theft. In versions 3.9.0 to 3.9.7, the Swagger UI OIDC integration of the Helm chart and the Docker Compose deployment is affected in\nthe same way, but requires the user to start the login. The issue is fixed in 3.8.14 and 3.9.8."
}
],
"value": "In Eclipse Ditto versions 3.6.0 to 3.8.13 and 3.9.0 to 3.9.7, the Ditto Explorer UI loads its complete environment configuration, including the Ditto API URI and the OpenID Connect (OIDC) provider settings, from an arbitrary\ncross-origin URL supplied in the environmentsURL query parameter. It adopts this configuration without user confirmation and persists it in the browser\u0027s localStorage. A crafted link can therefore set an attacker-controlled OIDC\nauthority with autoSso enabled. The UI then automatically starts a login at the genuine identity provider but exchanges the returned authorization code together with its PKCE code_verifier at an attacker-controlled token\nendpoint. This lets the attacker redeem the code for the victim\u0027s access and refresh tokens. Alternatively, an attacker-controlled api_uri causes the UI to send the victim\u0027s bearer token or Basic credentials to the attacker. Because\nthe configuration is persisted, later visits to the UI without the crafted link repeat the token theft. In versions 3.9.0 to 3.9.7, the Swagger UI OIDC integration of the Helm chart and the Docker Compose deployment is affected in\nthe same way, but requires the user to start the login. The issue is fixed in 3.8.14 and 3.9.8."
}
],
"impacts": [
{
"capecId": "CAPEC-593",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-593 Session Hijacking"
}
]
},
{
"capecId": "CAPEC-176",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-176 Configuration/Environment Manipulation"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 7.1,
"baseSeverity": "HIGH",
"exploitMaturity": "NOT_DEFINED",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "HIGH",
"userInteraction": "ACTIVE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:L/VA:N/SC:H/SI:H/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "LOW",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-15",
"description": "CWE-15 External control of system or configuration setting",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-346",
"description": "CWE-346 Origin Validation Error",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-522",
"description": "CWE-522 Insufficiently Protected Credentials",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-15T13:09:30.155Z",
"orgId": "e51fbebd-6053-4e49-959f-1b94eeb69a2c",
"shortName": "eclipse"
},
"references": [
{
"url": "https://gitlab.eclipse.org/security/cve-assignment/-/work_items/380"
},
{
"url": "https://github.com/eclipse-ditto/ditto/security/advisories/GHSA-8767-g5qv-9jcf"
},
{
"url": "https://gitlab.eclipse.org/security/vulnerability-reports/-/work_items/1207"
},
{
"url": "https://github.com/eclipse-ditto/ditto/commit/d4e51ba20e53c73e3b24e64d4aca57f6079d9ca1"
},
{
"url": "https://github.com/eclipse-ditto/ditto/commit/71061f0b01df596fad80fb24502eb1e852ea6909"
},
{
"url": "https://github.com/eclipse-ditto/ditto/commit/ee65b8cd9b7219401dcac2c25b79adc8cee4a5ba"
},
{
"url": "https://eclipse.dev/ditto/release_notes_398.html"
},
{
"url": "https://eclipse.dev/ditto/release_notes_3814.html"
}
],
"source": {
"discovery": "UNKNOWN"
},
"x_generator": {
"engine": "Vulnogram 1.0.5"
}
}
},
"cveMetadata": {
"assignerOrgId": "e51fbebd-6053-4e49-959f-1b94eeb69a2c",
"assignerShortName": "eclipse",
"cveId": "CVE-2026-107503",
"datePublished": "2026-10-08T09:32:47.485Z",
"dateReserved": "2026-10-08T09:09:18.594Z",
"dateUpdated": "2026-10-15T13:09:30.155Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}