{"id":"CVE-2025-27109","aliases":["EUVD-2025-5079","GHSA-3qxh-p7jc-5xh6"],"status":"published","title":"Lack of Escaping of HTML in JSX Fragments allows for Cross-site Scripting in solid-js","description":"solid-js is a declarative, efficient, and flexible JavaScript library for building user interfaces. In affected versions Inserts/JSX expressions inside illegal inlined JSX fragments lacked escaping, allowing user input to be rendered as HTML when put directly inside JSX fragments. This issue has been addressed in version 1.9.4 and all users are advised to upgrade. There are no known workarounds for this vulnerability.","severity":{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00328,"percentile":0.26263,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-116","CWE-79"],"published":"2025-02-21T21:12:58Z","modified":"2026-10-28T02:30:50Z","fixes":[{"ecosystem":"npm","package":"solid-js","fixed_in":["1.9.4"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"solid-js","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.9.4"}]}]},{"source":"osv","ecosystem":"npm","package":"solid-js","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.9.4"}]}]}],"products":[{"vendor":"solidjs","product":"solid"}],"references":[{"url":"https://github.com/solidjs/solid/security/advisories/GHSA-3qxh-p7jc-5xh6","tags":["x_refsource_CONFIRM","exploit","advisory","web"]},{"url":"https://github.com/solidjs/solid/commit/b93956f28ed75469af6976a98728e313d0edd236","tags":["x_refsource_MISC","fix","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-27109","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-3qxh-p7jc-5xh6"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/27xxx/CVE-2025-27109.json","tags":["advisory"]},{"url":"https://github.com/solidjs/solid","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2025-27109","title":"Lack of Escaping of HTML in JSX Fragments allows for Cross-site Scripting in solid-js","description":"solid-js is a declarative, efficient, and flexible JavaScript library for building user interfaces. In affected versions Inserts/JSX expressions inside illegal inlined JSX fragments lacked escaping, allowing user input to be rendered as HTML when put directly inside JSX fragments. This issue has been addressed in version 1.9.4 and all users are advised to upgrade. There are no known workarounds for this vulnerability.","status":"published","published":"2025-02-21T21:12:58.218Z","modified":"2025-02-24T17:05:00.409Z","cvss":[{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","level":"high","assessor":"cna"}],"cwes":["CWE-116","CWE-79"],"updated_at":"2026-11-02T14:32:42.411662Z"}],"euvd":[{"id":"EUVD-2025-5079","description":"solid-js is a declarative, efficient, and flexible JavaScript library for building user interfaces. In affected versions Inserts/JSX expressions inside illegal inlined JSX fragments lacked escaping, allowing user input to be rendered as HTML when put directly inside JSX fragments. This issue has been addressed in version 1.9.4 and all users are advised to upgrade. There are no known workarounds for this vulnerability.","status":"published","published":"2025-02-21T21:12:58Z","modified":"2025-02-24T17:05:00Z","cvss":[{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","level":"high"}],"updated_at":"2026-11-02T20:53:25.075327Z"}],"ghsa":[{"id":"GHSA-3qxh-p7jc-5xh6","title":"Solid Lacks Escaping of HTML in JSX Fragments allows for Cross-Site Scripting (XSS)","description":"Inserts/JSX expressions inside illegal inlined JSX fragments lacked escaping, allowing user input to be rendered as HTML when put directly inside JSX fragments.\n\nFor instance, `?text=\u003csvg/onload=alert(1)\u003e` would trigger XSS here.\n```js\n  const [text] = createResource(() =\u003e {\n    return new URL(getRequestEvent().request.url).searchParams.get(\"text\");\n  });\n\n  return (\n    \u003c\u003e\n      Text: {text()}\n    \u003c/\u003e\n  );\n  ```","status":"published","published":"2025-02-25T17:49:40Z","modified":"2025-02-25T17:49:41Z","cvss":[{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","level":"high"}],"cwes":["CWE-79","CWE-116"],"updated_at":"2026-11-02T14:38:32.275316Z"}],"nvd":[{"id":"CVE-2025-27109","description":"solid-js is a declarative, efficient, and flexible JavaScript library for building user interfaces. In affected versions Inserts/JSX expressions inside illegal inlined JSX fragments lacked escaping, allowing user input to be rendered as HTML when put directly inside JSX fragments. This issue has been addressed in version 1.9.4 and all users are advised to upgrade. There are no known workarounds for this vulnerability.","status":"published","published":"2025-02-21T22:15:14.303Z","modified":"2026-06-17T09:03:03.08Z","cvss":[{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","level":"high","assessor":"secondary"}],"cwes":["CWE-79","CWE-116"],"updated_at":"2026-11-02T14:10:51.871789Z"}],"osv":[{"id":"CVE-2025-27109","title":"Lack of Escaping of HTML in JSX Fragments allows for Cross-site Scripting in solid-js","description":"solid-js is a declarative, efficient, and flexible JavaScript library for building user interfaces. In affected versions Inserts/JSX expressions inside illegal inlined JSX fragments lacked escaping, allowing user input to be rendered as HTML when put directly inside JSX fragments. This issue has been addressed in version 1.9.4 and all users are advised to upgrade. There are no known workarounds for this vulnerability.","status":"published","published":"2025-02-21T21:12:58.218Z","modified":"2026-10-28T02:30:50.830448925Z","cvss":[{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","level":"high"}],"cwes":["CWE-116","CWE-79"],"updated_at":"2026-11-02T15:44:47.386092Z"},{"id":"GHSA-3qxh-p7jc-5xh6","title":"Solid Lacks Escaping of HTML in JSX Fragments allows for Cross-Site Scripting (XSS)","description":"Inserts/JSX expressions inside illegal inlined JSX fragments lacked escaping, allowing user input to be rendered as HTML when put directly inside JSX fragments.\n\nFor instance, `?text=\u003csvg/onload=alert(1)\u003e` would trigger XSS here.\n```js\n  const [text] = createResource(() =\u003e {\n    return new URL(getRequestEvent().request.url).searchParams.get(\"text\");\n  });\n\n  return (\n    \u003c\u003e\n      Text: {text()}\n    \u003c/\u003e\n  );\n  ```","status":"published","published":"2025-02-25T17:49:40Z","modified":"2026-09-10T03:50:22.44900407Z","cvss":[{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","level":"high"}],"cwes":["CWE-116","CWE-79"],"updated_at":"2026-11-02T15:46:36.092962Z"}]}}
