A képfájlokat általában biztonságos fájloknak tekintik, és gyakran a potenciális biztonsági problémák tudatosítása nélkül kezelik őket. Ezek a képfájlok, különösen az SVG fájlok, gyakori támadási vektorok olyan veszélyes támadások indításához, mint a Cross-Site Scripting (XSS) vagy az XML External Entity (XXE) injekció. Az XSS-támadásokkal ellentétben a XXE-injekciós támadások nem érintik a kliensoldalt, de a szerveroldalt jelentősen befolyásolhatják, ami számos súlyos következménnyel járhat. Ebben a blogbejegyzésben a XXE-támadások természetét vizsgáljuk meg, kifejezetten a Scalable Vector Graphics (SVG) támadási vektoron keresztül, megvitatunk egy valós példát, és az OPSWAT termékekkel ellátott elhárítási stratégiákat mutatunk be.
Háttérinformációk
Mielőtt belemerülnénk a sebezhetőségbe, először megvizsgáljuk az XML, SVG fájlformátumot és a XXE injekciós technika mögött meghúzódó okot.
XML fájlformátum
Az XML (eXtensible Markup Language) egy platformfüggetlen fájlformátum strukturált adatok tárolására és cseréjére. Az XML támogatja a hierarchikus struktúrát, így ideális az összetett adatkapcsolatok ábrázolására. Az XML-formátumban az adatok a HTML-hez hasonlóan címkék, attribútumok és tartalom szerint szerveződnek. Az XML azonban nagymértékben testreszabható és bővíthető, lehetővé téve a felhasználók számára, hogy a címkéket és attribútumokat saját igényeiknek megfelelően határozzák meg. Az alábbi ábra az IT osztály adatait mutatja be XML formátumban.
XML entitások
Az XML-ben az entitások az adatok helyőrzői, amelyek lehetővé teszik a szöveg vagy teljes dokumentumok beágyazását az aktuális dokumentumba. Szintaktikailag az XML-ben egy entitást egy nagykötőjel (&) és egy pontosvessző (;) zárja körül. Az alábbi példában két entitást definiáltunk a Document Type Definitionban, és az XML-fájl tartalmára hivatkozunk. A különbség a két entitás között az, hogy a belső entitás az aktuális dokumentumon belül van definiálva és hivatkozik rá, míg a külső entitás tartalma egy külső dokumentumból származik. Az entitások elemzése és felbontása után az entitások helyébe a megfelelő adatok lépnek.
SVG fájlformátum
Az SVG (Scalable Vector Graphics) egy sokoldalú fájlformátum, amelyet széles körben használnak a webfejlesztésben, a grafikai tervezésben és az adatvizualizációban. A hagyományos képformátumokkal, például a JPEG vagy a PNG formátummal ellentétben az SVG XML formátumot használ a kétdimenziós vektorgrafikák leírására. Az SVG-képek konkrétan geometriai alakzatokból, például vonalakból, görbékből és sokszögekből állnak, amelyeket nem egyedi pixelek, hanem matematikai egyenletek határoznak meg. Ennek eredményeképpen az SVG grafikák minőségromlás nélkül végtelenül méretezhetők, így ideálisak a reszponzív webes tervezéshez és a nagy felbontású kijelzőkhöz. Az SVG formátum XML jellege miatt potenciális támadási vektorokat is biztosít az XML-hez kapcsolódó exploitok számára.
XXE befecskendezési technika és hatások
A XXE injekciós technika visszaél a külső entitásfeloldó mechanizmussal. Konkrétan, amikor az elemző egy külső entitással találkozik, az erőforrásfájl típusa alapján lekérné a megfelelő tartalmat.
Ha az erőforrásfájl helyi, az elemző lekérdezi a fájl tartalmát, és az entitást a megfelelő adatokkal helyettesíti. Ez lehetővé tenné a támadó számára, hogy érzékeny adatokat, például a kiszolgáló konfigurációját, hitelesítő adatokat stb. mutasson meg. A sebezhetőség sikeres kihasználásához a támadó egy külső entitást deklarál, amely érzékeny fájlok tartalmára hivatkozik, például /etc./password.
Ha azonban az erőforrás távoli vagy belső szolgáltatás, az elemző a megadott URL-cím lekérdezésével próbálja lekérni az adatokat. Ez kihasználható szerveroldali kéréshamisítás (SSRF) végrehajtására. Ebben az esetben a támadó ahelyett, hogy egy helyi fájlra hivatkozna, a hasznos terhet a sebezhető szolgáltatás URL-címére változtatja, hogy a kiszolgáló nevében kérjen.
XXE támadás az SVG fájl helytelen kezelésével: Egy esettanulmány
Egy XXE-t fogunk vizsgálni egy valós esetre, az SVGLIB könyvtár 0.9.3-as verziójáig. A sebezhetőséget 2020-ban fedezték fel, és a CVE-2020-10799 azonosítót kapta. Először megvizsgáljuk a könyvtár áramlását, elemezzük a sebezhető kódrészletet, végül pedig egy SVG-ről PNG-re konvertáló szolgáltatáson keresztül bizonyítjuk a kihasználást. A célpont a saját fejlesztésű webes alkalmazások, amelyek sebezhető SVGLIB verziókat használnak a konverzióhoz.
svglib csomag
Az svglib egy tiszta Python könyvtár, amelyet az SVG formátum más formátumokba, például PNG, JPG, PDF stb. konvertálására terveztek a Report Lab nyílt forráskódú eszközkészletének segítségével. Mivel az SVG fájlok XML formátumot használnak, az XML elemzése és kezelése is releváns része a könyvtár fő áramlásának. A könyvtár 3 fő lépése a következő:
Kihasználás
A sebezhetőség az SVG fájl elemzési folyamatában rejlik, ha rosszul van beállítva, kiszivárogtatja az érzékeny adatokat a kiszolgálón, és potenciálisan SSRF sebezhetőséget okozhat. Az svglib csomag forráskódjának további vizsgálata szerint a XXE sebezhetőséget az SVG fájl betöltésekor az XML formátum elemzésére és kezelésére szolgáló alapértelmezett konfiguráció használata okozza. A csomag az lxml csomagot használta, amelyben az XMLParser osztály resolve_ entities attribútumának alapértelmezett értéke True.
Helyreállítás
A probléma gyökere a nem biztonságos XML-elemzés, amely az svglib könyvtárban és az lxml függőség részeként helytelenül van implementálva. Ennek eredményeként a könyvtár sebezhető verziójának használata érzékeny információk felfedését, kiszolgálóoldali kéréshamisítást vagy akár potenciális távoli kódfuttatást is eredményezhet, a telepített környezettől és az alkalmazás funkcionalitásától függően. A harmadik féltől származó könyvtárak által bevezetett sebezhetőség komoly problémát jelent a nagy alkalmazások biztonsága szempontjából, mivel függőségeik összetettek és nem átláthatóak lehetnek.
MetaDefender Software Supply Chain
OPSWAT MetaDefender Software Supply Chain több technológia kombinációjával bővített átláthatóságot és szilárd védelmet biztosít az ellátási lánc kockázatai ellen. OPSWAT Software Bill of Materials (SBOM) segít átláthatóságot szerezni a nyílt forráskódú, harmadik féltől származó szoftvercsomagokba, és azonosítani a konténerkép minden rétege alatt létező szoftverfüggőségeket, sebezhetőségeket vagy más potenciális kockázatokat. A több mint 30 vírusirtó motor együttes integrációjával a Multiscanning technológia rosszindulatú szoftverek felismerési aránya több mint 99,99%-ot ér el. Továbbá a Proactive DLP (Data Loss Prevention) technológia azonosítja a forráskódban hagyott hitelesítő adatokat, például jelszavakat, titkokat, tokeneket, API kulcsokat vagy más érzékeny információkat. A zéró bizalomra épülő fenyegetésfelismerő és -megelőző technológiáinkkal az Ön szoftverfejlesztési életciklusa (SDLC) védve van a rosszindulatú programoktól és a sebezhetőségektől, erősítve az alkalmazásbiztonságot és a jogszabályi megfelelőség betartását.
Az MDSSC észleli az svglib-ben található CVE-t. Az SBOM-jelentésben megjelöli a CVE súlyossági szintjét, és azonosítja a sebezhető szoftververziót.
MetaDefender Core - Deep CDR
A másik ok, ami lehetővé teszi a kihasználást, hogy az alkalmazás egy rosszindulatú hasznos teherrel megspékelt SVG fájlt dolgoz fel. Ennek eredményeképpen, ha a képfájlt a konvertáló szolgáltatásba való betáplálás előtt szanáljuk, a hasznos teher megszűnik, így megakadályozva a támadást. A MetaDefender Core weboldalon található Deep Content Disarm and Reconstruction (CDR ) technológia a fájlok szanálása és rekonstrukciója révén védelmet nyújt az ismert és ismeretlen fájlokból származó fenyegetésekkel szemben. A több mint 160 gyakori fájltípus támogatásával és több száz fájlrekonstrukciós lehetőséggel az OPSWAT'Deep CDR semlegesíti a potenciális beágyazott fenyegetéseket, biztosítva, hogy a fertőtlenített fájl biztonságos tartalommal teljes mértékben használható maradjon.

Luan Pham részt vett az OPSWAT's Critical Infrastructure Cybersecurity Graduate Fellowship Programban, és jelenleg társult behatolás-tesztelő az OPSWAT oldalon. Szenvedélye, hogy megvédje az OPSWAT termékeit a lehetséges fenyegetésekkel szemben, és megossza tudását.