SAP раскрыла критическую уязвимость CVE-2026-89111 с максимальной оценкой CVSS 10.0 в своём Cloud SDK for Python — официальном Python-клиенте для сервисов SAP Business Technology Platform (BTP). Согласно бюллетеню безопасности, уязвимость позволяет атакующему, контролирующему параметр tenant_subdomain, перенаправить OAuth2-запросы на подконтрольный сервер и перехватить клиентские учётные данные (client ID и client secret) мультитенантных приложений. Затронуты версии пакета sap-cloud-sdk ниже 0.45.2. Исправление доступно — обновление до версии 0.45.2 или выше.
Механизм уязвимости
Уязвимость классифицирована как CWE-918 (подделка запросов на стороне сервера, SSRF). Когда мультитенантное приложение на SAP BTP передаёт SDK значение tenant_subdomain, SDK подставляет его в URL для получения OAuth2-токена. В уязвимых версиях SDK принимал произвольные значения без валидации — включая строки с URL-разделителями. Атакующий, способный контролировать этот параметр, мог сформировать значение, перенаправляющее запрос на собственный сервер, куда SDK отправлял клиентские учётные данные приложения.
Исправление в версии 0.45.2 добавило валидацию tenant_subdomain по правилам RFC 1123 для DNS-меток: допускаются только буквы, цифры и дефисы длиной до 63 символов. Некорректные значения теперь вызывают ошибку ValueError. Проверка была добавлена в три модуля: Agent Gateway, Destination и Document Management Service.
Затронутые версии и нюансы патча
Официальный бюллетень SAP указывает затронутыми все версии ниже 0.45.2, а исправленной — версию 0.45.2. Однако, по данным The Hacker News, проведшего тестирование исходного кода с использованием собственных тестов SAP, ситуация сложнее. Версии с 0.53.0 по 0.55.0, как сообщается, не содержат проверки в модуле Destination — при рефакторинге в версии 0.53.0 код обработки токенов был перенесён на новый общий компонент XsuaaAuthProvider, в который валидация не была включена. По тем же данным, эти версии не прошли 9 из 11 тестов валидации, добавленных SAP в версии 0.55.1.
Также сообщается, что версии 0.36.1 и 0.36.2, выпущенные уже после августовского исправления, также не содержат проверки. Важно: официальный бюллетень SAP на момент публикации не указывает версии выше 0.45.2 как затронутые, и вопрос о применимости CVE-2026-89111 к этим более поздним релизам остаётся открытым.
Таким образом, по имеющимся данным, проверку содержат:
- Версии с 0.45.2 по 0.52.2
- Версии с 0.55.1 по 0.58.4 (последний релиз на момент раскрытия)
Ни одна из трёх версий линейки 0.36 не содержит валидации, и обновление внутри этой линейки проблему не решает.
Оценка воздействия
Уязвимость затрагивает не все установки SDK, а только мультитенантные приложения на SAP BTP, которые передают значение tenant_subdomain в SDK — конкретно через модули Destination, Agent Gateway и Document Management Service. Приложения, не использующие эти пути, не подвержены данной уязвимости.
Последствия эксплуатации зависят от привилегий скомпрометированных клиентских учётных данных. Бюллетень SAP не уточняет возможные сценарии, но перехват OAuth2-учётных данных потенциально открывает доступ ко всем ресурсам, к которым авторизован клиент приложения. Активная эксплуатация уязвимости на данный момент не подтверждена, CVE отсутствует в каталоге CISA KEV.
SAP уже неоднократно сталкивалась с критическими уязвимостями в своих облачных продуктах — ранее мы писали об уязвимости CVSS 10.0 в Commerce Cloud.
Рекомендации
- Обновите SDK до версии 0.55.1 или выше (рекомендуется 0.58.4). Версии 0.45.2–0.52.2 также содержат проверку, но не покрывают путь через XsuaaAuthProvider, появившийся в 0.53.0.
- Если обновление невозможно, SAP рекомендует валидировать tenant_subdomain по списку зарегистрированных тенантов перед передачей значения в SDK.
- Проверьте используемую версию: если приложение работает на версиях 0.53.0–0.55.0 и использует модуль Destination, обновление критически важно, несмотря на то что официальный бюллетень формально не включает эти версии в затронутые.
- Оцените необходимость ротации учётных данных: бюллетень SAP не указывает, следует ли заменить client credentials приложениям, работавшим на уязвимых версиях. Для приложений, обрабатывающих внешние данные о тенантах, ротация учётных данных — разумная мера предосторожности.
Уязвимость присутствовала в SDK с первого релиза на PyPI в марте, была тихо исправлена в августе как «Bug Fix» без упоминания безопасности, а бюллетень появился лишь спустя 53 дней. Организациям, использующим мультитенантные приложения на SAP BTP с Cloud SDK for Python, следует немедленно проверить версию SDK и обновить её до 0.55.1 или выше, а при невозможности обновления — внедрить валидацию tenant_subdomain по белому списку зарегистрированных тенантов.