Află mai multe despre cartea lui Benny Czarny, „Cybersecurity Upside Down”

Aflați mai mult
Utilizăm inteligența artificială pentru traducerile site-urilor și, deși ne străduim să fim exacți, este posibil ca acestea să nu fie întotdeauna 100% precise. Apreciem înțelegerea dumneavoastră.

SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod

De Luan Pham, Tester de penetrare asociat

Fișierele imagine sunt considerate, de obicei, fișiere sigure și sunt adesea gestionate fără a se ține cont de potențialele probleme de securitate. Aceste fișiere imagine, în special fișierele SVG, reprezintă vectori de atac obișnuiți pentru lansarea unor atacuri periculoase, precum Cross-Site Scripting (XSS) sau injectarea de entități externe XML (XXE). Spre deosebire de atacurile XSS, atacurile de tip injectare XXE nu afectează partea client, dar pot avea un impact semnificativ asupra părții server, ducând la o serie de consecințe grave. În această postare de blog, vom explora natura atacurilor XXE, în special prin intermediul vectorului de atac Scalable Vector Graphics (SVG), vom discuta un exemplu concret și vom oferi strategii de atenuare cu ajutorul produselor OPSWAT .

Informații generale

Înainte de a aprofunda vulnerabilitatea, vom examina mai întâi formatul de fișier XML, SVG și cauza principală din spatele tehnicii de injectare XXE.

Format fișier XML

XML (eXtensible Markup Language) este un format de fișier independent de platformă pentru stocarea și schimbul de date structurate. XML suportă structura ierarhică, ceea ce îl face ideal pentru reprezentarea relațiilor complexe dintre date. Datele în format XML sunt organizate în etichete, atribute și conținut, în același mod ca HTML. Cu toate acestea, XML este foarte personalizabil și extensibil, permițând utilizatorilor să își definească etichetele și atributele în funcție de cerințele lor. Figura de mai jos prezintă datele departamentului IT în format XML.

SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod

Entități XML

În XML, entitățile sunt marcaje pentru date care vă permit să încorporați text sau documente întregi în documentul curent. Din punct de vedere sintactic, o entitate în XML este delimitată de o ampersandă (&) și un punct și virgulă (;). În exemplul de mai jos, două entități sunt definite în Document Type Definition și se referă la conținutul fișierului XML. Diferența dintre cele două entități este că entitatea internă este definită și menționată în cadrul documentului curent, în timp ce conținutul entității externe provine dintr-un document extern. După analizarea și rezolvarea entităților, entitățile sunt înlocuite cu datele corespunzătoare.

SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod
SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod

Format fișier SVG

SVG (Scalable Vector Graphics) este un format de fișier versatil utilizat pe scară largă în dezvoltarea web, designul grafic și vizualizarea datelor. Spre deosebire de formatele de imagine tradiționale precum JPEG sau PNG, SVG utilizează formatul XML pentru a descrie grafica vectorială bidimensională. Mai exact, imaginile SVG sunt compuse din forme geometrice precum linii, curbe și poligoane, definite prin ecuații matematice mai degrabă decât prin pixeli individuali. Ca urmare, grafica SVG poate fi scalată la infinit fără a pierde din calitate, ceea ce o face ideală pentru designul web responsiv și afișajele de înaltă rezoluție. Datorită naturii XML a formatului SVG, acesta oferă, de asemenea, potențiali vectori de atac pentru exploatările legate de XML.

SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod

Tehnica de injectare și impactul XXE

Tehnica de injectare XXE abuzează de mecanismul de rezolvare a entităților externe. Mai exact, atunci când analizorul întâlnește o entitate externă, acesta ar căuta conținutul corespunzător pe baza tipului de fișier resursă.

Dacă fișierul resursă este local, analizorul va prelua conținutul fișierului și va înlocui entitatea cu datele corespunzătoare. Acest lucru ar permite unui atacator să afișeze date sensibile, cum ar fi configurația serverului, acreditările etc. Pentru a exploata cu succes vulnerabilitatea, atacatorul declară o entitate externă care se referă la conținutul fișierelor sensibile, /etc./password de exemplu.

Cu toate acestea, dacă resursa este la distanță sau un serviciu intern, analizorul va încerca să obțină datele prin solicitarea URL-ului definit. Acest lucru ar putea fi exploatat pentru a efectua o falsificare a cererii pe partea serverului (SSRF). În acest caz, în loc să se refere la un fișier local, atacatorul va schimba sarcina utilă cu URL-ul serviciului vulnerabil pentru a solicita în numele serverului.

Atac XXE prin manipularea greșită a fișierelor SVG: Un studiu de caz

Vom investiga un XXE pentru un caz din lumea reală, biblioteca SVGLIB până la versiunea 0.9.3. Vulnerabilitatea a fost descoperită în 2020 și atribuită CVE-2020-10799. Vom examina mai întâi fluxul bibliotecii, vom analiza fragmentul de cod vulnerabil și, în cele din urmă, vom dovedi exploatarea prin intermediul unui serviciu de conversie SVG în PNG. Ținta sunt aplicațiile web autoimplementate care utilizează versiuni vulnerabile ale SVGLIB pentru conversie.

