{"id":"CVE-2026-47377","aliases":["GHSA-rvp5-9p55-f5rp"],"url":"https://o3.security/vulnerability/CVE-2026-47377","summary":"NocoDB: Open Redirect via Hash Fragment in hashRedirect Plugin","details":"### Summary\n\nThe client-side `hashRedirect` plugin called `window.location.replace()` on a path extracted from the URL hash fragment after only checking `hashPath.startsWith('/')`. Protocol-relative URLs (`//attacker.com/…`) also satisfy that check, so a crafted link such as `https://nocodb.example/#//attacker.com/phishing` silently redirected visitors to an attacker-controlled origin.\n\n### Details\n\nIn `packages/nc-gui/plugins/hashRedirect.client.ts`, the plugin extracted the hash content and normalised it into `cleanUrl`:\n\n```ts\nlet cleanUrl = hashPath.startsWith('/') ? hashPath : `/${hashPath}`\nif (hashQuery) cleanUrl += `?${hashQuery}`\nwindow.location.replace(cleanUrl)\n```\n\n`startsWith('/')` returns true for `//attacker.com/...`, which browsers interpret as a protocol-relative absolute URL. No hostname check was performed before the redirect. The fix adds an early `if (/^\\/[/\\\\]/.test(hashPath)) return` to reject protocol-relative paths.\n\n### Impact\n\n- Open redirect from any NocoDB origin to an attacker-controlled domain.\n- No authentication required; the attack lands the victim on an attacker-controlled page that may impersonate a NocoDB login.\n\n### Credit\n\nThis issue was reported by [@fg0x0](https://github.com/fg0x0).","published":"2026-06-23T20:35:06.569Z","modified":"2026-08-12T03:51:15.142338537Z","cvss":null,"epss":{"score":0.00239,"percentile":0.15334,"asOf":"2026-08-16"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"npm","name":"nocodb","fixedVersion":"2026.04.1"}],"fix":null,"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47377.json"},{"type":"ADVISORY","url":"https://github.com/nocodb/nocodb/security/advisories/GHSA-rvp5-9p55-f5rp"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-47377"},{"type":"PACKAGE","url":"https://github.com/nocodb/nocodb"},{"type":"WEB","url":"https://github.com/nocodb/nocodb/releases/tag/2026.04.1"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:15.142338537Z"}}