GHSA-2w8w-qhg4-f78j json
A stored XSS in jaeger UI might allow an attacker who controls a trace to perform arbitrary jaeger queries
published 3y ago modified 2mo ago
- cvss
- 6.5
- version 3.1, GitHub
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
Related UI vulnerability advisory: https://github.com/jaegertracing/jaeger-ui/security/advisories/GHSA-vv24-rm95-q56r
### Summary Jaeger 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.
### Details The vulnerable line is here: https://github.com/jaegertracing/jaeger-ui/blob/main/packages/jaeger-ui/src/components/TracePage/TraceTimelineViewer/SpanDetail/KeyValuesTable.tsx#L49
### PoC
1. Start a Jaeger UI 2. Save the following trace as a file: ```json { "data": [ { "traceID": "076ef819cc06c45a", "spans": [ { "traceID": "076ef819cc06c45a", "spanID": "076ef819cc06c45a", "flags": 1, "operationName": "and open 'attributes'", "references": [], "startTime": 1678196149232010, "duration": 13485, "tags": [ { "key": "sampler.type", "type": "string", "value": "{\"<img src=x onerror=alert(1)>\":\"test\"}" } ], "logs": [], "processID": "p1", "warnings": null } ], "processes": { "p1": { "serviceName": "click here", "tags": [ ] } }, "warnings": null } ], "total": 0, "limit": 0, "offset": 0, "errors": null } ``` 3. Upload that trace to Jaeger UI in order to visualise it. 4. Open the trace, open it's span's attributes. 5. XSS should be fired.
### Impact
This is a XSS on Jaeger UI. XSS can be used to run JavaScript.
Patch / fix
- go github.com/jaegertracing/jaeger 1.47.0
Is GHSA-2w8w-qhg4-f78j in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| GitHub | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| go | github.com/jaegertracing/jaeger | <1.47.0 |
1.47.0 |
Classification
- Weakness
-
- CWE-79 Improper Neutralization of Input During Web Page Generation
References
-
github.com
/jaegertracing/jaeger-ui/security/advisories/GHSA-vv24-rm95-q56r
web
-
github.com
/jaegertracing/jaeger/security/advisories/GHSA-2w8w-qhg4-f78j
web
-
github.com
/jaegertracing/jaeger
package
-
github.com
/jaegertracing/jaeger-ui/blob/main/packages/jaeger-ui/src/components/TracePage/TraceTimelineViewer/SpanDetail/
web
Sources
- GitHub Advisory GHSA-2w8w-qhg4-f78j
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.