Cenueshmëria e Duplicator vë në rrezik migrimet e WordPress
Cenueshmëria e Duplicator, e gjurmuar si CVE-2026-82814, mund ta shndërrojë një koment të zakonshëm në WordPress në kod keqdashës që aktivizohet gjatë një migrimi të mëvonshëm të faqes. Wordfence Threat Intelligence e zbuloi cenueshmërinë më 30 gusht 2026, gjatë një vlerësimi sigurie të WordPress 7.1 me ndihmën e sistemit të vet kërkimor Argus. Duplicator ka më shumë se një milion instalime aktive. Problemi ka marrë 8.8 nga 10 pikë në Common Vulnerability Scoring System dhe është klasifikuar si High.
Versionet e prekura janë Duplicator Free deri dhe përfshirë versionin 1.5.17 dhe Duplicator Pro deri dhe përfshirë versionin 4.6.10. Defekti është një PHP Object Injection pa autentikim, që do të thotë se dikush pa llogari mund të dërgojë të dhëna të ruajtura, të cilat PHP më vonë i shndërron në një objekt software me sjellje potencialisht të rrezikshme. Ai është gjithashtu një second-order vulnerability: kërkesa fillestare e sulmuesit nuk shkakton dëm të menjëhershëm. Ekzekutimi varet nga një veprim i mëvonshëm dhe i ligjshëm i një administratori.
Rruga e demonstruar nis në endpoint publik wp-comments-post.php të WordPress. Një sulmues mund të dërgojë një koment pa llogari, cookie ose nonce, i cili është një kontroll njëpërdorimësh që synon të vërtetojë se një kërkesë është e ligjshme. Komenti përmban një objekt keqdashës PHP të koduar me base64, një mënyrë për t'i paraqitur të dhënat si tekst të zakonshëm. Miratimi nuk ka rëndësi, sepse WordPress i ruan në bazën e vet të të dhënave edhe komentet në pritje. Nëse një administrator krijon më pas një paketë Duplicator, komenti i ruajtur kopjohet brenda saj.
Payload mbetet joaktiv gjatë krijimit ose ruajtjes së paketës. Ai ekzekutohet vetëm nëse një administrator e përdor atë paketë për një migrim ose importim standard që kryen procesin search-and-replace Update Data të Duplicator. Ky proces ndryshon vlera në bazën e të dhënave, si adresa e vjetër e faqes dhe path i filesystem, në mënyrë që të përputhen me destinacionin. serialized data, që ruan vlerat së bashku me hollësi të tilla si gjatësia e string dhe emrat e class, kërkon trajtim të posaçëm kur këto vlera ndryshojnë.
Instaluesit e prekur ia kalojnë vlerat që mund të jenë serialized data funksionit standard të PHP unserialize(), përmes DUPX_UpdateEngine::unserializeTest(), pa penguar krijimin e class. PHP mund të thërrasë më pas metoda të posaçme si __wakeup() dhe __destruct(). Një varg i dobishëm metodash të tilla quhet gadget chain dhe mund të bëjë që të dhënat e kontrolluara nga sulmuesi të kryejnë veprime që zhvilluesi i plugin nuk i kishte synuar kurrë. Motori i migrimit dekodon gjithashtu vlerat e bazës së të dhënave që janë koduar tërësisht me base64 përpara se t'i testojë, duke i mundësuar një komenti të koduar të arrijë funksionin e cenueshëm.
Pasojat ndryshojnë sipas edicionit. Duplicator Free 1.5.17 përfshinte Requests 1.7 në instaluesin e gjeneruar. Wordfence kombinoi class DbUserMode të Duplicator me Requests_Utility_FilteredIterator, metoda current() e të cilit thërret një callback të zgjedhur nga serialized data. Meqë sulmuesi kontrollon si callback, ashtu edhe argumentin e tij, një funksion PHP si system() mund të ekzekutojë një komandë të zgjedhur të sistemit operativ. Wordfence verifikoi ekzekutimin e drejtpërdrejtë të komandave me lejet e llogarisë që ekzekutonte web server dhe e përdori gjithashtu këtë gadget chain për të fshirë një skedar.
Duplicator Pro 4.6.10 kishte një version më të ri të bibliotekës Requests, ndaj ai callback chain nuk ishte i disponueshëm. Megjithatë, instaluesi i tij përfshinte Duplicator\Libs\Index\IndexList. Destructor i këtij class fshin skedarin e përcaktuar nga vetia e tij path. Wordfence fillimisht konfirmoi fshirjen me skedarë testimi dhe më pas fshiu wp-config.php, skedarin që përmban konfigurimin bazë të databazës së një faqeje WordPress, në një instalim të përkohshëm testimi. Skedari duhet të ekzistojë dhe procesi PHP që ekzekuton instaluesin duhet të ketë leje për të ndryshuar dosjen e tij.
Pa wp-config.php, WordPress shfaq procesin e vet normal të konfigurimit. Wordfence demonstroi se një sulmues që arrin tek ai përpara pronarit mund të vendosë një databazë të aksesueshme nën kontrollin e vet, të krijojë një administrator dhe të instalojë një plugin proof-of-concept për të ekzekutuar kod PHP. Kjo rrugë nuk ekspozon databazën ose kredencialet e faqes origjinale, por mund t'i japë sulmuesit kontroll mbi WordPress në domain dhe filesystem e prekur.
Disa kushte e kufizojnë sulmin. Vlera keqdashëse në databazë duhet të ekzistojë përpara krijimit të paketës dhe një administrator duhet të nisë më vonë një migrim ose importim standard që kryen zëvendësimin në databazë. Krijimi ose thjesht mbajtja e një backup nuk e aktivizon atë. Wordfence nuk e demonstroi gadget chain përmes mënyrave restore ose recovery të Duplicator. Çaktivizimi i komenteve publike e heq rrugën e demonstruar të dërgimit, por Wordfence paralajmëroi se përmbajtje të tjera të databazës të kontrolluara nga sulmuesi mund të arrijnë përsëri të njëjtin motor të cenueshëm.
Duplicator 5.0.0 rregullon rrugën e cenueshme të migrimit. Metoda e tij SnapUtil::safeUnserialize() thërret unserialize() me allowed_classes të vendosur në false, duke i penguar të dhënat të krijojnë instanca të class të emërtuara në këtë pikë. Vlera e kthyer përdoret vetëm për të përcaktuar nëse input është i vlefshëm dhe më pas hidhet. Duplicator Free 5.0.0 gjithashtu ndaloi përdorimin e komponentit më të vjetër Requests të përfshirë në ekzekutimin e drejtpërdrejtë të komandave. Wordfence verifikoi rregullimin në Free, shqyrtoi Duplicator Pro 5.0.5 dhe konstatoi se skedarët përkatës të sigurisë ishin identikë me implementimin e riparuar në Free, ndërsa zhvilluesi konfirmoi se Pro 5.0.0 kishte marrë të njëjtin rregullim.
Përditësimi nuk i rishkruan paketat që ekzistojnë tashmë. Një arkiv i krijuar nga një version i prekur ruan instaluesin e atij versioni. Gjatë testimit, workflow normal Import i Duplicator Pro 5.0.5 ekzekutoi instaluesin e vjetër nga një paketë Pro 4.6.10 dhe arriti te rruga e cenueshme. Workflow automatik Restore detyroi restore mode, anashkaloi procesin e prekur të zëvendësimit dhe nuk e aktivizoi cenueshmërinë. Duplicator Free 5.0.0 refuzoi ta rikthente automatikisht një paketë Free 1.5.17 dhe në vend të kësaj e udhëzoi administratorin ta shkarkonte dhe ta ekzekutonte instaluesin e saj manualisht. Ekzekutimi i atij instaluesi të përfshirë si migrim standard mund të mbetet i rrezikshëm nëse paketa përmban një vlerë keqdashëse.
Wordfence e raportoi problemin më 31 gusht dhe zhvilluesi e konfirmoi marrjen e raportit më 2 shtator. Versioni 5.0.0 u publikua më 8 shtator, ndërsa rregullimi u konfirmua më 25 shtator. Wordfence e përfundoi shqyrtimin më 9 tetor. Mbrojtja ekzistuese Generic Object Injection e firewall të tij ofronte tashmë një shkallë mbulimi për përdoruesit falas dhe me pagesë. Një rule më e synuar u bë e disponueshme për klientët Premium, Care dhe Response më 15 tetor, ndërsa disponueshmëria për përdoruesit falas ishte planifikuar për më 14 nëntor 2026. Mbulimi nga firewall është një shtresë shtesë dhe jo zëvendësim për përditësimin.
Pronarët e faqeve duhet t'i përditësojnë të dy edicionet në versionin 5.0.0 ose më të ri, të krijojnë një paketë të re përpara një migrimi ose importimi kur kjo është praktike dhe të heqin skedarët e pavarur të instaluesit që mbeten publikisht të aksesueshëm pasi nuk nevojiten më. Për organizatat që preferojnë të mos e menaxhojnë vetë infrastrukturën WordPress, AEU Hosting ofron hosting të menaxhuar për WordPress, të siguruar nga fillimi deri në fund.