{"id":"CVE-2026-28398","aliases":["GHSA-8vm4-g489-v3w7"],"url":"https://o3.security/vulnerability/CVE-2026-28398","summary":"NocoDB: Stored Cross-Site Scripting via Comments and Rich Text Cells","details":"### Summary\nUser-controlled content in comments and rich text cells was rendered via `v-html` without sanitization, enabling stored XSS.\n\n### Details\nComments in `Comments.vue` and rich text in `TextArea.vue` were parsed by markdown-it with `html: true` and injected via `v-html`. The codebase had `vue-dompurify-html` available but these paths used raw `v-html`. Server-side, `Comment.insert()` used `extractProps()` instead of `extractPropsAndSanitize()`.\n\nCommenter role is sufficient for the comments vector; Editor role for rich text.\n\nThis issue was independently reported; see also GHSA-rcph-x7mj-54mm and GHSA-wwp2-x4rj-j8rm for the same root cause found by GitHub Security Lab.\n\n### Impact\nStored XSS — malicious scripts execute for any user viewing the comment or cell.\n\n### Credit\nThis issue was reported by [@bugbunny-research](https://github.com/bugbunny-research) (bugbunny.ai).","published":"2026-03-02T16:19:23.356Z","modified":"2026-08-12T03:51:48.720874021Z","cvss":null,"epss":{"score":0.00143,"percentile":0.0384,"asOf":"2026-08-28"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"npm","name":"nocodb","fixedVersion":"0.301.3"}],"fix":null,"references":[{"type":"WEB","url":"https://github.com/nocodb/nocodb/releases/tag/0.301.3"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/28xxx/CVE-2026-28398.json"},{"type":"ADVISORY","url":"https://github.com/nocodb/nocodb/security/advisories/GHSA-8vm4-g489-v3w7"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-28398"},{"type":"PACKAGE","url":"https://github.com/nocodb/nocodb"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:48.720874021Z"}}