Creșterea rapidă a tehnologiei a creat o cerere mare de dezvoltatori calificați. Software-ul open-source (OSS) a devenit un instrument vital pentru această forță de muncă în creștere. Sute de mii de pachete OSS bine stabilite există în prezent în diferite limbaje de programare. Peste 90% dintre dezvoltatori utilizează aceste componente open-source în cadrul aplicațiilor lor proprietare, ceea ce evidențiază eficiența și valoarea propusă de OSS. Accentuând și mai mult importanța sa, se preconizează că piața globală a OSS va ajunge la 80,7 miliarde de dolari până în 2030, reflectând o rată de creștere anuală de 16,7%.
Cu toate acestea, adoptarea pe scară largă a OSS introduce, de asemenea, un nou nivel de complexitate: vulnerabilitățile de securitate. Numărul mare de componente OSS interconectate creează o suprafață de atac mai largă pe care actorii rău intenționați o pot exploata. Gestionarea dependențelor între diferitele pachete OSS poate fi complexă, ceea ce face dificilă identificarea și remedierea promptă a vulnerabilităților. În plus, securitatea OSS se bazează adesea pe vigilența și contribuțiile comunității dezvoltatorilor. Acest lucru poate duce la întârzieri în remedierea vulnerabilităților, în special pentru proiectele mai puțin populare.
În acest articol, bursierii absolvenți OPSWAT examinează CVE-2023-33733, un defect de securitate descoperit în populara bibliotecă open-source ReportLab. Analiza lor este combinată cu un atac simulat care utilizează MetaDefender Core cu software-ul său Software Bill of Materials (SBOM) pentru a identifica vulnerabilitățile din dependențele unei aplicații, inclusiv biblioteca vulnerabilă ReportLab.
Introducerea bibliotecii Reportlab
ReportLab, o bibliotecă Python puternică și open-source, permite utilizatorilor să genereze PDF-uri bogate în funcții din codul Python. Aceasta oferă dezvoltatorilor o combinație câștigătoare: flexibilitate, ușurință de utilizare și opțiuni extinse de personalizare pentru crearea de documente dinamice. Biblioteca oferă dezvoltatorilor un control sporit asupra PDF-urilor lor, permițând încorporarea precisă a textului, imaginilor, tabelelor și graficelor cu o precizie meticuloasă. Acest nivel de personalizare face din ReportLab un instrument valoros pentru generarea de documente dinamice, cum ar fi facturile și rapoartele bazate pe date.
CVE-2023-33733 Context
CVE-2023-33733 evidențiază o vulnerabilitate de securitate în cadrul bibliotecii ReportLab, care afectează mai multe versiuni ale bibliotecii ReportLab.
- Versiunile ReportLab anterioare versiunii 3.6.13 s-au dovedit a fi vulnerabile la eludarea sandbox-ului, în special în cadrul
"rl_safe_eval
funcție. Exploatarea a fost realizată prin intermediul atributului color al etichetelor HTML, care a fost evaluat direct ca o expresie Python utilizând funcțiaeval()
ceea ce duce în cele din urmă la executarea codului de la distanță. - Analiștii NVD au atribuit un scor CVSS de 7.8 HIGH pentru CVE-2023-33733.
Analiza vulnerabilității de securitate ReportLab
OPSWAT Graduate Fellows au efectuat o analiză aprofundată a fluxului de lucru ReportLab, identificând cauza principală a vulnerabilității de securitate CVE-2023-33733.
ReportLab permite dezvoltatorilor să creeze PDF-uri în mod eficient. Biblioteca permite integrarea fără efort: importați biblioteca, definiți conținutul HTML și generați PDF-ul într-o singură linie de cod utilizând funcția rezultat.
Bursierii noștri absolvenți au descoperit un proces în 5 pași pentru crearea PDF-urilor din HTML cu ReportLab.
În cadrul procesului în 5 pași de creare a PDF-urilor din HTML cu ReportLab, trei procese principale ies în evidență: procesarea paragrafelor, procesarea paraparagrafelor și procesul de manipulare HTML.
Așa cum este ilustrat în figura de mai sus, procesul de manipulare HTML din cadrul ReportLab utilizează eval()
în special pe atributul de culoare. Servind drept punct focal pentru executarea codului malițios, fișierul eval()
determină cercetătorii să încerce să obțină controlul asupra intrărilor sale pentru a exploata aplicația. Cu toate acestea, acest lucru este dificil din cauza sandbox-ului impus de __rl_safe_eval__
în cadrul ReportLab.
ReportLab a implementat un sandbox numit __rl_safe_eval__
. Acest sandbox exclude toate funcțiile Python integrate și include mai multe funcții integrate suprapuse. Această restricție permite executarea codului sigur în cadrul bibliotecii, împiedicând în același timp accesul la funcții și biblioteci periculoase care ar putea fi utilizate în scopuri rău intenționate (de exemplu, accesul la sistemul de fișiere, comunicarea în rețea).
The rl_safe_eval
implementează diverse condiții pentru a se asigura că atributul invocat este sigur înainte de a utiliza funcția integrată Python getattr()
pentru a o extrage și a returna rezultatul.
Funcția safe eval urmărește să securizeze mediul prin excluderea funcțiilor periculoase și prevenirea acțiunilor rău intenționate. Cu toate acestea, dacă se găsește o modalitate de a ocoli condițiile sale și de a accesa o funcție integrată puternică, aceasta ar putea fi exploatată.
Pornind de la această idee, cercetătorii în domeniul securității au încercat să ocolească restricțiile. Inițial, ei au exploatat injectarea de obiecte utilizând tip()
pentru a construi un obiect și a-i redefini atributele și metodele pentru a eluda verificările din cadrul __rl_safe_eval__
. În plus, deoarece biblioteca ReportLab suprascrie funcțiile încorporate și le face globale în contextul eval, cercetătorul ar putea profita de această implementare pentru a accesa una dintre funcțiile încorporate originale. Acest lucru le-ar putea permite să ocolească mediul sandbox și să execute coduri malițioase.
Sarcina utilă este pregătită după cum urmează:
Cu toate acestea, executarea unei expresii multilinie într-un context eval nu este posibilă. Cu toate acestea, poate fi utilizat un truc de înțelegere a listei, iar sarcina utilă pentru exploatarea acestui CVE este următoarea:
RaportLab Exploatare Simulare
Cercetătorii au publicat o probă de concept (POC) pentru CVE-2023-33733, demonstrând că aplicațiile construite cu versiuni vulnerabile ale ReportLab ar putea fi susceptibile la atacuri cibernetice. Pentru a evalua această amenințare potențială, bursierii absolvenți OSPWAT au efectuat un atac simulat asupra unei aplicații web. Aceștia au utilizat MetaDefender Core cu capabilități SBOM pentru a identifica vulnerabilitățile de securitate din cadrul dependențelor software ale aplicației, inclusiv prezența bibliotecii ReportLab afectate.
Pentru a simula această exploatare ca un scenariu real, bursierii absolvenți OPSWAT au dezvoltat o aplicație web utilizând Python și versiunea vulnerabilă a bibliotecii ReportLab. Această aplicație imită un caz tipic de utilizare: utilizatorii pot încărca un fișier HTML și îl pot converti într-un fișier PDF.
Un atacator ar putea crea un fișier HTML malițios care să conțină cod conceput pentru a exploata 33733. Acest cod ar putea ocoli sandbox-ul și compromite serverul web prin declanșarea unui reverse shell prin eval()
funcție.
O încărcare reușită a unui fișier malițios ar permite atacatorului să preia controlul asupra serverului de aplicații datorită vulnerabilității din biblioteca ReportLab depășită.
Importanța SBOM și a securității proactive
Cercetarea OPSWAT Graduate Fellows privind CVE-2023-33733 subliniază potențialele riscuri de securitate asociate cu OSS. În timp ce OSS oferă beneficii incontestabile în ceea ce privește eficiența dezvoltării și rentabilitatea, vulnerabilități precum cea găsită în ReportLab pot expune organizațiile la atacuri cibernetice.
OPSWAT SBOM securizează lanțul de aprovizionare cu software prin furnizarea unui inventar cuprinzător al componentelor pentru codul sursă și containere. Acesta suportă peste 10 limbaje, inclusiv Java, JavaScript, Go, PHP și Python, peste 5 milioane de componente software open-source de la terți și utilizează o bază de date cu peste 17 000 de vulnerabilități provenite din National Vulnerability Database (NVD) și GitHub (GHSA).
OPSWAT MetaDefender Core, cu capacitățile sale integrate SBOM, permite organizațiilor să abordeze proactiv aceste riscuri. MetaDefender Core scanează aplicațiile software și dependențele, identificând prezența vulnerabilităților cunoscute, precum CVE-2023-33733, în cadrul componentelor enumerate. Acest lucru permite dezvoltatorilor și echipelor de securitate să prioritizeze eforturile de patch-uri și să atenueze riscurile de securitate înainte ca acestea să poată fi exploatate.
Gânduri de încheiere
Cercetarea OPSWAT Graduate Fellows privind vulnerabilitatea ReportLab (CVE-2023-33733) reamintește importanța măsurilor de securitate proactive în ciclul de viață al dezvoltării software. Prin utilizarea unor instrumente precum OPSWAT MetaDefender Core, organizațiile pot obține informații esențiale despre dependențele lor software și pot identifica vulnerabilitățile potențiale înainte ca acestea să fie exploatate de atacatori.
În plus, OPSWAT oferă o suită completă de soluții de securitate cibernetică care merg dincolo de scanarea vulnerabilităților. Aceste soluții oferă detectarea amenințărilor în timp real, securitatea datelor și protecția punctelor finale, protejând organizațiile de o gamă largă de amenințări cibernetice. Prin adoptarea unei abordări de securitate stratificată care include instrumente precum MetaDefender Core, organizațiile pot profita de avantajele OSS, minimizând în același timp riscurile de securitate asociate.