AI Hacking - Cum folosesc hackerii inteligența artificială în atacurile cibernetice

Citește acum
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
Împărtășește această postare

Fișierele de imagine sunt considerate de obicei fișiere sigure și sunt adesea manipulate fără a fi conștiente de potențialele probleme de securitate. Aceste fișiere imagine, în special fișierele SVG, sunt vectori de atac comuni pentru lansarea unor atacuri periculoase, cum ar fi Cross-Site Scripting (XSS) sau injectarea XML External Entity (XXE). Spre deosebire de atacurile XSS, atacurile de injectare XXE nu afectează partea clientului, dar ar putea afecta semnificativ partea serverului, ducând la mai multe efecte grave. În această postare pe blog, vom explora natura atacurilor XXE în special prin intermediul vectorului de atac Scalable Vector Graphics (SVG), vom discuta un exemplu din lumea reală și vom oferi strategii de atenuare cu produsele 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. 

Fragment de cod XML care afișează detaliile angajaților într-o structură de departamente IT

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. 

Exemplu de cod al unui document XML cu entități interne și externe, inclusiv o felicitare
Exemplu de cod XML simplificat care evidențiază structura și utilizarea entităților și a conținutului

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. 

Exemplu de imagine care prezintă o structură de bază a unui fișier SVG cu conținut text

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: 

Diagrama fluxului de procese care ilustrează pașii de la analizarea unui fișier SVG până la convertirea acestuia într-un alt format

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.  

Diferență de cod care arată modificările într-o funcție Python pentru încărcarea unui fișier SVG cu opțiuni de rezoluție a entităților
Diagrama de flux a unui proces de atac XXE care utilizează fișiere SVG într-un context de securitate

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.  

Tabloul de bord OPSWAT MetaDefender Software Supply Chain prezintă rezultatele scanării depozitelor pentru vulnerabilități și amenințări
Raportul de securitate OPSWAT MetaDefender Software Supply Chain pentru un fișier requirements.txt care nu prezintă amenințări sau secrete detectate

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 - Deep CDR

Un alt motiv care face posibilă exploatarea este faptul că aplicația procesează un fișier SVG injectat cu o sarcină utilă malițioasă. Prin urmare, dacă fișierul de imagine este igienizat înainte de a fi introdus în serviciul de conversie, sarcina utilă ar fi eliminată, împiedicând astfel atacul să aibă loc. Tehnologia Deep Content Disarm and Reconstruction (CDR) din MetaDefender Core protejează împotriva amenințărilor cunoscute și necunoscute transmise de fișiere prin igienizarea și reconstrucția fișierelor. Cu suport pentru peste 160 de tipuri comune de fișiere și sute de opțiuni de reconstrucție a fișierelor, OPSWAT's Deep CDR neutralizează orice potențiale amenințări încorporate, asigurându-se că fișierul dezinfectat își menține capacitatea deplină de utilizare cu conținut sigur. 

Cod XML editabil în format SVG cu vulnerabilitatea XXE prezentată în elementul DOCTYPE
Fișierul SVG malițios
Versiune curată a codului XML în format SVG fără vulnerabilitatea XXE
Fișierul SVG după ce a fost curățat cu MetaDefender Core - Deep CDR 
Raport de securitate care arată fișierul SVG marcat ca permis și sanitizat după evaluarea vulnerabilității
MetaDefender Core - Deep CDR rezultat sanitizat

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ți-vă astăzi pentru a primi cele mai recente actualizări ale companiei, povești, informații despre evenimente și multe altele.