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.

Rack Ruby keretrendszer biztonsági elemzése: CVE-2025-25184, CVE-2025-27111, és CVE-2025-27610

a OPSWAT
Ossza meg ezt a bejegyzést

Az OPSWAT Red Team által végzett átfogó biztonsági elemzés során Thai Do és Minh Pham biztonsági kutatók több, a Rack Ruby keretrendszert érintő sebezhetőséget azonosítottak, konkrétan a CVE-2025-25184, CVE-2025-27111 és CVE-2025-27610 kódokat.  

Ez a cikk részletes áttekintést nyújt ezekről a sebezhetőségekről, különös tekintettel a CVE-2025-27610-re. Megvizsgálja a kiváltó okokat, értékeli a lehetséges hatásokat, és hatékony enyhítési stratégiákat vázol fel a Rack keretrendszerre támaszkodó alkalmazások biztonsága érdekében. 

A Rack áttekintése

A Rack egy moduláris interfész, amely webkiszolgálókat kapcsol össze Ruby-alapú webes alkalmazásokkal. A HTTP-kérelmek és -válaszok egyetlen metódushívásba csomagolásával szabványosítja a komponensek közötti interakciót, egyszerűsítve a fejlesztési folyamatot és elősegítve a különböző keretrendszerek és szerverek közötti kompatibilitást.  

A Racket számos Ruby webes keretrendszer és könyvtár használja, például a Ruby on Rails és a Sinatra. Ruby Gem-ként érhető el. A Rack széles körű globális elterjedtsége - több mint egymilliárd letöltés világszerte - kiemeli a Ruby fejlesztői ökoszisztémában betöltött szerves szerepét. Az olyan middleware komponensek, mint a Rack::Static és a Rack::Sendfile növelik a hatékonyságot a statikus tartalomszolgáltatás kezelésével és a fájlok továbbításának optimalizálásával. E kiterjedt integráció miatt a Rackben felfedezett sebezhetőségek jelentős biztonsági következményekkel járnak, amelyek világszerte számos alkalmazást és rendszert érinthetnek. 

Biztonsági sebezhetőségek felfedezése Rackben

Az OPSWAT kutatói, Thai Do és Minh Pham a Rack middleware keretrendszeren végzett közelmúltbeli biztonsági kutatások során számos olyan sebezhetőséget azonosítottak, amelyek jelentős biztonsági kockázatot jelentenek a Ruby-alapú webes alkalmazások számára:

  • CVE-2025-25184: Thai Do felfedezett egy sebezhetőséget, amely lehetővé teszi a támadók számára, hogy a CRLF (Carriage Return Line Feed) karaktereken keresztül naplóbeírást hajtsanak végre, és így manipulálják a naplóbejegyzéseket. 
  • CVE-2025-27111: Minh Pham felfedezett egy biztonsági hibát, amely lehetővé teszi a támadók számára, hogy rosszindulatú fejlécértékeken keresztül naplótartalmat tápláljanak be és manipuláljanak. 
  • CVE-2025-27610: Minh Pham azonosított egy Path Traversal sebezhetőséget is, amely lehetővé teszi a támadók számára, hogy jogosulatlanul hozzáférjenek a kijelölt statikus fájlkönyvtáron kívül található fájlokhoz, ami jelentős biztonsági fenyegetést jelent.

E sebezhetőségek közül a CVE-2025-27610 különösen súlyos, mivel lehetővé teheti a nem hitelesített támadók számára, hogy érzékeny információkat, köztük konfigurációs fájlokat, hitelesítő adatokat és bizalmas adatokat szerezzenek meg, ami adatbetöréshez vezethet. Ez a sebezhetőség 7,5-ös CVSS pontszámot kapott, ami magas kockázatúnak minősíti.

A Rack Ruby keretrendszerben található sebezhetőségek feltárásának folyamatát bemutató ábra

Rack::Static és helyi fájlbővítési sebezhetőség

A Rack::Static megértése 

A Rack::Static a Rack-alkalmazások alapvető middleware-je, amelyet elsősorban statikus fájlok, például JavaScript, CSS és képek hatékony kiszolgálására használnak. A Rack::Static kihasználásával a fejlesztők zökkenőmentesen integrálhatják a statikus tartalmak kiszolgálását a Ruby alkalmazásokba anélkül, hogy további webkiszolgáló-konfigurációra kellene támaszkodniuk.  

