SAP Cloud SDK for Python: vulnerabilitate CVSS 10 poate expune credențialele OAuth2
SAP a publicat un aviz de securitate pentru CVE-2026-89111, o vulnerabilitate de tip server-side request forgery (SSRF) cu severitate maximă (CVSS 10.0) în Cloud SDK for Python, clientul Python oficial pentru serviciile SAP Business Technology Platform (BTP). În versiunile afectate, client ID-ul și client secret-ul OAuth2 ale unei aplicații pot ajunge pe un server ales de atacator. Teste independente arată, în plus, că remedierea din august nu se mai aplică în unele versiuni ulterioare.
Ce s-a întâmplat
Aplicațiile BTP multi-tenant transmit SDK-ului un subdomeniu de tenant ca să indice cărui tenant îi aparține cererea. SDK-ul construiește apoi URL-ul de token al tenantului, inserând subdomeniul în endpoint-ul de token din configurația aplicației, și trimite acolo credențialele clientului pentru a obține un token de acces.
Versiunile fără remediere nu validau deloc subdomeniul. Dacă un atacator poate influența această valoare, poate modifica URL-ul rezultat astfel încât schimbul de credențiale să ajungă pe o infrastructură controlată de el.
- Remedierea: versiunea 0.45.2 (21 august) a introdus o verificare care acceptă doar o singură etichetă de tip DNS (litere, cifre și cratime, maximum 63 de caractere) și respinge orice altă valoare cu o eroare. Remedierea a acoperit modulele Agent Gateway, Destination și Document Management Service.
- Regresia: potrivit testelor realizate de The Hacker News, care a rulat testele SAP pe fiecare versiune, versiunile 0.53.0–0.55.0 (10–18 septembrie) omit verificarea la apelurile către serviciul Destination, iar 0.55.0 o omite și la Document Management Service. Cauza a fost o refactorizare către un cod comun pentru cererile de token, din care validarea a lipsit. Versiunea 0.55.1 (18 septembrie) a readus verificarea.
- Linia veche: versiunile 0.36.1 și 0.36.2 au apărut după remedierea din august și tot nu o conțin. Nicio versiune 0.36.x nu are verificarea.
- Divulgarea: codul vulnerabil exista în SDK încă de la prima publicare pe PyPI, în martie. Notele versiunii din august au trecut modificarea drept simplă corectură de bug, iar avizul a apărut abia după 53 de zile. Avizul îl creditează pe cercetătorul SunandM și nu raportează exploatări active.
La 13 octombrie, avizul indică drept afectate doar versiunile sub 0.45.2. Nu precizează dacă versiunile 0.53.0–0.55.0, cele cu regresie, intră sub același CVE.
De ce contează
Credențialele de client sunt identitatea cu care o aplicație BTP apelează alte servicii. Cine le deține poate cere tokenuri în numele aplicației. Ce ar putea accesa concret un atacator depinde de permisiunile acordate acelui client, iar avizul nu oferă detalii. Condiția prealabilă e reală, dar îngustă: vulnerabilitatea contează doar acolo unde aplicația transmite SDK-ului un subdomeniu de tenant pe care un atacator îl poate controla.
Regresia aduce încă o lecție: un patch poate fi anulat de o refactorizare ulterioară. Echipele care au trecut la 0.45.2 în august și au continuat să actualizeze puteau ajunge, în septembrie, din nou pe o versiune neprotejată.
Ce trebuie făcut
- Inventariați. Identificați fiecare serviciu și imagine care depinde de
sap-cloud-sdkpentru Python și notați versiunea efectiv fixată sau instalată, nu doar intervalul declarat. - Actualizați la o versiune protejată. Folosiți ultima versiune (0.58.4 la 13 octombrie) sau orice versiune începând cu 0.55.1. Versiunile 0.45.2–0.52.2 sunt și ele protejate. Evitați 0.53.0–0.55.0 și întreaga linie 0.36: actualizarea în cadrul liniei 0.36 nu adaugă verificarea.
- Dacă nu puteți actualiza încă, urmați recomandarea SAP: validați fiecare subdomeniu de tenant față de lista tenanților înregistrați înainte de a-l transmite SDK-ului.
- Luați în calcul rotirea credențialelor. Avizul nu abordează acest subiect. Totuși, dacă o aplicație multi-tenant a rulat o versiune neprotejată și a preluat subdomeniul de tenant dintr-un input pe care un atacator îl putea influența, recomandăm rotirea preventivă a client secret-ului OAuth2.
- Analizați logurile pentru cereri de token către hosturi neașteptate și pentru subdomenii care conțin puncte, slash-uri,
@sau alți delimitatori de URL. - Protejați-vă de regresii. Adăugați teste sau politici de analiză a componentelor software (SCA) care semnalează intervalele de versiuni cunoscute ca vulnerabile, nu doar versiunile mai vechi decât prima remediere.
Credit: rezultatele testelor pe fiecare versiune aparțin The Hacker News; detaliile vulnerabilității provin din avizul de securitate SAP.
