WordPress 7.1.1 a apărut pe 17 septembrie, cu unsprezece remedieri de securitate. Relatările s-au oprit la una dintre ele, pentru că are nume, are o analiză tehnică și are un lanț de atac satisfăcător.
Merită înțeleasă. S-ar putea, totodată, să nu fie remedierea de care site-ul tău avea cea mai mare nevoie.
Click2Shell, pe scurt
pwn.ai și cercetătorul Paulos Yibelo au raportat o vulnerabilitate în care un link construit special, deschis de un administrator autentificat, face WordPress să instaleze o temă din directorul oficial WordPress.org, fără ca cineva să apese Install.
Mecanismul e un dezacord între două componente care citesc același șir:
1 Link construit pentru previzualizarea unei teme 2 API-ul de teme normalizeaza valoarea intr-un slug real din catalog si returneaza o tema autentica 3 Browserul refoloseste valoarea originala, needcodificata, drept selector jQuery pe pagina 4 Semnele de punctuatie adaugate de atacator indreapta acel selector spre butonul Install, iar JavaScript-ul propriu al WordPress il apasa 5 Tema e scrisa pe disc, ramanand inactiva 6 Previzualizarea din Customizer incarca PHP-ul temei inactive 7 Handlerul AJAX neprotejat al acelei teme descarca si include cod PHP ales de atacator 8 Executie de cod pe server
Sesiunea administratorului furnizează permisiunea și token-ul de securitate, deci atacatorul nu furnizează niciunul.
Două detalii merită duse mai departe, dincolo de această vulnerabilitate anume.
Inactiv nu înseamnă inert. Customizer-ul poate încărca PHP-ul unei teme înainte ca tema să fie activată vreodată. Oricine a raționat „am instalat-o, dar n-am activat-o, deci e în regulă" s-a bazat pe ceva care nu e adevărat.
Gravitatea vulnerabilității din nucleu e stabilită de cea mai slabă temă din director. Singură, eroarea din nucleu instalează o temă reală, oficială — pwn.ai spune explicit că „eroarea din Core nu acceptă, de una singură, o arhivă ZIP arbitrară". Ce a transformat-o în execuție de cod a fost o a doua vulnerabilitate din tema aleasă de atacator, în cazul de față un handler AJAX care descărca și rula un pachet fără nicio verificare de permisiune. Atacatorul alege din tot catalogul. Gravitatea reală a erorii din nucleu e, prin urmare, egală cu cea mai slabă temă disponibilă în WordPress.org — un număr pe care nu-l poate publica nimeni.
Cercetătorii au cotat instalarea forțată la 7.1 și lanțul complet la 9.6. WordPress nu a publicat o cotare proprie și a descris problema astfel: URL-uri construite special pot instala și previzualiza automat o temă inactivă de pe WordPress.org. Ambele formulări sunt corecte. Doar una îți spune ce se întâmplă mai departe.
Nu a fost alocat încă niciun identificator CVE.
Există deja cod public de demonstrație. După dezvăluire a apărut pe GitHub un repository care reconstruiește lanțul. Autorul lui notează că șirurile exacte de selector au fost lăsate ca șabloane, pentru că blocurile de cod din dezvăluire nu s-au randat în copia pe care a lucrat — dar șirurile textuale sunt în analiza originală. Tratează fereastra de exploatare ca fiind deschisă.
Cea care nu cere autentificare
Click2Shell are nevoie ca un administrator autentificat să deschidă un link. E o barieră reală și e motivul pentru care WordPress nu raportează niciun semn de exploatare.
În aceeași versiune se închide însă și o vulnerabilitate de cross-site scripting stocat în wpautop(), raportată de Rafie Muhammad de la Awesome Motive, care permite unui vizitator neautentificat să injecteze script — sub rezerva aprobării comentariului. E cea mai joasă barieră de autentificare din toată versiunea.
Dacă site-ul tău acceptă comentarii și cineva le aprobă, aia e o cale mai scurtă decât un link țintit, trimis unui administrator care trebuie să fie autentificat și trebuie să dea clic.
Restul celor unsprezece includ o traversare de cale autentificată în controlerul REST pentru șabloane, o suprascriere arbitrară de articole de la nivel Contributor, o ocolire XML-RPC care publică articole customize_changeset fără verificarea drepturilor edit_css, un XSS stocat în imaginile de antet personalizate, o problemă în HTML API care permite textului modificat să iasă dintr-un comentariu, o problemă de privilegii în multisite, divulgarea titlului unui articol părinte privat, divulgarea slug-urilor de articole în ciornă și în așteptare, și o problemă de autorizare care permite oricărui utilizator autentificat să reatribuie comentarii.
Niciuna nu are nume. Câteva sunt accesibile de la un cont de Contributor, ceea ce pe un site cu autori invitați nu e o barieră înaltă.
Ce ai de făcut concret
- Actualizează la 7.1.1. Din Tablou de bord, Actualizări, sau de pe WordPress.org. Site-urile cu actualizări automate o vor primi singure — confirmă, nu presupune.
- Dacă rulezi o ramură mai veche, remedierile au fost portate până la 4.7. Instalează actualizarea corespunzătoare, apoi planifică mutarea. Doar cea mai recentă versiune e activ susținută, iar „patchuit pe 5.9" e o poziție cu termen de expirare.
- Verifică lista temelor instalate, nu aspectul site-ului. Ideea Click2Shell e că nu se schimbă nimic vizibil. O temă inactivă pe care nu-ți amintești s-o fi instalat e urma.
- Revizuiește cine are rol de Contributor sau mai sus. Mai multe remedieri din versiunea asta sunt accesibile de la acel nivel, iar majoritatea site-urilor au conturi acolo la care nu s-a mai uitat nimeni de ani.
- Nu confunda cu wp2shell. E o altă vulnerabilitate din nucleul WordPress, dezvăluită în iulie, fără legătură cu munca pwn.ai, care nu cere autentificare și nici clic — iar CISA a listat-o ca exploatată în atacuri reale. Dacă n-ai patchuit pentru aceea, e mai urgentă decât orice de aici.
Tiparul din mijlocul poveștii
E a doua vulnerabilitate din nucleul WordPress raportată de pwn.ai în ultimele săptămâni, după un lanț similar prin ecranul de autentificare, în august. În ambele cazuri, cercetătorii au descris riscul mai larg decât WordPress.
Nicio descriere nu e greșită. Producătorul documentează ce face defectul din nucleu; cercetătorii documentează ce face el combinat cu mediul în care trăiește. Un proprietar de site care citește doar nota de versiune primește o frază corectă și o imagine incompletă.
Am scris o variantă a acestei observații de patru ori luna asta — o avertizare fără CVE, note de versiune care nu menționează remedierea de securitate pe care o conțin, un producător care descrie o vulnerabilitate mai îngust decât cel care a găsit-o. Concluzia practică e aceeași de fiecare dată: nota de versiune îți spune să actualizezi, iar aia e singura parte din ea pe baza căreia să acționezi fără să citești mai departe.
4Tify analizează expunerea platformelor web, inclusiv inventarul de pluginuri și teme pe care nu l-a auditat nimeni de la lansare. Dacă vrei o evaluare, scrie-ne.