A Rack::Static konfigurálásakor két lényeges beállítás kiemelkedik - :urls és :root. Ezen opciók megfelelő megértése és használata jelentősen leegyszerűsíti és egyszerűsíti a statikus fájlok kiszolgálásának folyamatát. 

1. A :urls opció

A :urls opció megadja, hogy a Rack alkalmazás mely URL-útvonalakat kezelje statikus eszközként. Ezt egy stringekből álló tömbként kell megadni, amelyek mindegyike egy olyan útvonal-előtagot jelöl, amely statikus fájlkezelést indít el. 

Például: 

Képernyőkép a Rack::Static :urls opció konfigurációját szemléltető kód egy Ruby alkalmazásban

Ebben a konfigurációban a /images, /css vagy /js címekre irányuló kéréseket a Rack::Static fogadja el és dolgozza fel. Minden, ezeknek az elérési utaknak megfelelő fájl közvetlenül a fájlrendszerből kerül kiszolgálásra. 

2. A :root opció

A :root opció meghatározza azt az alapkönyvtárat, ahonnan a statikus fájlok kiszolgálásra kerülnek. Ez a könyvtár a Rack alkalmazás aktuális munkakönyvtárához képest relatív. 

Az előző példát tekintve:

A kód képernyőképén látható a Rack::Static :root opció beállítása a statikus fájlok kiszolgálásához

Amikor a /assets/logo.png címre érkezik egy kérés, a Rack::Static megpróbálja a public/assets/logo.png címen található fájlt kiszolgálni. 

Gyakorlati példa

A Rack::Static hatékony implementálása a :urls és :root opciók segítségével egy szervezett és hatékony módszert biztosít a statikus tartalom kiszolgálására a Ruby webes alkalmazásokban: 

Képernyőkép a Rack::Static konfiguráció gyakorlati példájáról statikus tartalom esetén

