GHSA-6MHR-74X2-98V9

Vulnerability from github – Published: 2026-06-17 14:07 – Updated: 2026-07-20 21:20
VLAI
Summary
NocoDB: Stored Cross-Site Scripting via Secure Attachment
Details

Summary

With NC_SECURE_ATTACHMENTS=true, an authenticated uploader could deliver .html or .svg attachments that the browser rendered inline from the NocoDB origin instead of forcing a download.

Details

The signed attachment handler stored response-header overrides under PascalCase keys (ResponseContentDisposition, ResponseContentType) while the controller that served the file read them under lowercase-hyphen names (response-content-disposition). The mismatch dropped the Content-Disposition: attachment header, leaving Express to auto-render .html, .svg, and similar inline. The fix corrects the key case and additionally forces Content-Disposition: attachment and Content-Type: application/octet-stream for any MIME type not on the preview allowlist.

Impact

Stored Cross-Site Scripting in the NocoDB origin from inline-rendered uploads. Script executing in the victim's browser can read the auth JWT from localStorage. Exploitation requires authenticated upload permission and the secure-attachment mode to be enabled.

Credit

This issue was reported by @bugbunny-research. It was independently reported by @DavidCarliez.

Show details on source website

{
  "affected": [
    {
      "package": {
        "ecosystem": "npm",
        "name": "nocodb"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "last_affected": "0.301.3"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [
    "CVE-2026-53929"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-79"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-06-17T14:07:52Z",
    "nvd_published_at": "2026-06-23T21:17:01Z",
    "severity": "MODERATE"
  },
  "details": "### Summary\nWith `NC_SECURE_ATTACHMENTS=true`, an authenticated uploader could deliver `.html` or\n`.svg` attachments that the browser rendered inline from the NocoDB origin instead of\nforcing a download.\n\n### Details\nThe signed attachment handler stored response-header overrides under PascalCase keys\n(`ResponseContentDisposition`, `ResponseContentType`) while the controller that served\nthe file read them under lowercase-hyphen names (`response-content-disposition`). The\nmismatch dropped the `Content-Disposition: attachment` header, leaving Express to\nauto-render `.html`, `.svg`, and similar inline. The fix corrects the key case and\nadditionally forces `Content-Disposition: attachment` and\n`Content-Type: application/octet-stream` for any MIME type not on the preview\nallowlist.\n\n### Impact\nStored Cross-Site Scripting in the NocoDB origin from inline-rendered uploads. Script\nexecuting in the victim\u0027s browser can read the auth JWT from `localStorage`.\nExploitation requires authenticated upload permission and the secure-attachment mode\nto be enabled.\n\n### Credit\nThis issue was reported by [@bugbunny-research](https://github.com/bugbunny-research).\nIt was independently reported by [@DavidCarliez](https://github.com/DavidCarliez).",
  "id": "GHSA-6mhr-74x2-98v9",
  "modified": "2026-07-20T21:20:12Z",
  "published": "2026-06-17T14:07:52Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/nocodb/nocodb/security/advisories/GHSA-6mhr-74x2-98v9"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-53929"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/nocodb/nocodb"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N",
      "type": "CVSS_V4"
    }
  ],
  "summary": "NocoDB: Stored Cross-Site Scripting via Secure Attachment"
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

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.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…