SAP Cloud SDK Python CVE-2026-89111: Two Vulnerable Version Ranges and the OAuth2 Fix


SAP Cloud SDK Python CVE-2026-89111: Two Vulnerable Version Ranges and the OAuth2 Fix

31 October 2026 | SAP BTP security | Critical CVSS 10.0. A checklist that says “upgrade SAP Cloud SDK for Python to 0.45.2 or newer” can miss a second exposure window. SAP's live maintainer security advisory now explicitly lists two affected ranges: releases below 0.45.2 and 0.53.0 through 0.55.0. The corresponding first patched versions are 0.45.2 and 0.55.1. The vulnerability was disclosed on 13 October, not today; the exact date on which SAP expanded the affected-version list has not been independently established.

CVE-2026-89111 is an OAuth2 server-side request forgery (SSRF) flaw in the sap-cloud-sdk Python package. In an affected multi-tenant SAP Business Technology Platform application, an attacker who controls the tenant_subdomain value passed into a vulnerable call could redirect a token request and cause OAuth client credentials to be sent to an unintended endpoint. The risk is credential exposure, not automatic compromise of every SAP system. SAP's technical description and CVSS 10.0 assessment.

The version trap: two ranges, not one

The official affected-version ranges as checked on 31 October are <0.45.2 and >=0.53.0, <0.55.1. Versions 0.45.2 through 0.52.x fall between the two affected ranges; 0.53.0 through 0.55.0 are affected despite being newer than the original fix; 0.55.1 and later are outside the currently listed ranges. This is specific to this CVE, not a guarantee that every later release is free of unrelated vulnerabilities. Current SAP advisory.

Why did this happen? SAP's 0.45.2 release on 21 August 2026 introduced validation of tenant subdomains in Agent Gateway, Destination and Document Management Service paths. The 0.55.1 release on 18 September added the same kind of validation to the shared XsuaaAuthProvider token-fetch path. Independent testing reported by The Hacker News on 13 October found that the intermediate 0.53.0–0.55.0 releases omitted validation in some paths. At that time, the outlet noted that SAP's advisory listed only the earlier range. SAP's live advisory as checked today now includes the second range, resolving that particular discrepancy in the published version guidance.

Do not close a security ticket simply because a package version is greater than 0.45.2. Inventory the actual deployed version, then check whether the application uses tenant-specific token acquisition. A release number and an actual call path are both necessary to assess exposure. Official affected versions; shared-provider fix notes.

How the flaw affects a real application

Multi-tenant applications often obtain OAuth2 tokens for a specific tenant. The SDK uses a tenant-subdomain value when constructing the token request URL. If a vulnerable path accepts an attacker-influenced value without sufficient validation, the request can be redirected and may carry the application's OAuth client ID and secret to a host it should never contact. The damage possible after exposure depends on the permissions of that client and on the receiving system's controls. The vendor's description does not establish arbitrary code execution or a universal SAP BTP platform breach. Vendor advisory.

SAP's CVSS v3.1 score is 10.0, with a network attack vector, low attack complexity and no required privileges or user interaction in its base assessment. That is a reason for prompt triage, not proof that a particular customer has been attacked. Actual exploitability still depends on an affected SDK version, the vulnerable functionality being used and attacker control over the tenant input. No customer-specific compromise can be inferred from the public advisory alone. SAP severity and vulnerability conditions.

Which SAP and SuccessFactors customers need to check?

The direct audience is developers, BTP platform teams, application security teams and integration partners maintaining Python-based multi-tenant extensions or AI agents that use sap-cloud-sdk. The official package supports SAP cloud-service integrations and authentication helpers. An organization using standard SAP SuccessFactors screens, SAP Cloud Integration flows or other tools does not automatically have this Python dependency. The right question is whether a custom application or deployed agent uses the package and passes tenant-specific values into its OAuth calls. Official Python package overview; SAP's affected scenario.

For a SuccessFactors architecture review, ask whether any custom BTP service sits between the HCM tenant and external applications, or whether a custom Joule-related service uses this SDK. If not, record the dependency check as negative rather than escalating a generic platform-wide alarm. If yes, establish the version, input origin, identity permissions and remediation owner. This is an architectural screening recommendation based on the vendor's stated scope.

Six actions to take now

  1. Locate the package in every environment. Review dependency manifests, lockfiles, container images, SBOMs and deployed jobs for sap-cloud-sdk. Include dormant and disaster-recovery deployments. Record the exact version and compare it with both SAP-identified ranges.
  2. Trace tenant-specific authentication. Identify where tenant_subdomain comes from and whether any request, header or third-party input can influence it. Review Agent Gateway, Destination, DMS and shared token-provider use as applicable. 0.45.2 release notes; 0.55.1 release notes.
  3. Upgrade and redeploy with regression tests. Choose a current supported, compatible version outside both ranges. SAP lists 0.45.2 and 0.55.1 as first patched versions, not as a reason to remain on old versions. Confirm the latest available package and test tenant routing, token issuance and downstream integrations. Vendor fix guidance; PyPI release history.
  4. Apply the official temporary workaround if blocked. SAP recommends validating the tenant value against a known allowlist of registered tenant subdomains before passing it into an SDK call. Checking only that a string looks like a DNS label is not equivalent to checking that the tenant is authorized for your application. Official workaround.
  5. Review credential exposure responsibly. Check token-request destination logs, egress telemetry and the scopes of affected OAuth clients. If evidence or material uncertainty indicates that credentials may have reached an unintended host, coordinate secret rotation and access review with security owners. This is a risk-management recommendation, not a universal rotation mandate in SAP's advisory. SAP's credential-exfiltration risk description.
  6. Make the fix durable. Add a safe negative test that rejects an invalid tenant value before a token request is made. Use test credentials and controlled test endpoints, not real production secrets. Preserve version evidence and results in the change record so a later refactor cannot silently reintroduce the weakness. Expected validation behavior in 0.55.1.

What to tell business stakeholders

“SAP disclosed a critical vulnerability in its Python Cloud SDK on 13 October. The current advisory identifies two vulnerable version ranges, including a later regression range. We are checking our custom multi-tenant BTP applications, upgrading affected dependencies and reviewing potential credential exposure where appropriate.” That communicates the real risk without suggesting that standard SAP SuccessFactors or all BTP tenants are compromised. SAP's published scope and version list.

Source dates, availability and what remains unknown

21 August 2026: SDK 0.45.2 release with tenant-subdomain validation. 18 September: SDK 0.55.1 release adding validation in the shared token provider. 13 October: SAP's critical security advisory published; independent testing documented the intermediate gap. 31 October: direct review of SAP's live advisory confirms both affected ranges and both patched versions. Unknown: exact advisory amendment timestamp and whether any particular customer's credentials were exposed. SAP 0.45.2; SAP 0.55.1; current advisory; independent technical cross-check.

Architect's takeaway: A green dependency scan is only as good as the affected-version data it uses. For software that handles OAuth secrets, keep one invariant in your security tests: an untrusted tenant value must never choose where client credentials are sent. The second range in SAP's current advisory is a concrete reason to verify both the package version and the actual authentication behavior. Primary security advisory.

Sources: SAP Cloud SDK advisory; SAP 0.45.2 release; SAP 0.55.1 release; PyPI; SAP Security Patch Day; The Hacker News cross-check.

No comments:

Post a Comment