ÚJ: A 2025-ös SANS ICS/OT kiberbiztonsági jelentés már elérhető

Szerezd meg a jelentést
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.

CVE-2025-32432: Hitelesítetlen távoli kódfuttatás a Craft CMS-ben

a OPSWAT
Ossza meg ezt a bejegyzést
Két kutató az OPSWAT infrastruktúra kiberbiztonsági posztgraduális ösztöndíjprogramjából kék háttér előtt

2025 áprilisában az Orange Cyberdefense egy incidens kivizsgálása során kritikus sebezhetőséget fedezett fel a Craft CMS-ben, amelyet jelenleg CVE-2025-32432 néven követnek nyomon. A hiba nem hitelesített RCE-t (távoli kódfuttatást) tesz lehetővé, amelynek maximális súlyossági értéke a NVD (National Vulnerability Database) szerint 10,0 (kritikus) a CVSS v3.1 skálán.

Az OPSWAT infrastruktúra kiberbiztonsági posztgraduális ösztöndíjprogramjának részeként ösztöndíjasaink átfogó tanulmányt készítettek erről a sebezhetőségről, amely magában foglalta a kihasználás reprodukálását, hatásának érvényesítését, a szervezeti kockázatok értékelését és az ajánlott védelmi stratégiák elemzését.

Ez a blog átfogóan bemutatja a CVE-2025-32432 biztonsági rést, elemzi annak kiváltó okát, a kihasználási folyamatot és a szélesebb körű biztonsági következményeket, miközben gyakorlati útmutatást nyújt a szervezeteknek a fenyegetés elleni védekezéshez.

CVE-2025-32432 Bevezetés

A CVE-2025-32432 a Craft CMS 3.0.0-RC1 és 3.9.14, 4.0.0-RC1 és 4.14.14, valamint 5.0.0-RC1 és 5.6.16 verzióit érinti. A CWE-94: Code Injection (Kódbefecskendezés) kategóriába sorolt hiba a megbízhatatlan bemenetek nem megfelelő kezeléséből ered, ami végső soron nem hitelesített RCE-t tesz lehetővé.  

CVSS 3.x mutatók a CVE-2025-32432 Craft CMS távoli kódfutási sebezhetőséghez, amely kritikus alap pontszámokat mutat

Craft CMS és a Yii keretrendszer

A Craft CMS egy modern tartalomkezelő rendszer, amely lehetővé teszi a fejlesztőknek és a tartalomcsapatoknak, hogy rugalmas, teljesen testreszabott weboldalakat építsenek, ahelyett, hogy merev, előre meghatározott sablonokra támaszkodnának. Világszerte több mint 46 000 weboldalon alkalmazzák, így széles körben elterjedt és gyakori célpontja azoknak a támadóknak, akik nagy hatással bíró sebezhetőségeket keresnek.

A Craft CMS a Yii Frameworkre épül, amely egy gyors és hatékony PHP keretrendszer, amelyet a modern webfejlesztéshez hoztak létre. A Yii biztosítja az alapszerkezetet és az eszközöket, míg a Craft CMS kiterjeszti azokat, hogy rugalmas tartalomkezelő rendszert biztosítson.

Craft CMS és Yii Framework logók egymás mellett, a CVE-2025-32432 távoli kódvégrehajtási sebezhetőséggel kapcsolatban

A Yii keretrendszer egyik legfontosabb jellemzője a függőségbefecskendezés (DI) konténer. A függőségbefecskendezés egy olyan tervezési minta, amely a komponenseket ellátja a szükséges erőforrásokkal, ahelyett, hogy azoknak maguknak kellene létrehozniuk azokat. A Yii DI konténer rendkívül rugalmas, és viszonylag egyszerű konfigurációs szabályok alapján képes komplex objektumokat létrehozni.

Ez a rugalmasság azonban kockázattal jár. A CVE-2025-32432 esetében a DI konténert nem megbízható felhasználói bevitelekkel együtt visszaéltek, ami távoli kódfutáshoz vezetett. Ez az eset jól mutatja, hogy még a biztonságos és hatékony keretrendszer-funkciók is veszélyessé válhatnak, ha azok biztonsági következményeinek teljes körű megértése nélkül integrálják őket.

