SAP Cloud SDK para Python — Vulnerabilidad Crítica de Exfiltración de Credenciales OAuth2 (CVE-2026-89111)

Fecha de publicación: 13 de octubre de 2026
Categoría: Vulnerabilidad / Seguridad en la Nube

Introducción

SAP ha emitido un aviso de seguridad advirtiendo sobre una vulnerabilidad crítica que afecta a su Cloud SDK para Python, identificada oficialmente como CVE-2026-89111. El fallo compromete la seguridad de aplicaciones multi-tenant ejecutadas en la plataforma SAP Business Technology Platform (BTP), permitiendo que un atacante que controle el parámetro del subdominio del inquilino desvíe solicitudes de tokens de autenticación OAuth2 hacia un servidor malicioso de su control. Esto deriva en la exfiltración directa de las credenciales de cliente del SDK. El hallazgo fue reportado originalmente por el investigador SunandM a través de GitHub, desencadenando una revisión exhaustiva de las iteraciones del paquete en PyPI.

¿Qué es CVE-2026-89111? (Análisis General)

El componente afectado es el SDK oficial de SAP para interactuar con servicios de BTP mediante lenguaje Python. En las arquitecturas multi-tenant, el SDK procesa la autenticación gestionando credenciales confidenciales del cliente (Client ID y Client Secret). Cuando una aplicación invoca un servicio para solicitar un token de acceso, el SDK construye dinámicamente la URL de destino integrando el subdominio proporcionado por el inquilino.

Si la validación de esta entrada falla, un actor malicioso puede inyectar delimitadores de URL en el subdominio para reescribir el endpoint de destino de forma arbitraria. Esta condición clasifica técnicamente como una vulnerabilidad de Falsificación de Peticiones del Lado del Servidor (SSRF).

Datos oficiales confirmados por el NVD:

  • Vector CVSS v3.1: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
  • Puntuación Base: 10.0 (CRÍTICO)
  • CWE Oficial: CWE-918 (Server-Side Request Forgery - SSRF)
  • CISA KEV: No reportado en el catálogo a la fecha de emisión.

¿Cómo funciona? (Análisis Técnico)

El mecanismo de explotación y fallo en el SDK se estructura de la siguiente manera:

  • Flujo de entrada del exploit: El vector de ataque se materializa cuando una aplicación multi-tenant acepta datos controlados por usuarios no autenticados y los pasa directamente al SDK como el parámetro tenant_subdomain.
  • Falta de saneamiento de entradas: Versiones específicas introdujeron regresiones donde el SDK omitía la validación estricta de cadenas (la cual exige un único nombre compuesto exclusivamente por letras, dígitos y guiones, con un límite de 63 caracteres). Al no aplicar este filtro en llamadas dirigidas a módulos específicos como el servicio de Destinos (Destination service), se procesan caracteres especiales y delimitadores de URL.
  • Exfiltración de credenciales OAuth2: Al alterar la URL base de autenticación mediante el subdominio manipulado, el SDK procede automáticamente a enviar el Client ID y el Client Secret codificados o en texto plano (según el contexto de la petición HTTPS) directamente hacia el servidor controlado por el atacante, comprometiendo por completo la identidad de la aplicación en la nube.

“Un atacante que controle el parámetro tenant_subdomain puede redirigir las solicitudes de tokens OAuth2 a un servidor controlado por él, provocando la exfiltración de las credenciales del cliente.”

Sistemas / Entornos Afectados

El problema de seguridad impacta a diversas versiones del paquete sap-cloud-sdk en Python, dependiendo del módulo de servicio invocado:

CVE Categoría (CWE) Impacto CVSS Vector (resumido)
CVE-2026-89111 CWE-918 Confidencialidad Alta, Integridad Alta 10.0 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
  • Rrama principal / Versiones inferiores a 0.45.2: Carecen por completo de la validación del subdominio, incluyendo las versiones de la línea 0.36 (0.36.1 y 0.36.2) publicadas con posterioridad al parche de agosto.
  • Rango 0.45.2 a 0.52.2: Contienen la validación inicial de forma correcta.
  • Rango 0.53.0 a 0.55.0: Presentan omisiones en el control cuando las aplicaciones invocan los módulos de Destination y Document Management Service.
  • Versión 0.55.1 y posteriores: Implementan el control estricto que genera un error ValueError inmediato ante cualquier subdominio malformado.

Mitigación y Detección

Remediación

  • Actualización prioritaria: Actualizar el paquete a la versión más reciente disponible en PyPI (0.58.4 o superior), asegurando que se eviten las ramas intermedias vulnerables. Las versiones 0.45.2 hasta 0.52.2 y 0.55.1 en adelante contienen el parche adecuado.
  • Mitigación compensatoria: Para aquellos entornos que no puedan actualizar de inmediato, las aplicaciones deben implementar una validación estricta del parámetro tenant_subdomain contrastándolo contra una lista blanca (whitelist) estricta de inquilinos registrados antes de delegarlo al SDK.
  • Rotación de secretos: Se recomienda auditar los registros de acceso y proceder a la rotación preventiva de las credenciales OAuth2 (Client ID y Client Secret) en aquellas aplicaciones que hayan ejecutado versiones sin el parche de seguridad.

Detección

  • Monitorear el tráfico de red saliente en busca de conexiones HTTPS iniciadas por los servicios de backend hacia dominios externos no autorizados o endpoints que no correspondan con los dominios oficiales de identidad de SAP BTP.
  • Analizar los registros de aplicación en busca de excepciones no controladas o intentos de inyección de delimitadores en parámetros de enrutamiento de inquilinos.

Recapitulando

La revelación de la vulnerabilidad CVE-2026-89111 con una puntuación CVSS perfecta de 10.0 demuestra la complejidad de mantener controles de seguridad estrictos a lo largo del ciclo de vida de desarrollo de SDKs nativos en la nube. La omisión temporal de validaciones en módulos específicos resalta la necesidad de implementar pruebas automatizadas de regresión rigurosas para evitar la reintroducción de fallos críticos de SSRF que comprometan la cadena de confianza en arquitecturas multi-tenant.

Referencias