{"id":"CVE-2026-123800","kind":"vulnerability","aliases":["CVE-2026-123800"],"related":[],"title":"SuperTokens Core: tenant permission check lets an API key takeover sibling apps","description":"SuperTokens Core is an open source authentication server. From 6.0.0 until 6.0.24, 7.0.23, 8.0.7, 9.0.6, 9.1.6, 9.2.7, 9.3.5, 10.0.8, 10.1.9, 11.0.9, 11.1.4, 11.2.4, 11.3.8, 11.4.8, 12.0.11, 12.1.2, 12.2.1, and 12.3.1, Multitenancy.checkPermissionsForCreateOrUpdate in src/main/java/io/supertokens/multitenancy/Multitenancy.java does not adequately authorize updates to a parent connection URI domain or the base tenant. In a licensed multi-tenant deployment with multiple applications under one non-default connection URI domain and separate api_keys, an attacker holding one application's valid API key can update the parent domain because the CUD-target branch checks the domain without requiring the source application and tenant to be public. Because api_keys is not protected, the attacker can replace the parent key and then sibling application keys, read or modify sibling users, obtain sessions as those users, establish persistence through a sibling dashboard user, and lock out the sibling application's own key. In the advisory's v2 create or update handlers, omitting the optional identifier produces a base-tenant target that skips the permission branches and enterprise-feature gate, allowing changes to firstFactors, required secondary factors, and recipe-enabled flags that affect login integrity and availability. The base-target variant still rejects coreConfig and does not establish key theft. This issue is fixed in versions 6.0.24, 7.0.23, 8.0.7, 9.0.6, 9.1.6, 9.2.7, 9.3.5, 10.0.8, 10.1.9, 11.0.9, 11.1.4, 11.2.4, 11.3.8, 11.4.8, 12.0.11, 12.1.2, 12.2.1, and 12.3.1.","summary":"SuperTokens Core is an open source authentication server. In licensed multi-tenant deployments, a holder of one application's valid API key can update the parent connection URI domain and replace API keys, reading or modifying sibling users and obtaining their sessions.","severity":"critical","cvss":9.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["authentication","multi-tenant","other","self-hosted","supertokens"],"not_affected_if":["default-config","managed-hosting","single-tenant"],"how_to_check":"- Check the installed SuperTokens Core version against the fixed versions listed in the sources.\n- Check whether the deployment runs a licensed multi-tenant setup with multiple applications under one non-default connection URI domain and separate api_keys.","fix":"- Upgrade to a fixed version for your release line: `6.0.24`, `7.0.23`, `8.0.7`, `9.0.6`, `9.1.6`, `9.2.7`, `9.3.5`, `10.0.8`, `10.1.9`, `11.0.9`, `11.1.4`, `11.2.4`, `11.3.8`, `11.4.8`, `12.0.11`, `12.1.2`, `12.2.1`, or `12.3.1`.","status":"open","published_at":"2026-11-09T19:16:46+00:00","first_seen_at":"2026-11-09T19:28:14+00:00","triaged_at":"2026-11-09T19:29:24+00:00","updated_at":"2026-11-09T19:29:24+00:00","category":"other","confidence":0.7,"triage":{"at":"2026-11-09T19:29:24Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade to a fixed version for your release line: `6.0.24`, `7.0.23`, `8.0.7`, `9.0.6`, `9.1.6`, `9.2.7`, `9.3.5`, `10.0.8`, `10.1.9`, `11.0.9`, `11.1.4`, `11.2.4`, `11.3.8`, `11.4.8`, `12.0.11`, `12.1.2`, `12.2.1`, or `12.3.1`.","reach":"network","title":"SuperTokens Core: tenant permission check lets an API key takeover sibling apps","impact":"high","summary":"SuperTokens Core is an open source authentication server. In licensed multi-tenant deployments, a holder of one application's valid API key can update the parent connection URI domain and replace API keys, reading or modifying sibling users and obtaining their sessions.","audience":"businesses","category":"other","nicknames":[],"who_cares":["self-hosted","supertokens","multi-tenant","authentication"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"attacker takes over sibling application authentication and reads or modifies their users","analyst_note":"unknown","how_to_check":"- Check the installed SuperTokens Core version against the fixed versions listed in the sources.\n- Check whether the deployment runs a licensed multi-tenant setup with multiple applications under one non-default connection URI domain and separate api_keys.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["default-config","single-tenant","managed-hosting"],"who_is_affected":"Exposure requires a licensed multi-tenant deployment with several applications under one non-default connection URI domain, each with its own api_keys. Single-tenant or default-config installs are not described as affected. The attacker needs a valid API key from one sibling application.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"critical"},"cost_usd":0.000861,"input_tokens":5238,"output_tokens":674,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-123800':15A,18A '-2026':14A,17A '10.0.8':89C,292C '10.1.9':90C,293C '11.0.9':91C,294C '11.1.4':92C,295C '11.2.4':93C,296C '11.3.8':94C,297C '11.4.8':95C,298C '12.0.11':96C,299C '12.1.2':97C,300C '12.2.1':98C,301C '12.3.1':100C,303C '6.0.0':80C '6.0.24':82C,285C '7.0.23':83C,286C '8.0.7':84C,287C '9.0.6':85C,288C '9.1.6':86C,289C '9.2.7':87C,290C '9.3.5':88C,291C 'adequ':106C 'advisori':220C 'affect':260C 'allow':247C 'api':8A,49B,60B,139C,148C,175C 'app':12A 'applic':46B,128C,145C,168C,190C,214C 'attack':142C,181C 'authent':19B,34B,77C 'author':107C 'avail':264C 'base':117C,234C,267C 'base-target':266C 'base-ten':233C 'branch':160C,241C 'chang':248C 'check':5A,161C 'connect':55B,112C,134C 'core':2A,29B,72C 'coreconfig':272C 'creat':223C 'cud':158C 'cud-target':157C 'cve':13A,16A 'dashboard':207C 'default':133C 'deploy':41B,125C 'domain':57B,114C,136C,154C,163C 'enabl':257C 'enterpris':244C 'enterprise-featur':243C 'establish':202C,276C 'factor':253C 'featur':245C 'firstfactor':250C 'fix':282C 'flag':258C 'gate':246C 'handler':226C 'hold':143C 'holder':43B 'host':26B 'identifi':230C 'integr':262C 'issu':280C 'key':9A,50B,61B,140C,149C,176C,186C,191C,217C,277C 'let':6A 'licens':37B,121C 'lock':210C 'login':261C 'modifi':64B,194C 'multi':21B,39B,123C 'multi-ten':20B,38B,122C 'multipl':127C 'multitenancy.checkpermissionsforcreateorupdate':101C 'non':132C 'non-default':131C 'obtain':68B,197C 'omit':227C 'one':45B,130C,144C 'open':32B,75C 'option':229C 'parent':54B,111C,153C,185C 'permiss':4A,240C 'persist':203C 'produc':231C 'protect':179C 'public':173C 'read':62B,192C 'recip':256C 'recipe-en':255C 'reject':271C 'replac':59B,183C 'requir':165C,251C 'secondari':252C 'self':25B 'self-host':24B 'separ':138C 'server':35B,78C 'session':70B,198C 'sibl':11A,65B,189C,195C,206C,213C 'skip':238C 'sourc':33B,76C,167C 'src/main/java/io/supertokens/multitenancy/multitenancy.java':103C 'still':270C 'supertoken':1A,27B,28B,71C 'takeov':10A 'target':159C,236C,268C 'tenant':3A,22B,40B,118C,124C,170C,235C 'theft':278C 'updat':52B,108C,151C,225C 'uri':56B,113C,135C 'user':66B,196C,201C,208C 'v2':222C 'valid':48B,147C 'variant':269C 'version':284C 'without':164C","nicknames":[],"mitigations":[],"who_affected":"Exposure requires a licensed multi-tenant deployment with several applications under one non-default connection URI domain, each with its own api_keys. Single-tenant or default-config installs are not described as affected. The attacker needs a valid API key from one sibling application.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["authentication","critical","multitenant","other","selfhosted","supertokens"],"campaign_type":null,"search_a":"'-123800':15A,18A '-2026':14A,17A 'api':8A 'app':12A 'check':5A 'core':2A 'cve':13A,16A 'key':9A 'let':6A 'permiss':4A 'sibl':11A 'supertoken':1A 'takeov':10A 'tenant':3A","search_b":"'api':49B,60B 'applic':46B 'authent':19B,34B 'connect':55B 'core':29B 'deploy':41B 'domain':57B 'holder':43B 'host':26B 'key':50B,61B 'licens':37B 'modifi':64B 'multi':21B,39B 'multi-ten':20B,38B 'obtain':68B 'one':45B 'open':32B 'parent':54B 'read':62B 'replac':59B 'self':25B 'self-host':24B 'server':35B 'session':70B 'sibl':65B 'sourc':33B 'supertoken':27B,28B 'tenant':22B,40B 'updat':52B 'uri':56B 'user':66B 'valid':48B","search_c":"'10.0.8':89C,292C '10.1.9':90C,293C '11.0.9':91C,294C '11.1.4':92C,295C '11.2.4':93C,296C '11.3.8':94C,297C '11.4.8':95C,298C '12.0.11':96C,299C '12.1.2':97C,300C '12.2.1':98C,301C '12.3.1':100C,303C '6.0.0':80C '6.0.24':82C,285C '7.0.23':83C,286C '8.0.7':84C,287C '9.0.6':85C,288C '9.1.6':86C,289C '9.2.7':87C,290C '9.3.5':88C,291C 'adequ':106C 'advisori':220C 'affect':260C 'allow':247C 'api':139C,148C,175C 'applic':128C,145C,168C,190C,214C 'attack':142C,181C 'authent':77C 'author':107C 'avail':264C 'base':117C,234C,267C 'base-target':266C 'base-ten':233C 'branch':160C,241C 'chang':248C 'check':161C 'connect':112C,134C 'core':72C 'coreconfig':272C 'creat':223C 'cud':158C 'cud-target':157C 'dashboard':207C 'default':133C 'deploy':125C 'domain':114C,136C,154C,163C 'enabl':257C 'enterpris':244C 'enterprise-featur':243C 'establish':202C,276C 'factor':253C 'featur':245C 'firstfactor':250C 'fix':282C 'flag':258C 'gate':246C 'handler':226C 'hold':143C 'identifi':230C 'integr':262C 'issu':280C 'key':140C,149C,176C,186C,191C,217C,277C 'licens':121C 'lock':210C 'login':261C 'modifi':194C 'multi':123C 'multi-ten':122C 'multipl':127C 'multitenancy.checkpermissionsforcreateorupdate':101C 'non':132C 'non-default':131C 'obtain':197C 'omit':227C 'one':130C,144C 'open':75C 'option':229C 'parent':111C,153C,185C 'permiss':240C 'persist':203C 'produc':231C 'protect':179C 'public':173C 'read':192C 'recip':256C 'recipe-en':255C 'reject':271C 'replac':183C 'requir':165C,251C 'secondari':252C 'separ':138C 'server':78C 'session':198C 'sibl':189C,195C,206C,213C 'skip':238C 'sourc':76C,167C 'src/main/java/io/supertokens/multitenancy/multitenancy.java':103C 'still':270C 'supertoken':71C 'target':159C,236C,268C 'tenant':118C,124C,170C,235C 'theft':278C 'updat':108C,151C,225C 'uri':113C,135C 'user':196C,201C,208C 'v2':222C 'valid':147C 'variant':269C 'version':284C 'without':164C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-09T19:16:46+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-123800","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-123800","severity":null,"published_at":"2026-11-09T19:16:46+00:00","modified_at":"2026-11-09T19:16:46+00:00","first_seen_at":"2026-11-09T19:28:14+00:00","fetched_at":"2026-11-09T19:28:14+00:00","note":null}],"documents":[{"id":109118,"url":"https://github.com/supertokens/supertokens-core/commit/13c3de170dd40dd217db0f6bd2bded0948476a42","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":109119,"url":"https://github.com/supertokens/supertokens-core/commit/1cc02b971f064c2fa2d9bc74b9e85795fdc6a7e5","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":109120,"url":"https://github.com/supertokens/supertokens-core/commit/1d9dcb03ce0691d9b8abee48f86cc2729a6008cb","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":109121,"url":"https://github.com/supertokens/supertokens-core/commit/337bb3eba812a5ee52d57854701820a0580b6050","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":109122,"url":"https://github.com/supertokens/supertokens-core/commit/4902b713f31306ca41148070d10b6185f0e85201","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":109123,"url":"https://github.com/supertokens/supertokens-core/commit/4d1ef0e177681f4f74995e4a25a17d224effe115","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":109124,"url":"https://github.com/supertokens/supertokens-core/commit/61bfd3ebde1cf4b092da85ee884fa15e288aad51","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":109125,"url":"https://github.com/supertokens/supertokens-core/commit/64dfa92c50a2ec288fe787ee5c2fad45548a6475","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":109126,"url":"https://github.com/supertokens/supertokens-core/commit/8db9b0c39f97f240e116821434d4eb3c907faccf","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":109127,"url":"https://github.com/supertokens/supertokens-core/commit/8e48ef856becbaaeb50ad4c915be1d7ce279416b","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":109128,"url":"https://github.com/supertokens/supertokens-core/commit/9b0d3a9fdbdcb48dd7dd9d520075bbefbae3cf9b","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":109129,"url":"https://github.com/supertokens/supertokens-core/commit/a186f1013c784de8a796a732e925e1870fec0f40","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.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"}