{"id":"CVE-2026-126288","kind":"vulnerability","aliases":["CVE-2026-126288"],"related":[],"title":"NocoDB: unauthenticated OAuth client lookup leaks tokens and secret hashes","description":"NocoDB before 2026.06.2 contains an information disclosure vulnerability that allows unauthenticated attackers to retrieve full OAuth client records by querying the public client lookup route in oauth.controller.ts. Attackers who know or guess a client identifier can obtain the registration access token to modify or delete registrations, plus the bcrypt client secret hash and owner's internal identifier.","summary":"NocoDB before 2026.06.2 exposes full OAuth client records through a public client lookup route in oauth.controller.ts. An attacker who knows or guesses a client identifier can obtain the registration access token, which lets them modify or delete that registration, plus the bcrypt client secret hash and the owner's internal identifier.","severity":"medium","cvss":6.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ai-tooling","nocodb","oauth","self-hosted"],"not_affected_if":["version-2026.06.2-or-later"],"how_to_check":"- Check the installed NocoDB version; `2026.06.2` or later is not affected by this entry.\n- Review whether the public OAuth client lookup route in oauth.controller.ts is reachable from the internet on your deployment.","fix":"- NocoDB: move to `2026.06.2` or later.","status":"open","published_at":"2026-11-13T10:17:32+00:00","first_seen_at":"2026-11-13T10:47:13+00:00","triaged_at":"2026-11-13T10:54:51+00:00","updated_at":"2026-11-13T10:54:51+00:00","category":"ai-tooling","confidence":0.7,"triage":{"at":"2026-11-13T10:54:51Z","model":"claude-haiku-5-5","output":{"fix":"- NocoDB: move to `2026.06.2` or later.","reach":"internet","title":"NocoDB: unauthenticated OAuth client lookup leaks tokens and secret hashes","impact":"medium","summary":"NocoDB before 2026.06.2 exposes full OAuth client records through a public client lookup route in oauth.controller.ts. An attacker who knows or guesses a client identifier can obtain the registration access token, which lets them modify or delete that registration, plus the bcrypt client secret hash and the owner's internal identifier.","audience":"businesses","category":"ai-tooling","nicknames":[],"who_cares":["nocodb","self-hosted","oauth"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"attacker modifies or deletes OAuth registrations and reads secret hashes","analyst_note":"Product data lists no products; confirm the affected package and whether the vendor advisory on github.com names any extra detail.","how_to_check":"- Check the installed NocoDB version; `2026.06.2` or later is not affected by this entry.\n- Review whether the public OAuth client lookup route in oauth.controller.ts is reachable from the internet on your deployment.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["version-2026.06.2-or-later"],"who_is_affected":"NocoDB deployments before `2026.06.2` that expose the public OAuth client lookup route. Attackers need a client identifier, which they can know or guess, so exposure depends on whether the instance is reachable from outside the team's network. Instances already on `2026.06.2` or later are not affected.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000763,"input_tokens":4624,"output_tokens":602,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-126288':13A,16A '-2026':12A,15A '2026.06.2':27B,78C 'access':54B,115C 'ai':18B 'ai-tool':17B 'allow':85C 'attack':42B,87C,103C 'bcrypt':66B,124C 'client':4A,31B,36B,48B,67B,92C,98C,109C,125C 'contain':79C 'cve':11A,14A 'delet':61B,120C 'disclosur':82C 'expos':28B 'full':29B,90C 'guess':46B,107C 'hash':10A,69B,127C 'host':24B 'identifi':49B,75B,110C,132C 'inform':81C 'intern':74B,131C 'know':44B,105C 'leak':6A 'let':57B 'lookup':5A,37B,99C 'modifi':59B,118C 'nocodb':1A,20B,25B,76C 'oauth':3A,21B,30B,91C 'oauth.controller.ts':40B,102C 'obtain':51B,112C 'owner':72B,129C 'plus':64B,122C 'public':35B,97C 'queri':95C 'record':32B,93C 'registr':53B,63B,114C,121C 'retriev':89C 'rout':38B,100C 'secret':9A,68B,126C 'self':23B 'self-host':22B 'token':7A,55B,116C 'tool':19B 'unauthent':2A,86C 'vulner':83C","nicknames":[],"mitigations":[],"who_affected":"NocoDB deployments before `2026.06.2` that expose the public OAuth client lookup route. Attackers need a client identifier, which they can know or guess, so exposure depends on whether the instance is reachable from outside the team's network. Instances already on `2026.06.2` or later are not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["aitooling","medium","nocodb","oauth","selfhosted"],"campaign_type":null,"search_a":"'-126288':13A,16A '-2026':12A,15A 'client':4A 'cve':11A,14A 'hash':10A 'leak':6A 'lookup':5A 'nocodb':1A 'oauth':3A 'secret':9A 'token':7A 'unauthent':2A","search_b":"'2026.06.2':27B 'access':54B 'ai':18B 'ai-tool':17B 'attack':42B 'bcrypt':66B 'client':31B,36B,48B,67B 'delet':61B 'expos':28B 'full':29B 'guess':46B 'hash':69B 'host':24B 'identifi':49B,75B 'intern':74B 'know':44B 'let':57B 'lookup':37B 'modifi':59B 'nocodb':20B,25B 'oauth':21B,30B 'oauth.controller.ts':40B 'obtain':51B 'owner':72B 'plus':64B 'public':35B 'record':32B 'registr':53B,63B 'rout':38B 'secret':68B 'self':23B 'self-host':22B 'token':55B 'tool':19B","search_c":"'2026.06.2':78C 'access':115C 'allow':85C 'attack':87C,103C 'bcrypt':124C 'client':92C,98C,109C,125C 'contain':79C 'delet':120C 'disclosur':82C 'full':90C 'guess':107C 'hash':127C 'identifi':110C,132C 'inform':81C 'intern':131C 'know':105C 'lookup':99C 'modifi':118C 'nocodb':76C 'oauth':91C 'oauth.controller.ts':102C 'obtain':112C 'owner':129C 'plus':122C 'public':97C 'queri':95C 'record':93C 'registr':114C,121C 'retriev':89C 'rout':100C 'secret':126C 'token':116C 'unauthent':86C 'vulner':83C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-27T10:06:21+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-126288","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-126288","severity":null,"published_at":"2026-11-13T10:17:32+00:00","modified_at":"2026-11-13T10:17:32+00:00","first_seen_at":"2026-11-13T10:47:13+00:00","fetched_at":"2026-11-13T10:47:13+00:00","note":null}],"documents":[{"id":144905,"url":"https://github.com/nocodb/nocodb/security/advisories/GHSA-rmx6-f46x-5hhx","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-27T10:06:21+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":144906,"url":"https://www.vulncheck.com/advisories/nocodb-before-2026.06.2-credential-disclosure-via-public-oauth-client-endpoint","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}