Pachetul svglib

svglib este o bibliotecă Python pură concepută pentru a converti formatul SVG în alte formate, cum ar fi PNG, JPG, PDF etc., utilizând setul de instrumente Report Lab Open-Source. Deoarece fișierele SVG utilizează formatul XML, analizarea și manipularea XML este, de asemenea, o parte relevantă a fluxului principal al bibliotecii. Cele 3 etape principale ale bibliotecii sunt următoarele:

SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod

Exploatare

Vulnerabilitatea constă în procesul de analiză a fișierelor SVG; dacă este configurată greșit, datele sensibile de pe server se vor scurge și pot cauza vulnerabilități SSRF. În urma examinării suplimentare a codului sursă al pachetului svglib, vulnerabilitatea XXE este cauzată de utilizarea configurației implicite pentru analizarea și gestionarea formatului XML la încărcarea fișierului SVG. Pachetul a utilizat pachetul lxml, în care valoarea implicită pentru atributele resolve_ entities pentru clasa XMLParser este True.

SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod
SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod

Remediere

Cauza principală a problemei este parsarea XML nesigură, care este implementată incorect în biblioteca svglib și face parte din dependența lxml. Ca urmare, utilizarea unei versiuni vulnerabile a acestei biblioteci poate duce la divulgarea de informații sensibile, la falsificarea cererilor pe partea serverului sau chiar la o potențială execuție de cod de la distanță, în funcție de mediul implementat și de funcționalitatea aplicației. Vulnerabilitatea introdusă de bibliotecile terțe reprezintă o problemă gravă pentru securitatea aplicațiilor de mari dimensiuni, deoarece dependențele acestora pot fi complexe și nu transparente.

MetaDefender Software Supply Chain

OPSWAT MetaDefender Software Supply Chain oferă o vizibilitate extinsă și o apărare solidă împotriva riscurilor lanțului de aprovizionare printr-o combinație de tehnologii multiple. OPSWAT Software Bill of Materials (SBOM) ajută la obținerea vizibilității pachetelor software open-source ale terților și la identificarea dependențelor software, a vulnerabilităților sau a altor riscuri potențiale existente sub fiecare strat al imaginii unui container. Cu integrarea a peste 30 de motoare antivirus combinate, rata de detectare a programelor malware a tehnologieiMultiscanning atinge peste 99,99%. În plus, tehnologiaProactive DLP (Data Loss Prevention) identifică credențiale precum parole, secrete, token-uri, chei API sau alte informații sensibile lăsate în codul sursă. Cu ajutorul tehnologiilor noastre de detectare și prevenire a amenințărilor de încredere zero, ciclul de viață al dezvoltării software (SDLC) este protejat de malware și vulnerabilități, consolidând securitatea aplicațiilor și respectarea conformității.

SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod
SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod

MDSSC detectează CVE-ul găsit în svglib. De asemenea, marchează nivelul de severitate CVE în raportul SBOM și identifică versiunea de software vulnerabilă.

MetaDefender Core Tehnologia Deep CDR™

Un alt motiv care face posibilă exploatarea este faptul că aplicația procesează un fișier SVG în care a fost injectată o sarcină utilă rău intenționată. Prin urmare, dacă fișierul imagine ar fi curățat înainte de a fi transmis serviciului de conversie, sarcina utilă ar fi eliminată, împiedicând astfel producerea atacului. Tehnologia Deep Content Disarm and Reconstruction CDR) din MetaDefender Core împotriva amenințărilor cunoscute și necunoscute transmise prin fișiere, prin curățarea și reconstrucția fișierelor. Cu suport pentru peste 160 de tipuri de fișiere comune și sute de opțiuni de reconstrucție a fișierelor, tehnologia Deep CDR™ OPSWATneutralizează orice potențiale amenințări încorporate, asigurându-se că fișierul curățat își păstrează utilitatea completă cu conținut sigur.

SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod
Fișierul SVG malițios
SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod
Fișierul SVG după ce a fost curățat cu ajutorul tehnologiei MetaDefender Core Deep CDR™
SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod
MetaDefender Core Rezultat curățat prin tehnologia Deep CDR™

SVG dezvăluit: Înțelegerea vulnerabilităților XXE și apărarea bazei dvs. de cod
Biografie autor

Luan Pham a participat la programul de burse pentru absolvenți în domeniul securității cibernetice a infrastructurilor critice OPSWAT și este în prezent tester de penetrare asociat la OPSWAT. Este pasionat de protejarea produselor OPSWAT împotriva amenințărilor potențiale și de împărtășirea cunoștințelor sale.

Luan Pham
Tester de penetrare asociat

Rămâneți la curent cu OPSWAT!

Înscrie-te astăzi pentru a primi cele mai recente noutăți despre companie, povești, informații despre evenimente și multe altele.