{"id":"GHSA-cv23-q6gh-xfrf","summary":"WooCommerce has a Cross-Site Scripting (XSS) Vulnerability in checkout & registration forms","details":"### Impact\nA vulnerability introduced in WooCommerce 8.8 allows for cross-site scripting. A bad actor can manipulate a link to include malicious HTML & JavaScript content. While the content is not saved to the database, the links may be sent to victims for malicious purposes. The injected JavaScript could hijack content & data stored in the browser, including the session.\nThe URL content is read through the Sourcebuster.js library and then inserted without proper sanitization to the classic checkout and registration forms.\n\n### Patches\n```diff\ndiff --git a/plugins/woocommerce/client/legacy/js/frontend/order-attribution.js b/plugins/woocommerce/client/legacy/js/frontend/order-attribution.js\nindex 79411e928e1..25eaa721c54 100644\n--- a/plugins/woocommerce/client/legacy/js/frontend/order-attribution.js\n+++ b/plugins/woocommerce/client/legacy/js/frontend/order-attribution.js\n@@ -155,12 +155,16 @@\n \t\t * but it's not yet supported in Safari.\n \t\t */\n \t\tconnectedCallback() {\n-\t\t\tlet inputs = '';\n+\t\t\tthis.innerHTML = '';\n+\t\t\tconst inputs = new DocumentFragment();\n \t\t\tfor( const fieldName of this._fieldNames ) {\n-\t\t\t\tconst value = stringifyFalsyInputValue( this.values[ fieldName ] );\n-\t\t\t\tinputs += `\u003cinput type=\"hidden\" name=\"${params.prefix}${fieldName}\" value=\"${value}\"/\u003e`;\n+\t\t\t\tconst input = document.createElement( 'input' );\n+\t\t\t\tinput.type = 'hidden';\n+\t\t\t\tinput.name = `${params.prefix}${fieldName}`;\n+\t\t\t\tinput.value = stringifyFalsyInputValue( ( this.values && this.values[ fieldName ] ) || '' );\n+\t\t\t\tinputs.appendChild( input );\n \t\t\t}\n-\t\t\tthis.innerHTML = inputs;\n+\t\t\tthis.appendChild( inputs );\n \t\t}\n \n \t\t/**\n```\n\n### Workarounds\nDisabling the Order Attribution feature \n\n### References\nA8C SIRT: p3btAN-2L2-p2 (internal)\nPublic disclosure: https://developer.woocommerce.com/2024/06/10/developer-advisory-xss-vulnerability-8-8-0/\n","aliases":["CVE-2024-37297"],"modified":"2024-07-24T15:10:12Z","published":"2024-06-12T19:40:16Z","related":["CVE-2024-37297"],"database_specific":{"github_reviewed":true,"nvd_published_at":"2024-06-12T15:15:52Z","severity":"MODERATE","cwe_ids":["CWE-79","CWE-80"],"github_reviewed_at":"2024-06-12T19:40:16Z"},"references":[{"type":"WEB","url":"https://github.com/woocommerce/woocommerce/security/advisories/GHSA-cv23-q6gh-xfrf"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-37297"},{"type":"WEB","url":"https://github.com/woocommerce/woocommerce/commit/0e9888305d0cb9557e58f558526ab11cb3bcc4b4"},{"type":"WEB","url":"https://github.com/woocommerce/woocommerce/commit/915e32a42762916b745a7e663c8b69a698da8b67"},{"type":"WEB","url":"https://developer.woocommerce.com/2024/06/10/developer-advisory-xss-vulnerability-8-8-0"},{"type":"PACKAGE","url":"https://github.com/woocommerce/woocommerce"}],"affected":[{"package":{"name":"woocommerce/woocommerce","ecosystem":"Packagist","purl":"pkg:composer/woocommerce/woocommerce"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.8.0"},{"fixed":"8.8.5"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2024/06/GHSA-cv23-q6gh-xfrf/GHSA-cv23-q6gh-xfrf.json"}},{"package":{"name":"woocommerce/woocommerce","ecosystem":"Packagist","purl":"pkg:composer/woocommerce/woocommerce"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.9.0"},{"fixed":"8.9.3"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2024/06/GHSA-cv23-q6gh-xfrf/GHSA-cv23-q6gh-xfrf.json"}}],"schema_version":"1.7.3","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N"}]}