← Të gjithë artikujt

WordPress 7.1.1 rregullon zinxhirin Click2Shell drejt ekzekutimit të kodit në distancë

WordPress 7.1.1 rregullon zinxhirin Click2Shell drejt ekzekutimit të kodit në distancë

WordPress 7.1.1 ka rregulluar një dobësi që mund të lejonte një klikim të vetëm nga një administrator i loguar të kthehej në një shell funksional në distancë në server, sipas një analize të botuar nga Patchstack. Dobësia, e quajtur Click2Shell, u raportua në mënyrë të përgjegjshme nga Paulos Yibelo i pwn.ai dhe u mbyll në publikimin e WordPress të 17 shtatorit, me shkrimin e Patchstack nga studiuesi i sigurisë Chazz Wolcott të botuar më 18 shtator. Patchstack deklaron se klientët e tij janë të mbrojtur nga dobësia dhe rekomandon që të gjithë të tjerët të përditësojnë menjëherë në versionin më të fundit të WordPress.

Bug-u është më pak një gabim i vetëm dhe më shumë një zinxhir. Patchstack e përshkruan atë si një Cross-Site Request Forgery (CSRF, një mashtrim që bën që shfletuesi i loguar i viktimës të dërgojë një kërkesë që viktima nuk e ka pasur ndërmend) të kombinuar me një injeksion selektori (karaktere shtesë të futur në kodin që kërkon elementët në një faqe, kështu që gjen diçka tjetër nga sa synohej). Asnjëra dobësi nuk është dramatike më vete. Të lidhura bashkë, ato e kthejnë një klikim të vetëm në kod që ekzekutohet në serverin e faqes.

Mekanizmi qëndron në mënyrën se si WordPress trajton temat. Administratorët mund të shikojnë paraprakisht ose të instalojnë një temë direkt nga katalogu i WordPress.org brenda panelit të administrimit, dhe ky proces mban slug-un e temës, emrin e saj të shkurtër identifikues, në URL. Sipas Patchstack, i njëjti vlerë lexohet më pas dy herë nga dy pjesë të ndryshme kodi, dhe të dyja nuk bien dakord se si ta trajtojnë atë. Në anën e serverit, API-ja e Temave të WordPress.org e pastron vlerën dhe heq karakteret shtesë, kështu që një varg i ndërtuar si twentytwenty"]> kthehet në twentytwenty deri në momentin që API-ja përgjigjet. Në anën e klientit, JavaScript i wp-admin merr të njëjtën vlerë të papërpunuar dhe e hedh direkt në një varg selektori jQuery, pa asnjë pastrim. jQuery është një bibliotekë JavaScript e përdorur gjerësisht që ndihmon faqet të gjejnë dhe modifikojnë elementët. Ky mospërputhje është e gjithë dobësia: një slug i ndërtuar posaçërisht mund ta bindë faqen se personi që e shikon klikoi Instalo në një temë krejtësisht të palidhur.

Më vete, një temë e instaluar në heshtje por jo aktive nuk është rrezik i madh. Siç vëren Patchstack, pa u aktivizuar në WordPress një temë ose plugin joaktiv është në thelb inert. Ka një moment kur një temë joaktive ekzekutohet, dhe ky është kur shikohet paraprakisht në WordPress Customizer. Zinxhiri i plotë i ndërtuar nga pwn.ai përdori një temë reale katalogu, Mobile Repair Zone 2.5.4, si fazën e dytë. Së pari URL-ja e ndërtuar instalon temën, pastaj një lidhje pasuese ngarkon Customizer me Mobile Repair Zone aktive. Kjo bën që skedari functions.php i temës të ekzekutohet dhe të regjistrojë grepat e tij, përfshirë një trajtues AJAX që pranonte një URL shkarkimi plugin pa kontroll nonce (një nonce është një kod njëherësh që provon se një kërkesë erdhi nga sesioni juaj) dhe pa asnjë kontroll leje. T'i japësh këtij veprimi një URL që tregon në një skedar ZIP në pronësi të sulmuesit do të thotë që WordPress e trajton arkivin keqdashës si një plugin të zakonshëm, e shkarkon dhe e ekzekuton në server. Ky është hapi që e ndryshon rezultatin nga një temë joaktive që shfaqet në një sulmues që mban një shell funksional.

