Krytyczna luka CVSS 10.0 w SAP Cloud SDK for Python może ujawnić poświadczenia OAuth2 - Security Bez Tabu

Krytyczna luka CVSS 10.0 w SAP Cloud SDK for Python może ujawnić poświadczenia OAuth2

Cybersecurity news

Wprowadzenie do problemu / definicja

SAP ujawnił krytyczną podatność w bibliotece Cloud SDK for Python, wykorzystywanej do integracji aplikacji z usługami SAP Business Technology Platform. Luka dotyczy obsługi subdomen najemców w środowiskach wielodzierżawnych i może prowadzić do ujawnienia poświadczeń OAuth2, w tym client ID oraz client secret, do infrastruktury kontrolowanej przez atakującego.

Problem jest szczególnie istotny dla aplikacji SaaS, które realizują komunikację między usługami i dynamicznie operują kontekstem tenantów. W takim modelu nawet pozornie drobny błąd walidacji danych wejściowych może skutkować przejęciem wrażliwych danych uwierzytelniających.

W skrócie

  • Podatność została oznaczona jako CVE-2026-89111.
  • Otrzymała maksymalną ocenę CVSS 10.0.
  • Dotyczy SAP Cloud SDK for Python używanego w środowiskach multi-tenant.
  • Atak może doprowadzić do wysłania poświadczeń OAuth2 do złośliwego hosta.
  • Wersja 0.45.2 zawierała pierwszą poprawkę, a 0.55.1 i nowsze przywracają pełną walidację w kodzie współdzielonym.

Kontekst / historia

Podatność została publicznie opisana 13 października 2026 roku, choć sama poprawka pojawiła się wcześniej, 21 sierpnia 2026 roku, w wydaniu 0.45.2. Z dostępnych informacji wynika, że wadliwy mechanizm był obecny od pierwszego wydania biblioteki opublikowanego w marcu 2026 roku.

Znaczenie problemu zwiększa fakt, że zabezpieczenia nie były stosowane konsekwentnie we wszystkich późniejszych gałęziach rozwojowych. Po zmianach architektonicznych w serii 0.53.x część komponentów korzystających ze wspólnego kodu ponownie utraciła wymagane kontrole, przez co nie każda nowsza wersja po 0.45.2 zapewniała ten sam poziom ochrony.

Analiza techniczna

Źródłem podatności jest sposób konstruowania endpointu tokenu OAuth2 dla konkretnego najemcy. Aplikacja przekazuje do SDK parametr tenant subdomain, a biblioteka wykorzystuje go do modyfikacji bazowego adresu URL żądania tokenowego. Jeśli wartość ta nie zostanie właściwie zweryfikowana, atakujący może tak ją przygotować, aby zmienić docelowy adres połączenia.

W rezultacie serwer aplikacyjny może wysłać żądanie autoryzacyjne do systemu kontrolowanego przez napastnika. Ponieważ proces uzyskiwania tokenu obejmuje wykorzystanie poświadczeń klienta OAuth2, do nieautoryzowanego hosta mogą trafić client ID i client secret. Taki scenariusz łączy klasyczny błąd walidacji wejścia z cechami ataku przypominającego SSRF, ponieważ aplikacja wykonuje wychodzące połączenie do celu wskazanego pośrednio przez dane wejściowe.

SAP wskazał, że poprawka polega na odrzucaniu wartości tenant subdomain, które nie są prostą nazwą składającą się wyłącznie z dozwolonych znaków. Według ujawnionych informacji wersje 0.53.0–0.55.0 nie stosowały tej ochrony we wszystkich ścieżkach wykonania, zwłaszcza w module Destination, natomiast wersja 0.55.1 przywróciła pełną walidację. Dodatkowo gałąź 0.36.x nie zapewnia skutecznej ochrony, więc pozostawanie na niej nie rozwiązuje problemu.

Konsekwencje / ryzyko

Najpoważniejszym skutkiem podatności jest wyciek poświadczeń klienta OAuth2 wykorzystywanych do komunikacji z usługami SAP BTP. Dalszy wpływ incydentu zależy od zakresu uprawnień przypisanych przejętemu klientowi. W środowiskach produkcyjnych może to oznaczać nieautoryzowany dostęp do usług backendowych, odczyt danych, wykonywanie operacji w imieniu aplikacji, a nawet dalszy ruch boczny w architekturze chmurowej.

Ryzyko rośnie w aplikacjach wielodzierżawnych, które dynamicznie przyjmują identyfikatory tenantów z żądań użytkowników, integracji lub pośrednich mechanizmów konfiguracyjnych. W takich wdrożeniach brak ścisłej walidacji wejścia znacząco zwiększa powierzchnię ataku, a maksymalna ocena CVSS 10.0 odzwierciedla bardzo poważny potencjalny wpływ operacyjny.

Rekomendacje

Organizacje korzystające z SAP Cloud SDK for Python powinny w pierwszej kolejności ustalić, czy ich aplikacje przekazują tenant subdomain do mechanizmów uwierzytelniania lub usług takich jak Destination czy Document Management Service. Następnie należy potwierdzić dokładną wersję biblioteki oraz ocenić, czy środowisko mogło przyjmować nieautoryzowane dane wejściowe.

  • Zaktualizować bibliotekę co najmniej do wersji 0.55.1 lub nowszej stabilnej wersji z pełną walidacją.
  • Nie pozostawać na gałęzi 0.36.x, która nie zapewnia skutecznej ochrony.
  • Wdrożyć własną walidację tenant subdomain po stronie aplikacji, najlepiej z użyciem ścisłej listy dozwolonych wartości.
  • Przeanalizować logi pod kątem nietypowych prób pobierania tokenów oraz połączeń wychodzących do nieznanych hostów.
  • Rozważyć rotację client secret i innych poświadczeń OAuth2, jeśli aplikacja działała w podatnej wersji.
  • Ograniczyć uprawnienia klientów OAuth2 zgodnie z zasadą najmniejszych uprawnień.
  • Dodać reguły detekcyjne monitorujące anomalie w ruchu do endpointów autoryzacyjnych.

W bardziej dojrzałych środowiskach bezpieczeństwa warto również przeprowadzić code review komponentów, które budują adresy URL na podstawie danych pochodzących od użytkownika lub z kontekstu najemcy. Tego typu błędy często wracają po refaktoryzacji lub migracji do modułów współdzielonych.

Podsumowanie

CVE-2026-89111 pokazuje, jak krytyczne konsekwencje może mieć pozornie niewielki błąd walidacji danych wejściowych w mechanizmach uwierzytelniania. W przypadku SAP Cloud SDK for Python luka może prowadzić do ujawnienia poświadczeń OAuth2 i otworzyć drogę do dalszego naruszenia bezpieczeństwa aplikacji chmurowej.

Dla zespołów odpowiedzialnych za bezpieczeństwo i rozwój oprogramowania priorytetem powinno być szybkie ustalenie używanych wersji, aktualizacja do bezpiecznego wydania, wdrożenie dodatkowych mechanizmów walidacji oraz ocena, czy używane wcześniej poświadczenia nie wymagają wymiany.

Źródła

  1. https://thehackernews.com/2026/10/sap-discloses-critical-cvss-10-flaw-in.html
  2. https://github.com/SAP/cloud-sdk-python/security/advisories
  3. https://github.com/SAP/cloud-sdk-python
  4. https://github.com/SAP/cloud-sdk-python/releases
  5. https://pypi.org/project/sap-cloud-sdk/