NOU: Raportul SANS ICS/OT privind securitatea cibernetică pentru 2025 este acum disponibil

Obțineți raportul
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ă.

CVE-2025-32432: Executare de cod la distanță neautentificată în Craft CMS

de OPSWAT
Împărtășește această postare
Doi cercetători din cadrul Programului de burse pentru absolvenți în domeniul securității cibernetice a infrastructurilor OPSWAT pe fond albastru

În aprilie 2025, Orange Cyberdefense a descoperit o vulnerabilitate critică în Craft CMS în timpul unei investigații a unui incident, urmărită acum ca CVE-2025-32432. Defectul permite RCE (executarea de cod la distanță) neautentificată, cu un scor CVSS v3.1 maxim de 10,0 (critic) din partea NVD (Baza de date națională a vulnerabilităților).

În cadrul programuluiOPSWAT Infrastructure Cybersecurity Graduate Fellowship, bursierii noștri au realizat un studiu cuprinzător asupra acestei vulnerabilități, incluzând reproducerea exploitului, validarea impactului acestuia, evaluarea riscurilor organizaționale și analizarea strategiilor de protecție recomandate.

Acest blog oferă o analiză aprofundată și cuprinzătoare a CVE-2025-32432, analizând cauza principală, fluxul de exploatare și implicațiile mai largi asupra securității, oferind în același timp îndrumări practice pentru organizații în vederea apărării împotriva acestei amenințări.

CVE-2025-32432 Introducere

CVE-2025-32432 afectează versiunile Craft CMS 3.0.0-RC1 până la 3.9.14, 4.0.0-RC1 până la 4.14.14 și 5.0.0-RC1 până la 5.6.16. Clasificată ca CWE-94: Code Injection, vulnerabilitatea rezultă din gestionarea necorespunzătoare a datelor de intrare neîncredere, permițând în cele din urmă RCE neautentificat.  

Metrici CVSS 3.x pentru CVE-2025-32432 Vulnerabilitate de execuție a codului la distanță Craft CMS care prezintă scoruri de bază critice

Craft CMS și cadrul Yii

Craft CMS este un sistem modern de gestionare a conținutului care permite dezvoltatorilor și echipelor de conținut să creeze site-uri web flexibile și complet personalizate, în loc să se bazeze pe șabloane rigide și predefinite. Adoptat de peste 46.000 de site-uri web din întreaga lume, este atât utilizat pe scară largă, cât și o țintă frecventă pentru atacatorii care caută vulnerabilități cu impact ridicat.

Craft CMS este construit pe baza Yii Framework, un framework PHP rapid și puternic, creat pentru dezvoltarea web modernă. Yii oferă structura de bază și instrumentele, iar Craft CMS o extinde pentru a oferi un sistem flexibil de gestionare a conținutului.

Logo-urile Craft CMS și Yii Framework afișate unul lângă altul, legate de vulnerabilitatea de execuție a codului la distanță CVE-2025-32432

Una dintre caracteristicile principale ale framework-ului Yii este containerul său Dependency Injection (DI). Dependency Injection este un model de proiectare care furnizează componentelor resursele de care au nevoie, în loc să le oblige să construiască ele însele aceste resurse. Containerul DI al Yii este extrem de flexibil, capabil să construiască obiecte complexe din reguli de configurare relativ simple.

Cu toate acestea, această flexibilitate prezintă riscuri. În cazul CVE-2025-32432, containerul DI a fost utilizat în mod abuziv în combinație cu date introduse de utilizatori neîncrezători, creând o cale către executarea de cod la distanță. Acest caz demonstrează că chiar și funcțiile sigure și puternice ale cadrului pot deveni periculoase dacă sunt integrate fără o înțelegere completă a implicațiilor lor în materie de securitate.

Analiză aprofundată a CVE-2025-32432

Craft CMS include o funcție numită Image Transforms, care este concepută pentru a optimiza performanța prin generarea de imagini redimensionate direct pe server. În loc să livreze o imagine mare de 4,5 MB pentru a fi afișată ca miniatură de 300×300, Craft CMS creează și servește automat o versiune mai mică și optimizată. Această abordare reduce utilizarea lățimii de bandă și îmbunătățește semnificativ viteza de încărcare a paginii.

Pentru a face această funcționalitate disponibilă pe scară largă, Craft CMS expune punctul final actions/assets/generate-transform fără a necesita autentificare. Deși acest lucru garantează că atât utilizatorii autentificați, cât și cei anonimi pot beneficia de imagini optimizate, introduce totodată o suprafață de atac accesibilă publicului, unde oricine poate furniza date special create aplicației.

Fragment de cod din Craft CMS AssetsController care arată logica allowAnonymous relevantă pentru vulnerabilitatea CVE-2025-32432

