Mesterséges intelligencia által vezérelt kibertámadások: Hogyan lehet felismerni, megelőzni és megvédeni az intelligens fenyegetéseket?

Olvassa el most
A helyszíni fordításokhoz mesterséges intelligenciát használunk, és bár törekszünk a pontosságra, nem biztos, hogy mindig 100%-os pontosságúak. Megértését nagyra értékeljük.

A Dompdf könyvtár sebezhetőségének feltárása és elhárítása az OPSWAT MetaDefender Core 

a OPSWAT
Ossza meg ezt a bejegyzést
Tai Tran és Hai Dang Bui, az Informatikai Egyetem hallgatói pózolnak egy professzionális portréhoz kék háttér előtt.
A diákok részt vettek az OPSWAT ösztöndíjprogramban

A technológia gyors fejlődése nagy keresletet teremtett a képzett fejlesztők iránt. A nyílt forráskódú szoftverek (OSS) létfontosságú eszközzé váltak e növekvő munkaerő számára. Ma már több százezer jól bevált OSS csomag létezik különböző programozási nyelveken. A fejlesztők több mint 90%-a használja ezeket a nyílt forráskódú komponenseket saját fejlesztésű alkalmazásaiban, ami rávilágít az OSS hatékonyságára és értéknövelő hatására. A nyílt forráskódú szoftverek globális piaca 2030-ra várhatóan eléri a 80,7 milliárd dollárt, ami évi 16,7%-os növekedési ütemet jelent. 

A Software világszerte szerves részét képezik az üzleti tevékenységeknek, ezért gyakran kerülnek a fenyegetések célpontjai közé. Az alkalmazásbiztonságra fordított kiadások 2023-ban megközelítőleg 5,76 milliárd dollárt tettek ki, és az előrejelzések szerint 2024-ben elérik a 6,67 milliárd dollárt. Az AppSec-en belül a szoftverellátási lánc biztonsága az elmúlt három évben egyre nagyobb hangsúlyt kapott, és a leggyorsabban növekvő támadási kategóriát képviseli, a nagyobb szabálysértések és kihasználások rendszeresen a címlapokra kerülnek. 

A szervezetek gyakran feltételezik, hogy a legtöbb kockázat a nyilvános webes alkalmazásokból ered. Ez a szemlélet azonban az elmúlt években megváltozott. Mivel minden alkalmazásban több tucat apró komponens található, a kockázatok ma már a kódbázis bármely pontjáról eredhetnek. Minden eddiginél fontosabb, hogy a szervezetek megismerkedjenek a szoftverfejlesztés életciklusában meglévő és felmerülő biztonsági hibákkal. Ebben a blogbejegyzésben diplomás ösztöndíjasaink közelebbről megvizsgálják a CVE-2023-23924-et, egy kritikus biztonsági hibát, amelyet a széles körben használt dompdf könyvtárban fedeztek fel - egy olyan hatékony PHP-eszközben, amely lehetővé teszi a PDF-dokumentumok dinamikus generálását HTML- és CSS-ből. 

Átfogó elemzésen keresztül feltárjuk ennek a sebezhetőségnek a technikai részleteit, a kapcsolódó technológiákat, amelyek döntő szerepet játszanak, valamint a kihasználási folyamat szimulációját. Azt is megvizsgáljuk, hogy OPSWAT MetaDefender Core, különösen annak Software Bill of Materials (SBOM) motorja, felhasználható e sebezhetőség felismerésére és csökkentésére, lehetővé téve a szoftverfejlesztők és a biztonsági csapatok számára, hogy egy lépéssel a potenciális fenyegetések előtt járjanak. 

A CVE-2023-23924 háttere 

A dompdf 2.0.1-es verziójában biztonsági rést fedeztek fel, amelyet 2023 elején hoztak nyilvánosságra:

  • A dompdf 2.0.1 URI-érvényesítés megkerülhető az SVG elemzése során, ha átadjuk a <image> címkék nagybetűkkel. Ez lehetővé teszi a támadó számára, hogy tetszőleges URL-eket hívjon meg tetszőleges protokollokkal, ami tetszőleges objektum unializálásához vezet a 8.0.0 előtti PHP verziókban. A PHAR URL wrapper-en keresztül ez a sebezhetőség tetszőleges fájl törlést és akár távoli kódfuttatást is okozhat, az elérhető osztályoktól függően. 
  • Az NVD elemzői 9,8 CRITICAL CVSS pontszámot adtak a CVE-2023-23924-hez. 
