{"id":"GHSA-pw3x-c5vp-mfc3","summary":"OpenRefine has a reflected cross-site scripting vulnerability (XSS) in GData extension (authorized.vt)","details":"### Summary\n\nThe `/extension/gdata/authorized` endpoint includes the `state` GET parameter verbatim in a `\u003cscript\u003e` tag in the output, so without escaping.\n\nAn attacker could lead or redirect a user to a crafted URL containing JavaScript code, which would then cause that code to be executed in the victim's browser as if it was part of OpenRefine.\n\n### Details\n\nThe `state` GET parameter is read from:\n\n* extensions/gdata/module/MOD-INF/controller.js:105\n\nIt is used (as `$state`) in:\n\n* extensions/gdata/module/authorized.vt:43\n\nThere is no check that the state has the expected format (base64-encoded JSON with values like \"openrefine123...\" and \"cb123...\"), or that the page was indeed opened as part of the authorization flow.\n\n### PoC\n\nNavigate to:\n\n    http://localhost:3333/extension/gdata/authorized?state=%22,alert(1),%22&error=\n\nAn alert box pops up.\n\nThe gdata extension needs to be present. No other configuration is needed; specifically, it is not required to have a client ID or client secret set.\n\n### Impact\n\nExecution of arbitrary JavaScript in the user's browser. The attacker-provided code can do anything the user can do, including deleting projects, retrieving database passwords, or executing arbitrary Jython or Closure expressions, if those extensions are also present.","aliases":["CVE-2024-47878"],"modified":"2024-10-30T19:22:39.365741Z","published":"2024-10-24T17:54:25Z","database_specific":{"github_reviewed_at":"2024-10-24T17:54:25Z","nvd_published_at":"2024-10-24T21:15:12Z","cwe_ids":["CWE-79"],"severity":"HIGH","github_reviewed":true},"references":[{"type":"WEB","url":"https://github.com/OpenRefine/OpenRefine/security/advisories/GHSA-pw3x-c5vp-mfc3"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-47878"},{"type":"WEB","url":"https://github.com/OpenRefine/OpenRefine/commit/10bf0874d67f1018a58b3732332d76b840192fea"},{"type":"PACKAGE","url":"https://github.com/OpenRefine/OpenRefine"}],"affected":[{"package":{"name":"org.openrefine:extensions","ecosystem":"Maven","purl":"pkg:maven/org.openrefine/extensions"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.8.3"}]}],"versions":["3.6-beta1","3.6-beta2","3.6-rc1","3.6.0","3.6.1","3.6.2","3.7-beta1","3.7-beta2","3.7.0","3.7.2","3.8-beta1","3.8-beta5","3.8.0","3.8.1","3.8.2"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2024/10/GHSA-pw3x-c5vp-mfc3/GHSA-pw3x-c5vp-mfc3.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N"},{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N"}]}