Printr-o analiză detaliată a acestui flux de lucru, colegii noștri au identificat că metoda AssetsController::actionGenerateTransform este invocată ori de câte ori o cerere POST este trimisă către punctul final expus. Această funcție preia parametrul handle direct din corpul cererii și îl transmite în aval pentru procesare ulterioară în etapa următoare.

Captură de ecran a codului PHP Craft CMS legat de analiza vulnerabilității de execuție a codului la distanță CVE-2025-32432

În etapa următoare, se apelează metoda ImageTransforms::normalizeTransform(). Această metodă preia parametrul handle furnizat de utilizator și îl convertește într-un obiect ImageTransform. Deoarece obiectul este creat direct din date de intrare neîncredere, acest lucru reprezintă un punct critic de risc în fluxul de execuție.

Fragment de cod PHP din Craft CMS legat de analiza vulnerabilității de execuție a codului la distanță CVE-2025-32432

În timpul acestui proces, toate perechile cheie-valoare din matricea $transform controlată de utilizator (provenind din parametrul handle) sunt combinate într-o matrice de configurare. Metoda normalizeTransform transmite apoi această matrice către Craft::createObject(), care este responsabilă pentru instanțierea unui nou obiect ImageTransform.

Fragment de cod care arată logica Craft CMS relevantă pentru vulnerabilitatea de execuție a codului la distanță CVE-2025-32432

Vulnerabilitatea provine din modul în care Craft::createObject() (care încorporează Yii::createObject() din Yii) procesează matricile de configurare. Deoarece acest mecanism utilizează containerul DI pentru a instanția și configura obiecte direct din matricea nevalidată, atacatorii pot obține controlul asupra procesului de construcție a obiectelor.

Cod PHP evidențiat care arată funcția createObject relevantă pentru CVE-2025-32432 Vulnerabilitate de execuție a codului la distanță Craft CMS

Când se transmite o sarcină utilă rău intenționată, constructorul obiectului (moștenit din clasa Model ) invocă metoda App::configure().

Cod PHP evidențiat care arată logica constructorului Craft CMS legată de vulnerabilitatea de execuție a codului la distanță CVE-2025-32432

Această metodă repetă fiecare proprietate din matricea controlată de atacator și le atribuie noului obiect.

Fragment de cod PHP care prezintă o funcție de configurare, relevantă pentru vulnerabilitatea CVE-2025-32432 Craft CMS de executare a codului la distanță.

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.

O astfel de sarcină utilă rău intenționată poate fi creată pentru a exploata modul în care Component::__set procesează proprietățile prefixate cu as, cum ar fi as exploit:

Captură de ecran a codului care arată încărcătura exploatabilă pentru vulnerabilitatea CVE-2025-32432 Craft CMS de executare a codului la distanță

Din analiza noastră, implementarea Component::__set include o măsură de siguranță: atunci când un comportament este atașat printr-o astfel de proprietate, cadrul verifică dacă clasa specificată în matricea de configurare este o subclasă validă a yii\base\Behavior. Această verificare are scopul de a împiedica atașarea directă a claselor arbitrare la componente.

Cod PHP evidențiat din Craft CMS care arată logica legată de vulnerabilitatea de execuție a codului la distanță CVE-2025-32432

Cu toate acestea, această măsură de protecție nu este atât de eficientă pe cât pare. Punctul slab provine din modul în care Yii::createObject gestionează matricile de configurare.

La instanțierea unui obiect, Yii::createObject acordă prioritate parametrului special __class. Dacă această cheie este prezentă, valoarea sa este utilizată ca clasă țintă pentru instanțiere, iar cheia standard a clasei din matricea de configurare este ignorată.

Fragment de cod PHP care arată logica de creare a obiectelor legată de CVE-2025-32432 Vulnerabilitate de execuție a codului la distanță în Craft CMS

Atacatorul poate crea o sarcină utilă pentru comportamentul de exploatare care include două chei:

  1. 'class' => '\craft\behaviors\FieldLayoutBehavior' - O clasă legitimă care extinde yii\base\Behavior. Această valoare există exclusiv pentru a satisface verificarea is_subclass_of în Component::__set, permițând continuarea execuției fără a genera o eroare.
  2. '__class' => '\yii\rbac\PhpManager' - Ținta reală a atacatorului. Aceasta este clasa „gadget” pe care dorește să o instanțieze.

Când codul este executat, Component::__set trece verificarea de securitate deoarece inspectează doar cheia clasei. Cu toate acestea, când framework-ul apelează ulterior Yii::createObject pentru a atașa comportamentul, acesta acordă prioritate __class, rezultând în instanțierea obiectului \yii\rbac\PhpManager ales de atacator.