A CVSS 3.x verziójának metrikáit bemutató informatív diagram, beleértve a biztonsági sebezhetőségek súlyosságát és vektorát is

A Dompdf sebezhetőség megértése 

A dompdf-ben található CVE-2023-23924 sebezhetőség teljes megértéséhez elengedhetetlen, hogy megismerkedjünk két, egymással szorosan összefüggő technológiával: Scalable Vector Graphics (SVG) és PHAR fájlok. 

SVG (skálázható vektorgrafika) 

Az SVG (Scalable Vector Graphics, skálázható vektorgrafika) egy sokoldalú képformátum, amely széles körű népszerűségre tett szert, mivel képes kiváló minőségű grafikákat megjeleníteni a weben, miközben könnyű és skálázható marad. A raszteres képekkel ellentétben az SVG-k XML-jelölésen alapulnak, ami lehetővé teszi az olyan elemek, mint a vonalak, alakzatok és szöveg pontos vezérlését. Az SVG-k egyik legfontosabb előnye, hogy zökkenőmentesen méretezhetők a képminőség romlása nélkül, így ideálisak a reszponzív webdesignhoz és a nagy felbontású kijelzőkhöz.  

Kódrészlet, amely SVG-t jelenít meg több poligonnal különböző színekben, szemléltetve az XML formátumú programozást
PHAR fájl 

A PHAR (PHP Archive) a JAR-fájl koncepcióhoz hasonló, de a PHP számára. Egyszerű telepítést tesz lehetővé azáltal, hogy az összes PHP kódot és erőforrásfájlt egyetlen archív fájlba csomagolja.  

A PHAR fájl 4 szakaszból áll:  

  • Stubs: tartalmazza az archívum bootstrapeléséhez szükséges kódot. 
  • Manifest: az archívum metaadatait tartalmazza. A metaadatokat szerializált formátumban tárolja, ami felhasználható a PHP deserializált támadás kiváltására egy rosszindulatú PHAR fájlban. 
  • Fájltartalom: az archívum tartalmát tartalmazza, beleértve a PHP-kódot, erőforrásfájlokat. 
  • Aláírás (nem kötelező): a fájl sértetlenségét igazoló adatokat tartalmazza. 

Mivel a metaadatokat szerializált formátumban tárolják, a PHAR wrapper és a PHAR fájl metaadatainak kombinációja potenciálisan deserializációs támadást válthat ki, amikor a PHP függvények bemenetként használják, mint például a file_get_contents(), fopen(), file(), file_exists(), md5_file(), filemtime(), vagy filesize(). Ez a biztonsági hiányosság lehetővé teheti a támadók számára, hogy távoli kódot hajtsanak végre egy PHAR fájlon keresztül. 

A Phar-archívum manifeszt alapvető fájlformátumát részletező táblázat, beleértve a bájtban kifejezett méretet és az egyes részek leírását is

Hogyan generál a Dompdf PDF fájlt

Folyamatábra a HTML fájl PDF formátumba történő konvertálásának folyamatáról, kiemelve a köztes lépéseket és a fájlformátumokat

az OPSWAT diplomás ösztöndíjasai elemzéssel azonosították, hogy a dompdf-en a konvertálási folyamat három szakaszból áll. Egy HTML-fájl PDF-formátumba való konvertálásához a dompdf könyvtár először a bemeneti fájlt egy DOM-fává elemzi, és tárolja az egyes objektumok pozicionálási és elrendezési információit. Ezután a CSS stíluselemek elemzése és alkalmazása következik minden egyes objektumra. Végül az objektumok átrendeződnek, hogy illeszkedjenek az oldalra, és megjelenítik a végleges PDF-fájlban.  

Biztonsági rés a Dompdf-ben

A biztonság fokozása érdekében a dompdf validálást hajt végre az URI-bemenetek biztonságának biztosítása érdekében, mielőtt a következő lépésre lépne. Ez az érvényesítési folyamat nyilvánvaló az SVG fájl feldolgozása során az értéken belül a xlink:href attribútum. 

PHP kódpélda az SVG fájlok kezelésére, az SVG tartalom elemzésére és érvényesítésére szolgáló funkciók bemutatása

Ha az SVG bemeneti fájl tartalmazza a <image> címke alatt a <svg> címke, egy olyan feltétel van bevezetve, amely csak bizonyos protokollokat engedélyez, mint például a http://, https:// és file://, a xlink:href mező.

