Notificare de securitate ProfilePress
Dacă ați primit de la mine un e-mail care vă îndrumă către această pagină, este pentru că
site-ul dumneavoastră pare să ruleze o versiune de ProfilePress (pluginul WordPress care
încă se livrează sub numele de folder wp-user-avatar, de la ProperFraction) care se
încadrează în intervalul afectat de o problemă de securitate cunoscută. Această pagină
explică în ce constă problema, cum să determinați dacă vi se aplică și cum să actualizați.
O notă despre nume înainte de orice altceva, pentru că îi încurcă pe oameni: acest plugin a
început ca WP User Avatar și și-a păstrat acel slug prin schimbarea de nume, așa că în
fișierele dumneavoastră se află la /wp-content/plugins/wp-user-avatar/, în timp ce
administrarea WordPress îl listează sub numele său complet actual, “Paid Membership Plugin,
Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content –
ProfilePress”. WP User Avatar și ProfilePress sunt același plugin. Este un plugin WordPress
de la un capăt la altul.
Înainte de orice, cel mai important lucru despre această notificare: o versiune din
intervalul afectat nu înseamnă prin ea însăși că site-ul dumneavoastră este expus. Problema
descrisă mai jos este exploatabilă numai atunci când ProfilePress publică un formular de
înregistrare în front-end care include un câmp de selectare a rolului (shortcode-ul
[reg-select-role] sau câmpul “reg-select-role” din constructorul de formulare prin
tragere-și-plasare), configurat într-un anumit fel. Dacă site-ul dumneavoastră nu oferă
autoînregistrare publică sau formularele dumneavoastră de înregistrare nu permit
vizitatorului să aleagă un rol, este foarte probabil să nu fie expus nici măcar pe o versiune
afectată. Pot citi versiunea pluginului dumneavoastră din fișiere publice, dar nu pot vedea
formularele dumneavoastră de înregistrare, așa că această notificare este o avertizare de
precauție, nu o constatare confirmată despre site-ul dumneavoastră.
Problema este CVE-2026-12497, o escaladare de privilegii neautentificată în gestionarul de înregistrare din front-end al pluginului (CWE-269, gestionare necorespunzătoare a privilegiilor). Autoritatea care a atribuit CVE-ul nu a publicat un scor de severitate, iar eu nu inventez unul; ceea ce contează pentru a o evalua este că este neautentificată, dar limitată la un rol care nu este de administrator și condiționată de configurația de înregistrare descrisă mai sus. Ea afectează versiunile 3.0.0 până la 4.16.17 și este remediată în 4.16.18. Dacă rulați o versiune afectată, actualizați ProfilePress la 4.16.18 sau o versiune ulterioară (versiunea curentă este 4.16.19). Nu există niciun indiciu că această problemă ar fi exploatată nicăieri.
Un cuvânt despre urgență, pentru că aceasta este o notificare condiționată: cât de mult contează pentru dumneavoastră depinde aproape în întregime de faptul dacă publicați acel tip de formular de înregistrare. Dacă nu oferiți autoînregistrare publică cu un câmp de selectare a rolului, actualizarea este o întreținere obișnuită a pluginului. Dacă o oferiți, vă rog să tratați actualizarea ca pe o prioritate: în acea configurație, vulnerabilitatea ar putea permite unui vizitator neautentificat să se înregistreze cu un rol mai înalt decât cel oferit de formularul dumneavoastră (de exemplu Editor sau Author). Chiar și atunci, această pagină este o avertizare de precauție, nu un raport de incident, și nu se impune niciun răspuns de urgență.
Aceasta este o vulnerabilitate a unui plugin, nu a nucleului WordPress. Un WordPress complet actualizat nu vă protejează dacă pluginul ProfilePress în sine se află pe o versiune afectată.
Este acest mesaj legitim?
Da. Aceasta este o notificare de bună-credință, prin divulgare responsabilă, din partea unui cercetător independent în securitate. Nu vă cer bani, parole sau acces la site-ul dumneavoastră și nu am încercat să pătrund în el, să încarc ceva sau să exploatez ceva.
Tot ce am făcut a fost să mă uit la fișiere vizibile public pe care site-ul dumneavoastră le
servește fiecărui vizitator (la fel cum pagina dumneavoastră de start este publică) și să
notez numărul versiunii pe care pluginul îl publică în fișierul său public readme.txt. În
mod special, nu am atins sistemul de înregistrare, iar nimic din această verificare nu
atinge datele dumneavoastră, zona de administrare sau vreo parte privată a site-ului (mai
multe detalii la Ce am făcut și ce nu am făcut mai jos).
Dacă doriți să verificați cine sunt, consultați datele de contact din partea de jos a acestei pagini și pagina Despre.
De ce contează
ProfilePress este un plugin larg utilizat de abonamente, înregistrare a utilizatorilor și autentificare pentru WordPress (în jur de 100.000 de instalări active). Printre altele, el permite unui site să publice formulare de înregistrare în front-end, astfel încât vizitatorii să își poată crea propriile conturi, iar aceste formulare pot include opțional un câmp care îi permite vizitatorului să aleagă ce rol ar trebui să aibă noul său cont.
În versiunile afectate, gestionarul de înregistrare calculează rolurile pe care un formular le oferă și rolurile pe care le va accepta folosind două fragmente de cod diferite. Pentru unele configurații valide ale câmpului de rol, codul care calculează rolurile acceptate nu reușește să citească lista de roluri a formularului și revine în tăcere la acceptarea oricărui rol care poate fi editat (adică oricărui rol în afară de administrator). Deoarece, în plus, nu există niciun nonce care să protejeze gestionarul public de înregistrare, un vizitator neautentificat poate trimite un rol la alegerea sa și poate fi înregistrat cu un rol mai înalt decât cel oferit de formular, de exemplu Editor sau Author în locul celui de Subscriber prevăzut.
Două lucruri ajută la păstrarea perspectivei. În primul rând, impactul are un plafon ferm: pluginul exclude explicit rolul de administrator din ceea ce poate atribui înregistrarea, așa că aceasta este o problemă de escaladare a privilegiilor limitată la un rol care nu este de administrator, nu o preluare a serverului, o preluare a controlului de administrator sau o execuție de cod la distanță. În al doilea rând, punctul de intrare este un formular de înregistrare publicat cu un câmp de selectare a rolului, așa că problema ajunge numai la site-urile configurate în acest fel; un site fără autoînregistrare publică sau ale cărui formulare nu permit unui vizitator să aleagă un rol este foarte probabil să nu fie expus nici măcar pe o versiune afectată. Și, pentru a repeta clar, nu există niciun indiciu de exploatare activă: nu figurează în catalogul Known Exploited Vulnerabilities al CISA, iar eu nu am cunoștință de niciun raport de exploatare.
Dacă e-mailul meu a citat această problemă, înseamnă că versiunea raportată de site-ul dumneavoastră se încadrează în intervalul afectat. Nu am testat dacă site-ul dumneavoastră anume este exploatabil și nu pot vedea cum sunt configurate formularele dumneavoastră de înregistrare; tot ce am observat este că site-ul raportează o versiune afectată.
Sunt afectat?
Două întrebări decid acest lucru, în această ordine.
Mai întâi: publicați un formular de înregistrare ProfilePress care îi permite unui vizitator să aleagă un rol? Aceasta este întrebarea decisivă și numai dumneavoastră îi puteți răspunde.
- Dacă site-ul dumneavoastră nu oferă autoînregistrare publică sau formularele sale de
înregistrare nu includ un câmp de selectare a rolului (shortcode-ul
[reg-select-role]sau câmpul “reg-select-role” din constructorul de formulare), este foarte probabil să nu fiți expus, nici măcar pe o versiune afectată. Actualizarea este totuși recomandată, ca întreținere obișnuită. - Dacă site-ul dumneavoastră chiar publică un formular de înregistrare în front-end cu un câmp de selectare a rolului, problema vi se aplică și ar trebui să actualizați prompt.
- Pentru a verifica: în administrarea WordPress, examinați formularele dumneavoastră de înregistrare ProfilePress în căutarea unui câmp de rol sau deschideți una dintre paginile dumneavoastră de înregistrare într-o fereastră de navigare privată și vedeți dacă unui vizitator care nu este autentificat i se oferă o alegere a rolului contului.
Apoi: ce versiune rulați? Nu trebuie să mă credeți pe cuvânt, iar la acest plugin versiunea se raportează în mod fiabil.
Din zona de administrare WordPress (autoritativ):
- Autentificați-vă în panoul WordPress (de obicei la
yourdomain.com/wp-admin). - Accesați Plugins apoi Installed Plugins.
- Găsiți intrarea listată ca “Paid Membership Plugin … ProfilePress” (folderul său
este
wp-user-avatar) și notați versiunea afișată sub numele său. Aceasta este versiunea reală instalată.
Din manifestul public (nu este nevoie de autentificare): deschideți
yourdomain.com/wp-content/plugins/wp-user-avatar/readme.txt într-un browser. Linia
Stable tag: din partea de sus este versiunea pe care o raportează instalarea
dumneavoastră, iar acesta este același fișier public pe care l-am citit eu.
O mică atenționare dacă sunteți genul de persoană care citește numerele de versiune din
URL-urile resurselor: apreciați versiunea din valoarea ?ver= a propriilor
frontend.min.js sau frontend.min.css ale pluginului, care este versiunea ProfilePress.
Nu o citiți din select2/select2.min.css inclus, al cărui ?ver= (de exemplu 7.0.2)
este versiunea proprie a bibliotecii select2 și nu are nicio legătură cu versiunea pluginului.
Apoi aplicați această regulă și rețineți că versiunile se compară numeric, nu alfabetic:
- 3.0.0 până la 4.16.17: potențial afectată (sub rezerva întrebării despre formularul de înregistrare de mai sus), actualizați acum.
- 4.16.18 sau mai nouă: deja remediată. Aceasta include versiunea curentă 4.16.19.
- Mai veche decât 3.0: neafectată de această problemă. Gestionarul de înregistrare vulnerabil a apărut pentru prima dată odată cu schimbarea de nume în ProfilePress 3.0; linia anterioară “WP User Avatar” 1.x și 2.x, dedicată doar avatarurilor, nu avea funcționalitate de înregistrare și nu o conține. (În practică, aproape orice instalare curentă este o versiune din linia 4.16.x.)
Cum să actualizați
Cea mai sigură cale este să actualizați prin WordPress însuși și să faceți mai întâi o copie de rezervă:
- Faceți o copie de rezervă a site-ului (fișiere și baza de date) înainte de a face modificări. Majoritatea furnizorilor de găzduire oferă copii de rezervă cu un singur clic sau folosiți un plugin de backup pentru WordPress.
- În administrarea WordPress, accesați Dashboard apoi Updates, sau Plugins apoi Installed Plugins. Dacă este listată o actualizare ProfilePress, instalați-o de aici.
- Dacă preferați linia de comandă, WP-CLI face același lucru:
wp plugin update wp-user-avatar(comanda folosește numele folderului,wp-user-avatar). - Dacă nu apare nicio actualizare, puteți obține cea mai recentă versiune direct de pe pagina pluginului din directorul WordPress.org, ProfilePress, și actualizați prin Plugins apoi Add New Plugin apoi Upload Plugin.
- După actualizare, confirmați noul număr al versiunii (4.16.18 sau o versiune ulterioară; versiunea curentă este 4.16.19) folosind pașii de mai sus și verificați că paginile dumneavoastră de înregistrare și de autentificare funcționează normal.
Cât timp sunteți acolo, merită să confirmați că nucleul WordPress și celelalte pluginuri ale dumneavoastră sunt actualizate, deoarece același principiu se aplică tuturor.
După actualizare
Actualizarea la 4.16.18 sau la o versiune ulterioară închide problema, iar pentru majoritatea site-urilor aceasta este întreaga sarcină. Nu există niciun indiciu că această vulnerabilitate ar fi fost exploatată undeva, așa că nu se impune niciun răspuns de urgență: nu trebuie să vă tratați site-ul ca fiind compromis sau să îl scoateți offline.
Merită luată în considerare o măsură ulterioară, condiționată de aceeași întrebare despre înregistrare. Dacă site-ul dumneavoastră publica un formular de înregistrare ProfilePress cu un câmp de selectare a rolului în timp ce se afla pe o versiune afectată, atunci era cel puțin teoretic posibil ca un vizitator să se fi înregistrat cu un rol mai înalt decât cel prevăzut, chiar dacă nu există nicio dovadă că cineva a făcut-o. În acest caz, o singură precauție de rutină este rezonabilă:
- Aruncați o privire peste înregistrările recente de utilizatori pentru orice cont creat cu un rol neașteptat de înalt (de exemplu un Editor sau Author pe care nu îl recunoașteți), în modul obișnuit în care ați examina activitatea site-ului, și ajustați sau eliminați orice pare deplasat.
Tratați acest lucru ca pe o întreținere obișnuită de securitate, nu ca pe un răspuns la incident. Dacă nu oferiți autoînregistrare publică cu un câmp de selectare a rolului, este suficientă doar actualizarea.
Ce am făcut și ce nu am făcut
Pentru a fi pe deplin transparent cu privire la verificarea din spatele e-mailului meu: am
citit doar fișiere publice pe care site-ul dumneavoastră le servește deja fiecărui vizitator,
mai exact fișierul public readme.txt al pluginului și pagina dumneavoastră de start. Nu
am accesat zona dumneavoastră de administrare WordPress, baza de date sau vreo parte privată a
site-ului. În mod special, nu am atins calea vulnerabilă de înregistrare și nu am testat
sau exploatat nimic.
Aceasta este o observație bazată pe versiune: site-ul dumneavoastră raportează o versiune din intervalul afectat. Deoarece această problemă depinde de configurație, un site din acel interval poate să nu fie deloc expus (dacă nu oferă autoînregistrare publică sau formularele sale nu poartă un câmp de selectare a rolului) și poate fi, de asemenea, deja atenuat prin alte mijloace, cum ar fi un firewall pentru aplicații web. Această notificare nu este o afirmație că site-ul dumneavoastră era exploatabil la momentul verificării mele.
Nu am un webmaster / m-am blocat
Dacă nu sunteți persoana care întreține site-ul, vă rog să transmiteți această pagină celui care o face (dezvoltatorul dumneavoastră web, agenția sau furnizorul de găzduire). Vor recunoaște rapid pașii de mai sus.
Dacă întrețineți site-ul dumneavoastră și v-ați blocat, vă ajut cu plăcere să vă orientați în direcția corectă, fără niciun cost. Contactați-mă folosind datele de contact de mai jos.
Contact
Evan Harris, cercetător în securitate
- E-mail: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Iau legătura în privința unor probleme ca aceasta pur și simplu pentru a ajuta operatorii să-și securizeze site-urile. Dacă preferați să nu mai fiți contactat, doar spuneți-mi și voi respecta acest lucru.
Referințe
Buletine oficiale și urmărire
Producător / plugin