GHSA-JF3G-4GWG-4H66
Vulnerability from github – Published: 2026-06-05 16:19 – Updated: 2026-06-05 16:19Summary
An authenticated commenter could store HTML in row comments that executed as script when other users hovered over the comment in the expanded form view.
Details
The comment write paths persisted the raw comment body with no server-side sanitisation;
the expanded-form sidebar then rendered the stored body and fed its data-tooltip
attribute to Tippy with allowHTML: true. Even when the editor stripped script tags
at write time, attribute-level payloads re-entered the DOM as live HTML on hover.
Impact
Stored Cross-Site Scripting against any user who views the affected row. Script runs in
the NocoDB origin with the victim's session and can read the auth JWT from
localStorage. Authentication and comment permission are required.
Credit
This issue was reported by @DavidCarliez. It was independently reported by @Mouhebbenelwafi.
{
"affected": [
{
"database_specific": {
"last_known_affected_version_range": "\u003c= 2026.05.0"
},
"package": {
"ecosystem": "npm",
"name": "nocodb"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "2026.05.1"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-47383"
],
"database_specific": {
"cwe_ids": [
"CWE-79"
],
"github_reviewed": true,
"github_reviewed_at": "2026-06-05T16:19:22Z",
"nvd_published_at": null,
"severity": "HIGH"
},
"details": "### Summary\nAn authenticated commenter could store HTML in row comments that executed as script\nwhen other users hovered over the comment in the expanded form view.\n\n### Details\nThe comment write paths persisted the raw comment body with no server-side sanitisation;\nthe expanded-form sidebar then rendered the stored body and fed its `data-tooltip`\nattribute to Tippy with `allowHTML: true`. Even when the editor stripped script tags\nat write time, attribute-level payloads re-entered the DOM as live HTML on hover.\n\n### Impact\nStored Cross-Site Scripting against any user who views the affected row. Script runs in\nthe NocoDB origin with the victim\u0027s session and can read the auth JWT from\n`localStorage`. Authentication and comment permission are required.\n\n### Credit\nThis issue was reported by [@DavidCarliez](https://github.com/DavidCarliez). It was independently reported by [@Mouhebbenelwafi](https://github.com/Mouhebbenelwafi).",
"id": "GHSA-jf3g-4gwg-4h66",
"modified": "2026-06-05T16:19:22Z",
"published": "2026-06-05T16:19:22Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/nocodb/nocodb/security/advisories/GHSA-jf3g-4gwg-4h66"
},
{
"type": "PACKAGE",
"url": "https://github.com/nocodb/nocodb"
},
{
"type": "WEB",
"url": "https://github.com/nocodb/nocodb/releases/tag/2026.05.1"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "NocoDB: Stored Cross-Site Scripting via Row Comments"
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.