Full Report
A flaw in SAP's Cloud SDK for Python can send an application's OAuth2 client credentials to a server an attacker controls, SAP said in a security advisory on October 13. The flaw affects multi-tenant applications on SAP Business Technology Platform (BTP) that use the SDK, SAP's official Python client for BTP services. An attacker must be able to control the tenant subdomain,
Analysis Summary
# Vulnerability: OAuth2 Credential Theft in SAP Cloud SDK for Python
## CVE Details
- **CVE ID:** CVE-2026-89111
- **CVSS Score:** 10.0 (Critical)
- **CWE:** CWE-918 (Server-Side Request Forgery - SSRF)
## Affected Systems
- **Products:** SAP Cloud SDK for Python
- **Versions:**
- All versions below **0.45.2** (including the **0.36.x** line).
- Versions **0.53.0 through 0.55.0** (specifically affecting Destination and Document Management Service modules due to a regression).
- **Configurations:** Multi-tenant applications running on SAP Business Technology Platform (BTP) where the application passes a tenant subdomain to the SDK.
## Vulnerability Description
The vulnerability is an SSRF flaw arising from insufficient validation of the tenant subdomain. When an application requests an access token for a specific tenant, the SDK constructs a token URL by injecting the provided tenant subdomain into a pre-configured URL template.
If the subdomain contains URL delimiters or malicious pathing, an attacker can manipulate the final URL. The SDK then transmits the application's **OAuth2 client ID and client secret** to this attacker-controlled endpoint, leading to full credential compromise.
## Exploitation
- **Status:** Vulnerability disclosed by vendor; PoC testing performed by researchers (The Hacker News). No confirmed reports of active exploitation in the wild at the time of advisory.
- **Complexity:** Medium (Requires the attacker to be able to control or influence the tenant subdomain passed to the SDK).
- **Attack Vector:** Network.
## Impact
- **Confidentiality:** Total (Direct theft of OAuth2 client credentials).
- **Integrity:** High (Potential for unauthorized actions using stolen credentials).
- **Availability:** High (Potential for service disruption via credential misuse).
## Remediation
### Patches
Update the SAP Cloud SDK for Python to one of the following verified safe versions:
- **0.45.2 through 0.52.2**
- **0.55.1 or higher** (Recommended: **0.58.4** or latest available).
*Note: The 0.36.x branch is considered permanently vulnerable as the fix was not backported to this line.*
### Workarounds
- **Manual Input Validation:** Before passing a tenant subdomain to the SDK, applications should manually validate the string against a whitelist of registered tenant names.
- **Regex Check:** Ensure the subdomain is a simple string consisting only of alphanumeric characters and hyphens, not exceeding 63 characters.
## Detection
- **Indicators of Compromise:** Review application egress logs for requests to unauthorized or suspicious external domains during OAuth2 token exchange.
- **Detection Methods:** Inspect `requirements.txt` or `Pipfile` for vulnerable versions of `sap-cloud-sdk`. Test inputs for tenant subdomains by attempting to inject URL delimiters (e.g., `@`, `/`, `?`) to see if the SDK raises a `ValueError`.
## References
- **SAP Security Advisory:** hxxps[://]github[.]com/SAP/cloud-sdk-python/security/advisories/GHSA-4mv3-jxxm-9cx2
- **SDK Release Notes (v0.55.1):** hxxps[://]github[.]com/SAP/cloud-sdk-python/releases/tag/v0.55.1
- **Project Repository:** hxxps[://]github[.]com/SAP/cloud-sdk-python