Patchstack është i qartë se ky nuk është një sulm drive-by, dhe dallimi ka rëndësi. Të lexosh "nuk nevojitet llogari sulmuesi" dhe "ekzekutim kodi në distancë" radhazi mund të tingëllojë sikur çdo vizitor mund ta shkaktojë, por sulmuesi duhet ta bëjë një administrator faqeje të ngarkojë një URL të ndërtuar. Një vizitor i zakonshëm nuk mund ta shkaktojë, dhe as një llogari më e privilegjuar si Autor ose Redaktor. Ka dy rrugë. E para është një sulm phishing i synuar kundër një administratori specifik që është i loguar dhe ndërvepron me lidhjen keqdashëse. E dyta është një injeksion XSS (Cross-Site Scripting, një dobësi që lejon sulmuesin të vendosë kodin e tij në një faqe, ku ai ekzekutohet në shfletuesin e kujtdo që e shikon) tashmë i pranishëm në faqe, i cili e nis kërkesën automatikisht kur një administrator shikon faqen. Kjo rrugë e dytë supozon se sulmuesi tashmë kishte një pikëmbështetje, që do të thotë se ndonjë komponent tjetër duhej të ishte i cenueshëm ndaj XSS në radhë të parë, dhe Click2Shell do të ishte vetëm një nga disa mënyra për ta shfrytëzuar atë. Rezultati i plotë i ekzekutimit të kodit në distancë varet gjithashtu nga aftësia e faqes së synuar për të instaluar një temë të cenueshme. Aty ku temat e reja nuk mund të instalohen, për shembull kur DISALLOW_FILE_MODS është aktivizuar, injeksioni mund të ndodhë akoma, por ndikimi i tij nuk shtrihet në instalimin e temave ose plugineve të reja në faqe.

WordPress 7.1.1 e mbyll çështjen me dy lëvizje. Ai e kufizon selektorin e cenueshëm në elementët e vërtetë .theme në dokument, dhe e kalon slug-un nëpër $.escapeSelector() përpara se vlera të hyjë në vargun e selektorit. Të dhënat tani trajtohen si tekst i mirëfilltë dhe jo si të dhëna strukturore, kështu që nuk mund të klikojë më butona vetë. Pika më e gjerë e Patchstack është se mësimi nuk ka të bëjë aq shumë me këtë selektor sa me formën e bug-ut: kur një parametër URL përpunohet në backend dhe në frontend, ai duhet pastruar në të dyja anët, dhe ky model mund të shfaqet kudo ku dy pjesë të ndryshme kodi analizojnë të njëjtin input në mënyrë të pavarur.

Për pronarët e faqeve, përfundimi praktik është i njëjtë si për shumicën e rregullimeve të WordPress. Përditësimet e bërthamës janë aty ku zbatohet ky patch, dhe një përditësim i shtyrë është një dritare që mbetet e hapur. Aty ku përditshmëria e patch-imit është pjesa e vështirë, AEU Hosting, shërbimi ynë i hostimit të menaxhuar të WordPress, mban shtresën e platformës WordPress të mirëmbajtur për faqet që drejton, dhe detajet janë paraqitur në albhosting.eu. Zakoni i zgjedhjes së temave ka gjithashtu rëndësi: një temë e papërdorur që mbetet e instaluar është një gjë më shumë që mund të bëhet të ekzekutohet.

Click2Shell gjithashtu ilustron pse etiketat e ashpërsisë mund të mashtrojnë. Dy dobësi që secila do të shpërfaqej, një kërkesë që shfletuesi nuk duhej ta dërgonte dhe një varg që duhej të ishte shpëtuar, bëhen një shell në anën e serverit kur kombinohen, dhe nuk kërkohet llogari sulmuesi për asnjërën gjysmë. Leximi i ndershëm i raportit të Patchstack është se shfrytëzimi ishte real, rregullimi është botuar, dhe parakushti është njerëzor: një administrator duhet të klikojë, ose diçka tjetër në faqe duhet të shërbejë tashmë kod të injektuar.

Disponueshëm edhe në: EnglishDeutschItaliano