Ebben a forgatókönyvben a /assets/* és a /favicon.ico címekre irányuló kéréseket automatikusan a Rack::Static kezeli. A megfelelő fájloknak a public/assets könyvtárban, illetve a public/favicon.ico könyvtárban kell létezniük. 

CVE-2025-27610 Technikai részletek

A Rack::Static átfogó biztonsági elemzése során Minh Pham egy jelentős sebezhetőséget fedezett fel, amely a :root opció nem megfelelő kezelésével kapcsolatos. Konkrétan, ha a :root paraméter nincs explicit módon definiálva, a Rack alapértelmezés szerint ezt az értéket az aktuális munkakönyvtárnak adja meg a Dir.pwd értékével, implicit módon kijelölve azt a Rack alkalmazás webes gyökérkönyvtáraként. 

Jelentős, hogy a Rack::Static közvetlenül a bejövő URL-útvonalakat kapcsolja össze a megadott :root könyvtárral, megfelelő érvényesítés vagy szanálás nélkül. Következésképpen, ha a :root opció nem definiált vagy rosszul van konfigurálva a :urls opcióhoz képest, egy nem hitelesített támadó kihasználhatja ezt a sebezhetőséget az elérési utak átszúrásával, hogy hozzáférjen a tervezett webes könyvtáron kívüli érzékeny fájlokhoz. 

A következő részben részletesen elemezzük a Rack::Static kéréskezelési folyamatát, világosan bemutatva, hogyan lehet kihasználni ezt a sebezhetőséget.

Path Traversal és Local File Inclusion sebezhetőség a Rack::Static-ban

Annak érdekében, hogy jobban megértsük, hogyan dolgozza fel a Rack::Static middleware a kéréseket, Minh Pham alaposan elemezte a Rack forráskódját. A Rack::Static osztály inicializálása során megfigyelte, hogy ha a :root opció nincs explicit módon definiálva, a Rack::Static alapértelmezés szerint az aktuális munkakönyvtárból (Dir.pwd) szolgáltatja ki a fájlokat. Következésképpen ennek az opciónak a kihagyása azt eredményezi, hogy a middleware implicit módon azt a könyvtárat használja, ahonnan az alkalmazást futtatja.

A Rack::Static inicializálását és az alapértelmezett :root könyvtár hozzárendelését bemutató kódkép.
Kódkép a Rack::Static hívásmód HTTP-kérelmek kezelését szemléltető képernyőmentésről

Az inicializálást követően megállapítást nyert, hogy amikor a Rack::Static bejövő HTTP-kérést kap, a hívás metódus meghívásra kerül.

A kód képernyőképén látható, ahogy a Rack::Static delegálja a fájlkiszolgálást a Rack::Files-nak.

Ezt követően a Rack::Static a fájlkiszolgálási műveletet a Rack::Files-nak delegálja, amely megpróbálja megkeresni és kiszolgálni a fájlt a konfigurált :root könyvtárból és a felhasználó által megadott PATH_INFO-ból származtatott fájlútvonal alapján.

Képernyőmentés a fájl elérési útvonalának kialakítását ábrázoló kód a Rack::Static-ban a :root és a PATH_INFO használatával.

Először a can_serve(path) és az overwrite_file_path(path) metódusok meghívásával a middleware megvizsgálja az env["PATH_INFO"]-t, hogy meghatározza, hogy a bejövő kérés megfelel-e a konfigurált URL-előtagok valamelyikének (pl. /static, /public). 

Képernyőkép a Rack::Static fájl elérési útvonalak ellenőrzésére és felülírására szolgáló módszerekről

Ha a feltétel teljesül, a Rack::Static a fájl elérési útvonalát a konfigurált gyökérkönyvtár (:root) és a felhasználó által megadott PATH_INFO kombinálásával állítja össze. Ez a konstrukció a bemeneti útvonal megfelelő normalizálása vagy szanálása nélkül történik. Konkrétan a middleware közvetlenül a bejövő kérésből származó PATH_INFO-t kapcsolja össze a :root opció által megadott könyvtárral, ami a megadott útvonal elégtelen validálása miatt sebezhetőséget okoz.

Képernyőkép a sebezhető fájlútvonal-összekapcsolást szemléltető kód a Rack::Static-ban

Minh Pham felfedezte, hogy a megfelelő szanálás vagy érvényesítés hiánya miatt ebben a munkafolyamatban, ha a felhasználó által megadott PATH_INFO könyvtárátjárási szekvenciákat tartalmaz, és a :root opció nincs explicit módon definiálva, a konstruált fájlútvonal a tervezett gyökérkönyvtáron kívüli helyre oldódhat fel, potenciálisan érzékeny fájlokat felfedve.

CVE-2025-27610 Koncepció bizonyítása

A Rack::Static sebezhetőségének demonstrálására egy Ruby-alapú webes alkalmazást fejlesztettünk a Rack 3.1.10-es verzióját használva. Azokban az esetekben, amikor az alkalmazás nem határozza meg kifejezetten a :root opciót, egy nem hitelesített támadó kihasználhatja ezt a sebezhetőséget, hogy hozzáférjen érzékeny adatokhoz, például hitelesítő adatokhoz, konfigurációs fájlokhoz vagy adatbázisfájlokhoz, ami jelentős adatvesztéshez vezethet. 

Az alábbi videón részletesen bemutatjuk, hogy milyen jelentős hatással jár ez a sebezhetőség:

Enyhítés és iránymutatás

A fent említett sebezhetőségek csökkentése érdekében kérjük, gondoskodjon arról, hogy rendszere a Rack legújabb verziójára legyen frissítve.

A MetaDefender Core az SBOM motor segítségével képes észlelni ezt a sebezhetőséget.

OPSWAT MetaDefender Core, amely fejlett SBOMSoftware Bill of Materials) képességekkel van felszerelve, lehetővé teszi a szervezetek számára, hogy proaktív módon kezeljék a biztonsági kockázatokat. A MetaDefender Core a szoftveralkalmazások és függőségeik átvizsgálásával azonosítja az ismert sebezhetőségeket, például a CVE-2025-27610, CVE-2025-27111 és CVE-2025-25184 jelzésűeket a felsorolt összetevőkön belül. Ez lehetővé teszi a fejlesztői és biztonsági csapatok számára, hogy prioritásként kezeljék a javítási erőfeszítéseket, csökkentve a potenciális biztonsági kockázatokat, mielőtt azokat a rosszindulatú szereplők kihasználhatnák. 

Az alábbiakban a CVE-2025-27610, CVE-2025-27111 és CVE-2025-25184 képernyőképét láthatjuk, amelyeket a MetaDefender Core az SBOM segítségével észlelt:

A műszerfal képernyőképén a MetaDefender Core a Rack Ruby keretrendszer sebezhetőségeit észleli.

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.