An authenticated user with Editor role can inject arbitrary HTML into Rich Text cells by bypassing the TipTap editor and sending raw HTML via the API.
The TipTap editor sanitizes HTML client-side, but the backend stores raw HTML without server-side sanitization. The stored content is rendered via v-html in TextArea.vue through NcMarkdownParser.parse() which performs no sanitization.
Stored XSS — malicious scripts execute for any user viewing the cell.
This issue was reported by @Akokonunes.
{
"github_reviewed": true,
"github_reviewed_at": "2026-03-02T19:51:55Z",
"cwe_ids": [
"CWE-79"
],
"severity": "MODERATE",
"nvd_published_at": "2026-03-02T17:16:34Z"
}