Mélyreható elemzés a CVE-2025-32432-ről

A Craft CMS tartalmaz egy Image Transforms nevű funkciót, amelynek célja a teljesítmény optimalizálása azáltal, hogy a méretét megváltoztatott képeket közvetlenül a szerveren generálja. Ahelyett, hogy egy 4,5 MB méretű nagy képet továbbítana 300×300-as miniatűrként való megjelenítéshez, a Craft CMS automatikusan létrehoz és kiszolgál egy kisebb, optimalizált verziót. Ez a megközelítés csökkenti a sávszélesség-használatot és jelentősen javítja az oldal betöltési sebességét.

Annak érdekében, hogy ez a funkció széles körben elérhető legyen, a Craft CMS hitelesítés nélkül teszi elérhetővé az actions/assets/generate-transform végpontot. Ez biztosítja, hogy mind a hitelesített, mind az anonim felhasználók élvezhessék az optimalizált képek előnyeit, ugyanakkor nyilvánosan hozzáférhető támadási felületet is létrehoz, ahol bárki megalkothatja a saját bevitelét az alkalmazásba.

A Craft CMS AssetsController kódrészlete, amely a CVE-2025-32432 sebezhetőséggel kapcsolatos allowAnonymous logikát mutatja be.

A munkafolyamat részletes elemzése során munkatársaink megállapították, hogy az AssetsController::actionGenerateTransform metódus minden alkalommal meghívásra kerül, amikor POST kérés érkezik a nyilvános végponthoz. Ez a függvény közvetlenül a kérés testéből veszi át a handle paramétert, és továbbítja azt a következő szakaszban történő további feldolgozás céljából.

A Craft CMS PHP kódjának képernyőképe a CVE-2025-32432 távoli kódfutási sebezhetőség elemzésével kapcsolatban

A következő lépésben az ImageTransforms::normalizeTransform() metódus kerül meghívásra. Ez a metódus a felhasználó által megadott handle paramétert veszi át, és ImageTransform objektummá alakítja. Mivel az objektum közvetlenül megbízhatatlan bemeneti adatokból jön létre, ez kritikus kockázati pontot jelent a végrehajtási folyamatban.

A Craft CMS-ből származó PHP kódrészlet a CVE-2025-32432 távoli kódvégrehajtási sebezhetőség elemzéséhez

Ezen folyamat során a felhasználó által vezérelt $transform tömb (a handle paraméterből származik) összes kulcs-érték párja összevonásra kerül egy konfigurációs tömbbe. A normalizeTransform metódus ezután továbbítja ezt a tömböt a Craft::createObject() metódusnak, amely felelős egy új ImageTransform objektum létrehozásáért.

A CVE-2025-32432 távoli kódfutási sebezhetőséghez kapcsolódó Craft CMS logikát bemutató kódrészlet

A sebezhetőség abból ered, hogy a Craft::createObject() ( amely a Yii::createObject()-ot burkolja) a konfigurációs tömböket feldolgozza. Mivel ez a mechanizmus a DI konténert használja az objektumok instantiálására és konfigurálására közvetlenül a nem validált tömbből, a támadók átvehetik az irányítást az objektumok létrehozásának folyamatában.

Kiemelt PHP-kód, amely a CVE-2025-32432 Craft CMS távoli kódfutási sebezhetőséghez kapcsolódó createObject függvényt mutatja

Ha rosszindulatú payload kerül átadásra, az objektum konstruktora (amelyet a Model osztályból örökölt) meghívja az App::configure() metódust.

Kiemelt PHP-kód, amely a CVE-2025-32432 távoli kódfuttatási sebezhetőséggel kapcsolatos Craft CMS konstruktor logikáját mutatja be.

Ez a módszer végigfut a támadó által ellenőrzött tömb minden tulajdonságán, és azokat hozzárendeli az új objektumhoz.

PHP kódrészlet, amely egy konfigurációs funkciót mutat be, amely releváns a CVE-2025-32432 Craft CMS távoli kódvégrehajtási sebezhetőséggel kapcsolatban.

When App::configure() assigns properties from the attacker-controlled configuration array, most keys are mapped directly onto the object. However, if a key begins with the prefix as, the assignment is routed through Component::__set, Yii’s magic setter. This method interprets as <name> as an instruction to attach a behavior (mixin) to the object.

