{"id":"CVE-2026-109799","kind":"vulnerability","aliases":["CVE-2026-109799"],"related":[],"title":"SAP Cloud SDK for Python: forged JWT sets tenant and user identity","description":"The SAP Cloud SDK for Python contains an improper cryptographic signature verification vulnerability (CWE-347) in IASContextProvider, the runtime-context provider registered by default via bootstrap(app).IASContextProvider extracted the app_tid, sap_gtid and user_uuid claims from the IAS JWT in the Authorization header using an unverified decoder and wrote them into the request-scoped RuntimeContext without validating the token signature. A remote caller could submit a self-signed JWT naming a victim tenant/user; the forged identity then propagated to every consumer of the runtime context:OTel span attributes (sap.tenancy.tenant_id, user.id) via RuntimeContextSpanProcessorlog records via IdentityLogFilteraudit events (tenant_id, user_initiator_id) via AuditClienttenant routing via CBCClientThis completes an earlier remediation that fixed the same unverified pattern in StarletteIASTelemetryMiddleware but did not cover IASContextProvider.","summary":"SAP Cloud SDK for Python (sap-cloud-sdk < 0.63.1) trusted tenant, tenant-group and user claims from the IAS JWT without checking its signature. A remote caller could send a self-signed token naming a victim tenant and user, and that forged identity flowed into telemetry, logs, audit events and tenant routing. Fixed in 0.63.1.","severity":"high","cvss":7.5,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"sap-cloud-sdk","fixed":["0.63.1"],"affected":"< 0.63.1","ecosystem":"pypi"}],"ecosystems":[],"tags":["ias","multi-tenant","package","pip","python","sap-cloud-sdk"],"not_affected_if":["no-ias-jwt","upstream-token-validation"],"how_to_check":"Run: pip show sap-cloud-sdk (or pip list). Versions below 0.63.1 are affected if the app calls bootstrap(app), which registers IASContextProvider by default, and accepts IAS JWTs in the Authorization header.","fix":"Upgrade sap-cloud-sdk (pip) to 0.63.1 or later. 0.63.1 verifies the IAS JWT signature via JWKS-backed IASVerifier and returns an empty context if verification fails or no IAS binding exists.","status":"open","published_at":"2026-11-10T01:17:13+00:00","first_seen_at":"2026-11-10T01:26:36+00:00","triaged_at":"2026-11-10T01:28:38+00:00","updated_at":"2026-11-10T01:35:40+00:00","category":"package","confidence":0.9,"triage":{"at":"2026-11-10T01:28:38Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"SAP Cloud SDK for Python: forged JWT sets tenant and user identity","impact":"high","summary":"The SAP Cloud SDK for Python reads tenant, tenant-group and user claims from an IAS JWT without verifying its signature. A remote caller can send a self-signed token naming a victim tenant and user, and that forged identity flows into telemetry, logs, audit events and tenant routing.","audience":"developers","category":"package","nicknames":[],"who_cares":["python","sap-cloud-sdk","ias","multi-tenant"],"confidence":0.6,"fix_status":"unknown","needs_auth":"no","worst_case":"attacker impersonates tenants and users in audit and tenant routing","analyst_note":"Find the SAP advisory or GitHub fix for affected and fixed SDK versions; the NVD entry gives no product ranges.","how_to_check":"unknown","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["no-ias-jwt","upstream-token-validation"],"who_is_affected":"Applications built on the SAP Cloud SDK for Python that call bootstrap(app) with IAS-protected endpoints, which registers IASContextProvider by default. Services that don't use the SDK's runtime-context provider, or that validate tokens upstream before the SDK sees them, are less exposed. The sources do not name affected versions or a fixed release.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000746,"input_tokens":4813,"output_tokens":529,"severity_before":"high"},"analyst_status":"done","analyst_note":"Find the SAP advisory or GitHub fix for affected and fixed SDK versions; the NVD entry gives no product ranges.","search":"'-109799':15A,18A '-2026':14A,17A '-347':106C '0.63.1':43B,91B 'app':119C,123C 'attribut':185C 'audit':84B 'auditclientten':201C 'author':137C 'bootstrap':118C 'caller':62B,159C 'cbcclientthi':204C 'check':57B 'claim':51B,130C 'cloud':2A,21A,32B,35B,41B,94C 'complet':205C 'consum':178C 'contain':98C 'context':112C,182C 'could':63B,160C 'cover':220C 'cryptograph':101C 'cve':13A,16A 'cwe':105C 'decod':142C 'default':116C 'earlier':207C 'event':85B,194C 'everi':177C 'extract':121C 'fix':89B,210C 'flow':80B 'forg':6A,78B,172C 'group':48B 'gtid':126C 'header':138C 'ia':23B,54B,133C 'iascontextprovid':108C,120C,221C 'id':187C,196C,199C 'ident':12A,79B,173C 'identitylogfilteraudit':193C 'improp':100C 'initi':198C 'jwt':7A,55B,134C,166C 'log':83B 'multi':25B 'multi-ten':24B 'name':70B,167C 'otel':183C 'packag':27B 'pattern':214C 'pip':28B 'propag':175C 'provid':113C 'python':5A,29B,38B,97C 'record':191C 'regist':114C 'remedi':208C 'remot':61B,158C 'request':149C 'request-scop':148C 'rout':88B,202C 'runtim':111C,181C 'runtime-context':110C 'runtimecontext':151C 'runtimecontextspanprocessorlog':190C 'sap':1A,20A,31B,34B,40B,93C,125C 'sap-cloud-sdk':19A,30B,39B 'sap.tenancy.tenant':186C 'scope':150C 'sdk':3A,22A,33B,36B,42B,95C 'self':67B,164C 'self-sign':66B,163C 'send':64B 'set':8A 'sign':68B,165C 'signatur':59B,102C,156C 'span':184C 'starletteiastelemetrymiddlewar':216C 'submit':161C 'telemetri':82B 'tenant':9A,26B,45B,47B,73B,87B,195C 'tenant-group':46B 'tenant/user':170C 'tid':124C 'token':69B,155C 'trust':44B 'unverifi':141C,213C 'use':139C 'user':11A,50B,75B,128C,197C 'user.id':188C 'uuid':129C 'valid':153C 'verif':103C 'via':117C,189C,192C,200C,203C 'victim':72B,169C 'vulner':104C 'without':56B,152C 'wrote':144C","nicknames":[],"mitigations":[],"who_affected":"Python services using sap-cloud-sdk (pip) older than 0.63.1 that call bootstrap(app), which registers IASContextProvider by default, and receive IAS JWTs in the Authorization header. An unauthenticated remote caller can forge tenant and user identity, which then flows into traces, logs, audit events and tenant routing. Services that verify the JWT signature at ingress before the SDK sees the request, or that don't use the runtime-context provider, can skip it.","tier":"B","verified":{"fix":{"at":"2026-11-10T01:35:40Z","by":"analyst","doc":"https://github.com/SAP/cloud-sdk-python/security/advisories/GHSA-93m8-crj2-v997","run_id":2393},"products":{"at":"2026-11-10T01:35:40Z","by":"analyst","doc":"https://github.com/SAP/cloud-sdk-python/security/advisories/GHSA-93m8-crj2-v997","run_id":2393},"mitigations":{"at":"2026-11-10T01:35:40Z","by":"analyst","doc":"https://github.com/SAP/cloud-sdk-python/security/advisories/GHSA-93m8-crj2-v997","run_id":2393},"workarounds":{"at":"2026-11-10T01:35:40Z","by":"analyst","doc":"https://github.com/SAP/cloud-sdk-python/security/advisories/GHSA-93m8-crj2-v997","run_id":2393},"how_to_check":{"at":"2026-11-10T01:35:40Z","by":"analyst","doc":"https://github.com/SAP/cloud-sdk-python/security/advisories/GHSA-93m8-crj2-v997","run_id":2393}},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":["sapcloudsdk"],"ptokens":["cloud","sap","sdk"],"labels":["high","ias","multitenant","package","pip","python","sapcloudsdk"],"campaign_type":null,"search_a":"'-109799':15A,18A '-2026':14A,17A 'cloud':2A,21A 'cve':13A,16A 'forg':6A 'ident':12A 'jwt':7A 'python':5A 'sap':1A,20A 'sap-cloud-sdk':19A 'sdk':3A,22A 'set':8A 'tenant':9A 'user':11A","search_b":"'0.63.1':43B,91B 'audit':84B 'caller':62B 'check':57B 'claim':51B 'cloud':32B,35B,41B 'could':63B 'event':85B 'fix':89B 'flow':80B 'forg':78B 'group':48B 'ia':23B,54B 'ident':79B 'jwt':55B 'log':83B 'multi':25B 'multi-ten':24B 'name':70B 'packag':27B 'pip':28B 'python':29B,38B 'remot':61B 'rout':88B 'sap':31B,34B,40B 'sap-cloud-sdk':30B,39B 'sdk':33B,36B,42B 'self':67B 'self-sign':66B 'send':64B 'sign':68B 'signatur':59B 'telemetri':82B 'tenant':26B,45B,47B,73B,87B 'tenant-group':46B 'token':69B 'trust':44B 'user':50B,75B 'victim':72B 'without':56B","search_c":"'-347':106C 'app':119C,123C 'attribut':185C 'auditclientten':201C 'author':137C 'bootstrap':118C 'caller':159C 'cbcclientthi':204C 'claim':130C 'cloud':94C 'complet':205C 'consum':178C 'contain':98C 'context':112C,182C 'could':160C 'cover':220C 'cryptograph':101C 'cwe':105C 'decod':142C 'default':116C 'earlier':207C 'event':194C 'everi':177C 'extract':121C 'fix':210C 'forg':172C 'gtid':126C 'header':138C 'ia':133C 'iascontextprovid':108C,120C,221C 'id':187C,196C,199C 'ident':173C 'identitylogfilteraudit':193C 'improp':100C 'initi':198C 'jwt':134C,166C 'name':167C 'otel':183C 'pattern':214C 'propag':175C 'provid':113C 'python':97C 'record':191C 'regist':114C 'remedi':208C 'remot':158C 'request':149C 'request-scop':148C 'rout':202C 'runtim':111C,181C 'runtime-context':110C 'runtimecontext':151C 'runtimecontextspanprocessorlog':190C 'sap':93C,125C 'sap.tenancy.tenant':186C 'scope':150C 'sdk':95C 'self':164C 'self-sign':163C 'sign':165C 'signatur':102C,156C 'span':184C 'starletteiastelemetrymiddlewar':216C 'submit':161C 'tenant':195C 'tenant/user':170C 'tid':124C 'token':155C 'unverifi':141C,213C 'use':139C 'user':128C,197C 'user.id':188C 'uuid':129C 'valid':153C 'verif':103C 'via':117C,189C,192C,200C,203C 'victim':169C 'vulner':104C 'without':152C 'wrote':144C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-10T00:10:37+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","cvss_by":"cna@sap.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-109799","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-109799","severity":null,"published_at":"2026-11-10T01:17:13+00:00","modified_at":"2026-11-10T01:17:13+00:00","first_seen_at":"2026-11-10T01:26:36+00:00","fetched_at":"2026-11-10T01:26:36+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-109799:2393","url":null,"severity":null,"published_at":"2026-11-10T01:35:40+00:00","modified_at":"2026-11-10T01:35:40+00:00","first_seen_at":"2026-11-10T01:35:40+00:00","fetched_at":"2026-11-10T01:35:40+00:00","note":"Read GHSA-93m8-crj2-v997 (SAP's own advisory): sap-cloud-sdk (pip) < 0.63.1 affected, 0.63.1 fixes via JWKS-backed IASVerifier, fail-closed. No exploitation/PoC seen; did not search social."}],"documents":[{"id":112355,"url":"https://github.com/SAP/cloud-sdk-python/security/advisories/GHSA-93m8-crj2-v997","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-11-10T00:10:37+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: 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"}