Utilizarea \yii\rbac\PhpManager este intenționată. Crearea unui obiect nu este suficientă pentru exploatare; pentru a realiza RCE este necesară o clasă gadget cu efecte secundare care pot fi transformate în arme. PhpManager este o țintă obișnuită în atacurile POI (PHP Object Injection) datorită fluxului său de inițializare. La instanțiere, metoda sa init() apelează load(), care apoi invocă loadFromFile($this->itemFile). Cu controlul asupra $this->itemFile, un atacator poate forța aplicația să încarce un fișier rău intenționat, transformând crearea obiectului în execuția codului.

Fluxul de cod PHP evidențiat care arată vulnerabilitatea CVE-2025-32432 Craft CMS de executare a codului la distanță cu includerea fișierelor

Pericolul rezidă în metoda loadFromFile. În PHP, o comandă require execută fișierul țintă ca cod, astfel încât, dacă un atacator controlează calea fișierului, acesta poate declanșa executarea unui cod arbitrar.

Pentru a plasa coduri rău intenționate pe server, atacatorul exploatează fișierele de sesiune PHP. Prin injectarea PHP într-un parametru de solicitare, Craft CMS salvează încărcătura într-un fișier de sesiune în timpul procesului de redirecționare. Ulterior, când PhpManager încarcă acest fișier, codul atacatorului poate fi executat.

Diagramă care prezintă procesul de exploatare a vulnerabilității CVE-2025-32432 Craft CMS privind executarea codului la distanță

Lanțul complet de atac funcționează în trei etape. Mai întâi, atacatorul plantează PHP rău intenționat trimițând o adresă URL special creată, pe care Craft CMS o salvează într-un fișier de sesiune. Apoi, exploatează ocolirea __class în punctul final de transformare a imaginii pentru a încărca gadgetul PhpManager și a-l îndrepta către fișierul de sesiune infectat. În cele din urmă, când PhpManager încarcă fișierul, încărcătura atacatorului se execută, acordând RCE și control deplin asupra serverului — adesea printr-un webshell sau reverse shell.

Diagramă care prezintă vulnerabilitatea CVE-2025-32432 Craft CMS de executare a codului la distanță cu exploatarea JSON și pașii atacului
Ieșire terminal care afișează pașii de exploatare pentru CVE-2025-32432 Vulnerabilitate de execuție a codului la distanță Craft CMS
Terminal care afișează CVE-2025-32432 Craft CMS exploit de execuție de cod la distanță cu acces shell ca utilizator www-data

Mitigare și remediere

Pentru a reduce în mod eficient riscurile asociate cu CVE-2025-32432, organizațiile au nevoie de vizibilitate și control asupra componentelor open-source. Fără un inventar clar al componentelor, aplicarea patch-urilor devine o chestiune de noroc.

OPSWAT , o tehnologie proprietară din cadrulplatformei MetaDefender®, răspunde acestei nevoi oferind un inventar al tuturor componentelor software, bibliotecilor, containerelor Docker și dependențelor utilizate. Aceasta permite organizațiilor să urmărească, să securizeze și să actualizeze componentele în mod proactiv.

Interfața scanării de securitate afișează arhiva Craft CMS blocată cu vulnerabilități critice pentru atenuarea CVE-2025-32432
Tablou de bord de securitate care afișează vulnerabilitatea CVE-2025-32432 Craft CMS privind executarea codului la distanță și detalii privind remedierea

În exemplul de mai sus,tehnologia SBOM din MetaDefender a scanat pachetul nginx-ingress-controller care conținea vulnerabilitatea CVE-2025-32432. Sistemul a marcat automat problema ca fiind critică și a furnizat îndrumări cu privire la versiunile reparate disponibile, permițând echipelor să prioritizeze rapid și să remedieze vulnerabilitatea înainte ca aceasta să poată fi exploatată.

OPSWAT este disponibil în MetaDefender Core și MetaDefender Software Chain™,permițând echipelor de securitate să identifice și să acționeze mai rapid asupra vulnerabilităților. Cu OPSWAT , echipele de securitate pot:

  • Localizați rapid componentele vulnerabile - Identificați imediat componentele open-source afectate de atacurile de deserializare. Acest lucru asigură o acțiune rapidă în ceea ce privește repararea sau înlocuirea bibliotecilor vulnerabile. 
  • Asigurați-vă că aplicați patch-uri și actualizări proactive – Monitorizați continuu componentele open-source prin OPSWAT pentru a fi cu un pas înaintea vulnerabilităților de deserializare. OPSWAT poate detecta componentele învechite sau nesigure, permițând actualizări în timp util și reducând expunerea la atacuri. 
  • Menținerea conformității și raportării – OPSWAT ajută organizațiile să îndeplinească cerințele de conformitate, pe măsură ce cadrele de reglementare impun din ce în ce mai mult transparența în lanțurile de aprovizionare cu software.

Sunteți gata să vă consolidați lanțul de aprovizionare cu software împotriva amenințărilor emergente?

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.