Egy ilyen rosszindulatú hasznos teher úgy alakítható ki, hogy kihasználja a Component::__set által az as előtaggal ellátott tulajdonságok feldolgozásának módját, például az exploit:

Kódképernyő, amely a CVE-2025-32432 Craft CMS távoli kódvégrehajtási sebezhetőség kihasználási hasznos terhelését mutatja

Elemzésünk szerint a Component::__set megvalósítása tartalmaz egy biztonsági intézkedést: amikor egy viselkedés ilyen tulajdonságon keresztül kapcsolódik, a keretrendszer ellenőrzi, hogy a konfigurációs tömbben megadott osztály érvényes alosztálya-e a yii\base\Behavior osztálynak. Ez az ellenőrzés megakadályozza, hogy tetszőleges osztályok közvetlenül kapcsolódjanak a komponensekhez.

A Craft CMS kiemelt PHP-kódja, amely a CVE-2025-32432 távoli kódvégrehajtási sebezhetőséghez kapcsolódó logikát mutatja be.

Ez a védelem azonban nem olyan hatékony, mint amilyennek látszik. A gyengeség abból fakad, hogy a Yii::createObject hogyan kezeli a konfigurációs tömböket.

Objektumok létrehozásakor a Yii::createObject elsőbbséget ad a speciális __class paraméternek. Ha ez a kulcs jelen van, akkor annak értéke kerül felhasználásra a létrehozás célosztályaként, és a konfigurációs tömbben található standard class kulcs figyelmen kívül marad.

PHP kódrészlet, amely a CVE-2025-32432 Craft CMS távoli kódfuttatási sebezhetőséggel kapcsolatos objektumlétrehozási logikát mutatja be

A támadó két kulcsot tartalmazó hasznos terhelést készíthet az as exploit viselkedéshez:

  1. 'class' => '\craft\behaviors\FieldLayoutBehavior' - A yii\base\Behavior osztályt kiterjesztő érvényes osztály. Ez az érték kizárólag a Component::__set is_subclass_of ellenőrzésének teljesítésére szolgál, lehetővé téve a végrehajtás folytatását hibaüzenet megjelenítése nélkül.
  2. '__class' => '\yii\rbac\PhpManager' - A támadó tényleges célpontja. Ez az a „gadget” osztály, amelyet instantiálni szeretnének.

A kód végrehajtásakor a Component::__set átmegy a biztonsági ellenőrzésen, mert csak az osztálykulcsot ellenőrzi. Azonban amikor a keretrendszer később a Yii::createObject metódust hívja meg a viselkedés hozzáadásához, akkor elsőbbséget ad a __class-nak, ami azt eredményezi, hogy a támadó által választott \yii\rbac\PhpManager objektum instantiálódik.

A \yii\rbac\PhpManager használata szándékos. Az objektum létrehozása önmagában nem elegendő a kihasználáshoz; az RCE eléréséhez olyan gadget osztályra van szükség, amelynek mellékhatásai fegyverként használhatók. A PhpManager inicializálási folyamatának köszönhetően gyakori célpontja a POI (PHP Object Injection) támadásoknak. Az instantiáláskor az init() metódusa meghívja a load() metódust, amely pedig a loadFromFile($this->itemFile) metódust hívja meg. A $this->itemFile feletti ellenőrzéssel a támadó rákényszerítheti az alkalmazást egy rosszindulatú fájl betöltésére, így az objektum létrehozását kód végrehajtássá alakítva.

Kiemelt PHP kódfolyamat, amely bemutatja a CVE-2025-32432 Craft CMS távoli kódvégrehajtási sebezhetőségét fájlbeillesztéssel

A veszély a loadFromFile metódusban rejlik. A PHP-ben a require parancs a célfájlt kódként futtatja, így ha egy támadó ellenőrzi a fájl elérési útját, akkor tetszőleges kód futtatását indíthatja el.

A rosszindulatú kód szerverre való elhelyezéséhez a támadó a PHP munkamenetfájlokat használja ki. A PHP-t egy kérésparaméterbe beillesztve a Craft CMS az átirányítási folyamat során a hasznos adatokat egy munkamenetfájlba menti. Később, amikor a PhpManager betölti ezt a fájlt, a támadó kódja végrehajthatóvá válik.