Webes felület egy PDF Converter szolgáltatáshoz, amely lehetővé teszi a felhasználók számára, hogy HTML vagy SVG fájlokat töltsenek fel PDF-be való átalakítás céljából.

A resolve_url() függvény validálja az URI-t, mielőtt feldolgozza a drawImage() funkció. Ha az URI-ban szereplő séma nem szerepel az engedélyezett protokollok között, a resolve_url() függvény egy kivételt küld vissza az alkalmazásnak. 

PHP szkript, amely bemutatja, hogyan kell kezelni az adat URI-ket, illusztrálja a hibakezelést és a protokollellenőrzést a webes alkalmazásokban.

Ha az URI átmegy az érvényesítésen, akkor az átadásra kerül a drawImage() függvény, amely a file_get_contents() függvényt az URI érték kezelésére a xlink:href attribútum. A biztonsági sebezhetőség ezen a ponton merül fel: PHAR deserializációs támadás indulhat, ha a támadó megkerülheti az érvényesítést, és egy PHAR wrappert adhat át az URI-ban. 

Az elemzés után kiderült, hogy az érvényesítés csak a pontos névképet tartalmazó címkékre érvényes. 

PHP példa a képmanipulációra, amely részletesen bemutatja a képek URL-ekből történő rajzolását és a fájlok tartalmának kezelését.

Következésképpen ez könnyen megkerülhető, ha egy vagy több karaktert nagybetűvel írunk a címke nevében, például Image. Ennek eredményeképpen egy speciálisan kialakított SVG fájl, amely Image helyett Image-t használ, megkerülheti ezt az érvényesítést. 

A következő lépésben a drawImage() függvényt hívja meg, átadva az URI-t az SVG fájlból a file_get_contents() funkció. Ezért az érvényesítés megkerülése és a PHAR-fájl deserializációs támadásának kombinációja lehetővé teszi a támadó számára, hogy távoli kódvégrehajtást hajtson végre. Ez a sebezhetőség megnyitja a lehetőséget egy rosszindulatú támadó számára, hogy egy SVG-fájlon keresztül veszélyeztesse az alkalmazáskiszolgálót, ha azt a dompdf sebezhető verziója kezeli. 

Dompdf Exploitation szimuláció

Sebezhető alkalmazás

az OPSWAT végzős ösztöndíjasai egy valós forgatókönyvként szimulálták ezt a kihasználást, és kifejlesztettek egy webes alkalmazást, amely a dompdf könyvtár 2.0.1-es verzióját használva HTML-ből PDF-be konvertál. Ez az alkalmazás lehetővé teszi a felhasználók számára, hogy olyan fájltípusokat töltsenek fel, mint a HTML, XML vagy SVG, majd PDF-fájlokká konvertálják őket. 

Pillanatkép egy webalapú PDF konverter eszközről, amely egy humanoid avatárral jelenik meg, kiemelve a fájlfeltöltési és konverziós funkciókat.

Egy támadó a következő lépéseket követi, hogy kihasználja ezt a sebezhetőséget egy sebezhető dompdf verziót (2.0.1 verzió) használó alkalmazásban: 

PHP kódrészlet a Dompdf könyvtár használatáról a HTML HTML PDF formátumúvá konvertálásához tájkép formátumban
Composer.json fájlrészlet, amely meghatározza a Dompdf könyvtár 2.0.1-es verziójának követelményét egy PHP projekthez
Exploitation Flow
Egy grafikus diagram, amely elmagyarázza a négylépéses folyamatot az SVG fájlok kihasználásához a Dompdf sebezhetőséget használva egy fordított héj végrehajtásához.

Először is, a támadó létrehoz egy rosszindulatú objektumot, amely a destruktor meghívásakor fordított héjat hoz létre. 

PHP kódpélda, amely a PHP-ben található objektum deserializációs sebezhetőséget szemlélteti, amely távoli kódfuttatáshoz vezet egy fordított héjon keresztül

Másodszor, a támadó létrehoz egy PHAR fájlt, amely tartalmazza a rosszindulatú metaadat-objektumot. Amikor a PHAR fájlt a PHAR wrapper meghívja a PHAR-csomagolóban a file_get_content() függvény hatására a metaadatok nem kerülnek digitalizálásra, és a megadott objektum feldolgozása megtörténik. A deserializálási folyamat során elindítja a destruktorokat, és végrehajtja a fordított héjat. 

PHP-szkript, amely egy távoli parancs végrehajtásához szükséges, szerializált objektumadatokat tartalmazó Phar-archívum létrehozását mutatja be

