NoteGen chat preview XSS via unsanitized AI/skill HTML rendering
NoteGen before 0.32.0 renders AI chat responses with markdown-it configured with html:true and injects the result into the DOM via dangerouslySetInnerHTML in chat-preview, without HTML sanitization and with CSP set to null. Attacker-controlled content that reaches the model prompt (for example a malicious skill REFERENCE.md that instructs the model to emit HTML) can cause the model response to include executable markup such as an img onerror handler. When the user views the chat response, that markup runs as JavaScript in the privileged Tauri webview, enabling arbitrary script execution in the application context (cross-site scripting).
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-17496
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 7 Nov 2026, 01:48 UTC · Revision 1
Source evidence
NoteGen chat preview XSS via unsanitized AI/skill HTML rendering
core-osv · Original sourcePublished 26 Jul 2026, 14:33 UTC
NoteGen before 0.32.0 renders AI chat responses with markdown-it configured with html:true and injects the result into the DOM via dangerouslySetInnerHTML in chat-preview, without HTML sanitization and with CSP set to null. Attacker-controlled content that reaches the model prompt (for example a malicious skill REFERENCE.md that instructs the model to emit HTML) can cause the model response to include executable markup such as an img onerror handler. When the user views the chat response, that markup runs as JavaScript in the privileged Tauri webview, enabling arbitrary script execution in the application context (cross-site scripting).
osv:CVE-2026-17496
Complete source record
{
"id": "8dffff4892d60e287ef641f84e4a1e6ad45ff74f9a96b64e7508377fd3185214",
"url": "https://osv.dev/vulnerability/CVE-2026-17496",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "NoteGen chat preview XSS via unsanitized AI/skill HTML rendering",
"summary": "NoteGen before 0.32.0 renders AI chat responses with markdown-it configured with html:true and injects the result into the DOM via dangerouslySetInnerHTML in chat-preview, without HTML sanitization and with CSP set to null. Attacker-controlled content that reaches the model prompt (for example a malicious skill REFERENCE.md that instructs the model to emit HTML) can cause the model response to include executable markup such as an img onerror handler. When the user views the chat response, that markup runs as JavaScript in the privileged Tauri webview, enabling arbitrary script execution in the application context (cross-site scripting).",
"evidence": "osv:CVE-2026-17496",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-17496",
"aliases": [
"CVE-2026-17496"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "git://github.com/codexu/note-gen",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "8a40efd90a9089dfaa6cacdd245504cce821b1d8"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "0.32.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
}
]
}
},
{
"repo": "https://github.com/codexu/note-gen",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "8a40efd90a9089dfaa6cacdd245504cce821b1d8"
},
{
"fixed": "ae3ba948c41d8a74b4a20f4c6f26fcdda2002298"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:notegen:notegen:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "0.32.0"
}
],
"source": "CPE_RANGE"
},
{
"range": [
{
"fixed": "ae3ba948c41d8a74b4a20f4c6f26fcdda2002298"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "8a40efd90a9089dfaa6cacdd245504cce821b1d8"
}
],
"source": "REFERENCES_TAG",
"original_tag": "note-gen-v0.32.0"
}
]
}
}
],
"versions": [
"note-gen-v0.31.2",
"note-gen-v0.31.1",
"note-gen-v0.31.0",
"note-gen-v0.30.1",
"note-gen-v0.30.0",
"note-gen-v0.29.2",
"note-gen-v0.29.1",
"note-gen-v0.29.0",
"note-gen-v0.28.0",
"note-gen-v0.27.9",
"note-gen-v0.27.8",
"note-gen-v0.27.7",
"note-gen-v0.27.6",
"note-gen-v0.27.5",
"note-gen-v0.27.4",
"note-gen-v0.27.3",
"note-gen-v0.27.2",
"note-gen-v0.27.1",
"note-gen-v0.27.0",
"note-gen-v0.26.5",
"note-gen-v0.26.4",
"note-gen-v0.26.3",
"note-gen-v0.26.2",
"note-gen-v0.26.1",
"note-gen-v0.26.0",
"note-gen-v0.25.4",
"note-gen-v0.25.3",
"note-gen-v0.25.2",
"note-gen-v0.25.1",
"note-gen-v0.25.0",
"note-gen-v0.24.1",
"note-gen-v0.24.0",
"note-gen-v0.23.7",
"note-gen-v0.23.6",
"note-gen-v0.23.5",
"note-gen-v0.23.4",
"note-gen-v0.23.3",
"note-gen-v0.23.2",
"note-gen-v0.23.1",
"note-gen-v0.23.0",
"note-gen-v0.22.4",
"note-gen-v0.22.3",
"note-gen-v0.22.2",
"note-gen-v0.22.1",
"note-gen-v0.22.0",
"note-gen-v0.21.3",
"note-gen-v0.21.2",
"note-gen-v0.21.1",
"note-gen-v0.21.0",
"note-gen-v0.20.3",
"note-gen-v0.20.2",
"note-gen-v0.20.1",
"note-gen-v0.20.0",
"note-gen-v0.19.11",
"note-gen-v0.19.10",
"note-gen-v0.19.9",
"note-gen-v0.19.8",
"note-gen-v0.19.7",
"note-gen-v0.19.6",
"note-gen-v0.19.5",
"note-gen-v0.19.4",
"note-gen-v0.19.3",
"note-gen-v0.17.3",
"note-gen-v0.17.2",
"note-gen-v0.17.1",
"note-gen-v0.17.0",
"note-gen-v0.16.5",
"note-gen-v0.16.4",
"note-gen-v0.16.3",
"note-gen-v0.16.2",
"app-v0.16.1",
"app-v0.16.0",
"app-v0.15.0",
"app-v0.14.0",
"app-v0.13.7",
"app-v0.13.6",
"app-v0.13.5",
"app-v0.13.4",
"app-v0.13.3",
"app-v0.13.2",
"app-v0.13.1",
"app-v0.13.0",
"app-v0.12.4",
"app-v0.12.3",
"app-v0.12.2",
"app-v0.12.1",
"app-v0.12.0",
"app-v0.11.0",
"app-v0.10.8",
"app-v0.10.7",
"app-v0.10.6",
"app-v0.10.5",
"app-v0.10.4",
"app-v0.10.3",
"app-v0.10.2",
"app-v0.10.1",
"app-v0.10.0",
"app-v0.9.1",
"app-v0.9.0",
"app-v0.8.3",
"app-v0.8.2",
"app-v0.8.1",
"app-v0.8.0",
"app-v0.7.9",
"app-v0.7.8",
"app-v0.7.7",
"app-v0.7.6",
"app-v0.7.5",
"app-v0.7.4",
"app-v0.7.3",
"app-v0.7.2",
"app-v0.7.1",
"app-v0.7.0",
"app-v0.6.4",
"app-v0.6.3",
"app-v0.6.2",
"app-v0.6.1",
"app-v0.6.0",
"app-v0.5.20",
"app-v0.5.19",
"app-v0.5.18",
"app-v0.5.17",
"app-v0.5.11",
"app-v0.5.10",
"app-v0.5.9",
"app-v0.5.8",
"app-v0.5.7",
"app-v0.5.6",
"app-v0.5.5",
"app-v0.5.4",
"app-v0.5.3",
"app-v0.5.2",
"app-v0.5.1",
"app-v0.5.0",
"app-v0.4.4",
"app-v0.4.3",
"app-v0.4.2",
"app-v0.4.1",
"app-v0.4.0",
"app-v0.3.0",
"app-v0.2.1",
"app-v0.2.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-17496.json"
}
}
],
"modified": "2026-10-28T02:30:48.678139463Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/17xxx/CVE-2026-17496.json",
"https://github.com/codexu/note-gen/releases/tag/note-gen-v0.32.0",
"https://nvd.nist.gov/vuln/detail/CVE-2026-17496",
"https://github.com/codexu/note-gen/commit/ae3ba948c41d8a74b4a20f4c6f26fcdda2002298",
"https://github.com/codexu/note-gen"
],
"provider_metadata": {
"cwe_ids": [
"CWE-79"
],
"cna_assigner": "JFROG",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/17xxx/CVE-2026-17496.json"
}
},
"related_cves": [
{
"value": "CVE-2026-17496",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 517105,
"published_at": "2026-07-26T14:33:02.602+00:00"
}