A CVE-2025-32432 Craft CMS távoli kódvégrehajtási sebezhetőség kihasználásának folyamatát bemutató folyamatábra

A teljes támadási lánc három szakaszban működik. Először a támadó egy speciálisan kialakított URL-t küldve rosszindulatú PHP-kódot helyez el, amelyet a Craft CMS egy munkamenetfájlba ment. Ezután kihasználja a képátalakítási végpont __class bypass funkcióját, hogy betöltse a PhpManager modult, és azt a fertőzött munkamenetfájlra irányítsa. Végül, amikor a PhpManager betölti a fájlt, a támadó kódja végrehajtásra kerül, RCE-t és a szerver teljes irányítását biztosítva – gyakran webshell vagy reverse shell segítségével.

A CVE-2025-32432 Craft CMS távoli kódfutási sebezhetőségét bemutató folyamatábra, az exploit JSON és a támadás lépéseivel
A CVE-2025-32432 Craft CMS távoli kódfutási sebezhetőség kihasználásának lépéseit bemutató terminál kimenet
Terminál, amely a CVE-2025-32432 Craft CMS távoli kódvégrehajtási sebezhetőséget mutatja, shell hozzáféréssel www-data felhasználóként.

Kárenyhítés és helyreállítás

A CVE-2025-32432-vel kapcsolatos kockázatok hatékony csökkentése érdekében a szervezeteknek áttekinthetőségre és ellenőrzésre van szükségük nyílt forráskódú komponenseik felett. A komponensek egyértelmű leltárának hiányában a javítások találgatásokká válnak.

OPSWAT , aMetaDefender® platform saját fejlesztésű technológiája, minden használt szoftverkomponens, könyvtár, Docker-konténer és függőség leltárát biztosítva válaszol erre az igényre. Lehetővé teszi a szervezetek számára, hogy proaktív módon nyomon kövessék, biztosítsák és frissítsék komponenseiket.

Biztonsági vizsgálat felhasználói felület, amely a CVE-2025-32432 kritikus sebezhetőségének enyhítésére blokkolt Craft CMS archívumot mutat.
Biztonsági irányítópult, amely a CVE-2025-32432 Craft CMS távoli kódfutási sebezhetőségét és a javítás részleteit mutatja

A fenti példában MetaDefender SBOM technológiájabeolvasta az nginx-ingress-controller csomagot, amely tartalmazta a CVE-2025-32432 sebezhetőséget. A rendszer automatikusan kritikusnak minősítette a problémát, és útmutatást adott a rendelkezésre álló javított verziókról, lehetővé téve a csapatok számára, hogy gyorsan prioritást rendeljenek a sebezhetőséghez, és javítsák azt, mielőtt azt kihasználhatnák.

OPSWAT elérhető a MetaDefender Core és MetaDefender Software Chain™ termékekben, amelylehetővé teszi a biztonsági csapatok számára, hogy gyorsabban azonosítsák és kezeljék a sebezhetőségeket. OPSWAT segítségével a biztonsági csapatok:

  • A sebezhető komponensek gyors felkutatása – Azonnal azonosítsa a deserializációs támadások által érintett nyílt forráskódú komponenseket. Ez biztosítja a sebezhető könyvtárak gyors javítását vagy cseréjét. 
  • Proaktív javítások és frissítések biztosítása – OPSWAT segítségével folyamatosan figyelemmel kísérheti a nyílt forráskódú komponenseket, hogy megelőzze a deszerializációs sebezhetőségeket. OPSWAT felismeri az elavult vagy nem biztonságos komponenseket, lehetővé téve a frissítések időben történő elvégzését és a támadásoknak való kitettség csökkentését. 
  • A megfelelőség és a jelentéstétel fenntartása – OPSWAT segít a szervezeteknek a megfelelőségi követelmények teljesítésében, mivel a szabályozási keretek egyre inkább előírják a szoftverellátási láncok átláthatóságát.

Készen állsz arra, hogy megerősítsd szoftverellátási láncodat a felmerülő fenyegetésekkel szemben?

Címkék:

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.