Végül a támadó a PHAR wrapper-t tartalmazó URI linket beágyazza a PHAR wrapper értékébe. xlink:href attribútumot az Image tagben, hogy megkerülje az érvényesítést, rosszindulatú kódot hajtson végre, és feltöltse ezt a rosszindulatú fájlt az alkalmazásba. 

SVG kódrészlet, amely bemutatja, hogyan lehet beágyazni egy távoli PHP deserializációs exploitot egy képhivatkozáson keresztül

A feltöltött rosszindulatú SVG-fájl feldolgozása során az alkalmazás fordított kapcsolatot létesít a támadóval, lehetővé téve számára, hogy veszélyeztesse az alkalmazáskiszolgálót. 

Egy PDF-konvertáló webes felülete, amely a HTML/SVG fájlok feltöltésének és PDF-be való konvertálásának lehetőségeit mutatja, egy digitális emberi modellel.
Pillanatkép a Metasploit konzolról, amely egy sikeres fordított TCP-kapcsolatot és a hálózati konfiguráció részleteit mutatja.
Terminál képernyőkép a hálózati konfiguráció és a Unix rendszerből letöltött hitelesítő adatok megjelenítésével

Nyílt forráskódú komponensek biztosításaz OPSWAT MetaDefender Core 

A dompdf-ben található CVE-2023-23924 sebezhetőség észleléséhez és mérsékléséhez diplomás munkatársaink az OPSWAT MetaDefender Core , egy többrétegű kiberbiztonsági terméket használtak, amely fejlett rosszindulatú programok megelőzési és észlelési technológiákat kínál, beleértve az SBOM-ot is. 

OPSWAT Az SBOM a forráskód és a konténerek átfogó komponensleltárának biztosításával biztosítja a szoftverellátási láncot. A dompdf könyvtár és függőségeinek elemzésével az OPSWAT SBOM gyorsan azonosítja a sebezhető 2.0.1-es verzió jelenlétét, és figyelmezteti a felhasználókat a potenciális kockázatra. 

az OPSWAT SBOM emellett képes felismerni a kapcsolódó technológiákat, például az SVG és PHAR fájlokat, amelyek elengedhetetlenek a CVE-2023-23924 sebezhetőség megértéséhez és enyhítéséhez. Az alkalmazás szoftverkomponenseinek ez a holisztikus áttekintése lehetővé teszi a biztonsági csapatok számára, hogy megalapozott döntéseket hozzanak, és megfelelő intézkedéseket tegyenek az azonosított kockázatok kezelésére. 

Biztonsági elemzési felület, amely a sebezhetőségek miatt blokkolt JavaScript-fájlt mutat, részletes értékelési eredményekkel.

A sebezhető dompdf-verzió észlelésén túl az OPSWAT SBOM értékes információkat nyújt az érintett komponensekről, azok verzióiról és az elérhető frissítésekről vagy javításokról is. Ez az információ lehetővé teszi a biztonsági csapatok számára, hogy prioritást adjanak a javítási erőfeszítéseiknek, és biztosítsák, hogy az alkalmazást a dompdf biztonságos verziójára frissítsék, hatékonyan kezelve a CVE-2023-23924 sebezhetőséget. 

Részletes nézet a JavaScript objektumfájlban található sebezhetőségekről, a kritikus és magas biztonsági kockázatokat CVE azonosítókkal listázva.

A MetaDefender Core oldalon található SBOM motor segítségével a szervezetek proaktívan nyomon követhetik szoftverellátási láncukat, azonosíthatják a nyílt forráskódú komponensek potenciális sebezhetőségeit, és időben alkalmazhatnak enyhítési stratégiákat, biztosítva ezzel alkalmazásaik általános biztonságát és integritását. 

Záró gondolatok 

A CVE-2023-23924 felfedezése a dompdf könyvtárban aláhúzza az éberség kritikus szükségességét az alkalmazásbiztonság dinamikus tájékán. Az ebben a blogbejegyzésben felvázolt meglátások és stratégiák felhasználásával a biztonsági csapatok hatékonyan észlelhetik, mérsékelhetik és védhetik alkalmazásaikat az ilyen sebezhetőségekkel szemben, biztosítva ezzel a szoftver ökoszisztémájuk általános biztonságát és integritását. 

Maradjon naprakész az OPSWAT oldalon!

Iratkozzon fel még ma, hogy értesüljön a vállalat legfrissebb híreiről, történetekről, eseményinformációkról és sok másról.