Dacă ați primit un e-mail de la mine care vă îndrumă către această pagină, este pentru că site-ul dumneavoastră pare să ruleze o versiune de Ultimate Member (modulul WordPress de membri și profiluri de utilizatori, de la Ultimate Member, aflat în fișierele dumneavoastră la /wp-content/plugins/ultimate-member/) care se încadrează în intervalul afectat de o problemă de securitate cunoscută. Această pagină explică în ce constă problema, cum să stabiliți dacă se aplică site-ului dumneavoastră, cum să vă citiți versiunea fără a fi induși în eroare și la ce versiune să actualizați.

Problema este CVE-2026-19423, o slăbiciune de escaladare a privilegiilor fără autentificare în formularele de înregistrare și de profil ale modulului. Afectează versiunile Ultimate Member de la 2.6.7 până la 2.12.1 și este remediată în 2.13.0, publicată pe 24 august 2026. Dacă rulați o versiune din acest interval, actualizați Ultimate Member la 2.13.0 sau mai nouă. Nu există un scor CVSS publicat pentru această problemă (a fost atribuită de WPScan fără vector de severitate), așa că nu vă voi cita unul, și nu am cunoștință de niciun cod de exploatare public pentru ea.

Versiunile anterioare lui 2.6.7 nu sunt afectate de această problemă, și vreau să fiu precis în această privință, în loc să las notificarea să sune mai amplă decât este. Nu este un defect prezent de la începuturile modulului: calea de cod pe care se bazează a fost introdusă în 2.6.7. Așadar o instalare mai veche de 2.6.7 nu este o țintă aici, și nu am scris site-urilor care rulau una. Dacă versiunea dumneavoastră se dovedește a fi sub 2.6.7, puteți ignora această notificare în ceea ce privește această problemă (deși menținerea la zi a unui modul atât de rămas în urmă merită din alte motive).

Înainte de orice, condiția care decide cât de mult contează acest lucru pentru site-ul dumneavoastră, pentru că prefer să o spun direct decât să las notificarea să pară mai gravă decât este: această problemă atinge doar un site în care unul dintre formularele dumneavoastră de înregistrare sau de profil Ultimate Member oferă persoanei care îl completează o alegere de rol, și în care înregistrarea este deschisă publicului. O configurare standard Ultimate Member nu pune un selector de rol pe formularul de înregistrare (un administrator trebuie să îl adauge în mod deliberat), astfel că multe site-uri care rulează o versiune afectată nu sunt deloc expuse. Pot citi versiunea modulului dintr-un fișier public, dar nu pot vedea cum sunt construite formularele dumneavoastră și nici dacă înregistrarea este deschisă, deci această notificare este o avertizare preventivă, nu o constatare confirmată despre site-ul dumneavoastră.

Un cuvânt despre urgență, pentru că aceasta este o notificare condiționată. Dacă niciunul dintre formularele dumneavoastră Ultimate Member nu permite unui vizitator să aleagă un rol, actualizarea este întreținere obișnuită a modulelor. Dacă unul permite, iar înregistrarea este deschisă, vă rog să tratați actualizarea ca pe o prioritate: în acea configurație, un vizitator care își înregistrează un cont ar putea atribui acelui cont privilegii ridicate, potențial până la un nivel echivalent cu cel de administrator, fără niciun acces prealabil la site-ul dumneavoastră. Acolo unde se aplică, este o consecință serioasă, motiv pentru care scriu în loc să o clasez ca fiind de prioritate scăzută; dar se aplică numai în condițiile de mai sus, iar actualizarea o elimină indiferent de ele.

Acesta este un defect al modulului, nu al nucleului WordPress. Un WordPress complet actualizat nu vă protejează dacă modulul Ultimate Member însuși este pe o versiune afectată.

Este legitim acest mesaj?

Da. Aceasta este o notificare de bună-credință, de 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ă mă înregistrez pe el sau să exploatez ceva.

Tot ce am făcut a fost să mă uit la pagini și fișiere pe care site-ul dumneavoastră le servește fiecărui vizitator (la fel de public precum pagina dumneavoastră principală) și să notez numărul de versiune pe care modulul îl publică. În mod specific, nu am creat un cont, nu am trimis niciun formular de înregistrare sau de profil, nu m-am autentificat și nu am trimis nimic către funcționalitatea afectată. 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ă

Ultimate Member construiește paginile de înregistrare, autentificare și profil ale membrilor pe foarte multe site-uri WordPress. Când cineva se înregistrează, modulul decide ce rol ar trebui să aibă noul cont. Pe un formular care oferă un selector de rol, ar trebui să accepte numai rolurile pe care acel formular a fost configurat să le permită.

În versiunile afectate, atunci când lista de roluri permise a unui astfel de formular ajunge goală, modulul nu mai respinge rolul trimis de vizitator. În schimb, păstrează acea valoare și o verifică doar în raport cu rolurile pe care site-ul dumneavoastră le are, nu cu rolurile pe care formularul trebuia să le ofere. Consecința este că un vizitator care își înregistrează un cont îl putea direcționa către un rol pe care nu trebuia să îl primească niciodată, până la un nivel echivalent cu cel de administrator.

Precondiția, repetată pentru că este partea cel mai ușor de înțeles greșit în ambele direcții: este nevoie de un selector de rol pe un formular public și de înregistrare deschisă. Niciuna dintre ele nu este setarea implicită. Formularul de înregistrare standard al Ultimate Member nu are câmp de rol, deci pe o instalare tipică nu există nimic de atins aici. Acolo unde un administrator a adăugat un câmp de rol și a lăsat înregistrarea deschisă, bariera este doar atât de înaltă cât întrebarea cine poate trimite acel formular, adică, având înregistrarea deschisă, oricine.

Descriu acest lucru la nivelul de care un operator de site are nevoie pentru a acționa, și nu mai departe. Nu public detaliile care ar permite cuiva să îl reproducă, și v-aș ruga să nu încercați împotriva propriului site sau al altcuiva. Citirea numărului de versiune și verificarea propriilor formulare, așa cum sunt descrise mai jos, vă spun tot ce aveți nevoie pentru a decide ce să faceți.

Dacă e-mailul meu a citat această problemă, înseamnă că versiunea raportată de site-ul dumneavoastră este în intervalul 2.6.7 până la 2.12.1. Nu am testat dacă site-ul dumneavoastră în particular este exploatabil, și nu pot vedea cum sunt construite formularele. Tot ce am observat este versiunea.

Sunt afectat?

Două întrebări decid, în această ordine.

Prima: oferă vreunul dintre formularele dumneavoastră un selector de rol, cu înregistrarea deschisă?

Aceasta este întrebarea decisivă, și numai dumneavoastră puteți răspunde, pentru că depinde de cum sunt construite formularele, ceea ce nu este vizibil din exterior. Verificarea este complet sigură și este întregul scop al acestei pagini.

  1. În panoul de control WordPress, mergeți la Ultimate Member, apoi Formulare (Forms), și deschideți pe rând fiecare formular de înregistrare și de profil.
  2. Examinați câmpurile fiecărui formular în căutarea unui câmp de selectare a rolului (o listă derulantă sau un set de opțiuni care permite persoanei care se înregistrează să aleagă un rol, uneori etichetat „Rol”). Pe majoritatea site-urilor nu există niciunul, pentru că formularul de înregistrare standard nu include unul.
  3. Verificați dacă înregistrarea este deschisă publicului: Setări, apoi Generale, apoi Membri, caseta „Oricine se poate înregistra” (nucleul WordPress), și dacă formularul dumneavoastră de înregistrare Ultimate Member este accesibil vizitatorilor.
  4. Dacă niciun formular nu oferă un selector de rol, această problemă nu atinge site-ul dumneavoastră, nici măcar pe o versiune afectată, deși actualizarea merită oricum ca întreținere obișnuită.
  5. Dacă vreun formular oferă un selector de rol și înregistrarea este deschisă, tratați actualizarea ca pe o prioritate (vedeți Cum se actualizează). Dacă nu puteți actualiza imediat, pasul intermediar este să eliminați câmpul de rol din orice formular public de înregistrare sau de profil, sau să închideți înregistrarea publică, până când ați actualizat. Remedierea propriu-zisă este actualizarea.

Vă rog să nu încercați să reproduceți problema împotriva propriului site sau al altcuiva; nu aveți nevoie de asta pentru a răspunde la întrebarea de mai sus.

A doua: ce versiune rulați?

Nu trebuie să mă credeți pe cuvânt. Există două moduri publice de a vă citi versiunea și unul în panoul de control, și ar trebui să coincidă.

Din zona de administrare WordPress (sursa de referință):

  1. Autentificați-vă în panoul de control WordPress (de obicei la yourdomain.com/wp-admin).
  2. Mergeți la Module, apoi Module instalate.
  3. Găsiți Ultimate Member, intrarea al cărei dosar este ultimate-member, și notați versiunea afișată sub numele său.

Din manifestul public (fără autentificare): deschideți

yourdomain.com/wp-content/plugins/ultimate-member/readme.txt

într-un browser și citiți linia Stable tag: de lângă început. Aceasta este sursa publică pe care am citit-o eu. Dacă acea adresă returnează „nu a fost găsit”, încercați README.txt cu majuscule; unele găzduiri fac diferența între majuscule și minuscule, iar câteva pachete livrează fișierul cu numele scris cu majuscule.

Din sursa paginii dumneavoastră (fără autentificare): vizualizați sursa paginii principale și căutați foile de stil proprii ale modulului exact la aceste căi:

/wp-content/plugins/ultimate-member/assets/css/um-styles.min.css?ver=...
/wp-content/plugins/ultimate-member/assets/css/um-profile.min.css?ver=...

Numărul ?ver= atașat acestor fișiere este versiunea proprie a modulului. Ultimate Member încarcă aceste foi de stil pe fiecare pagină publică în mod implicit, indiferent dacă pagina afișează sau nu o zonă de membri, deci pagina principală este de obicei suficientă.

Capcana de evitat aici, și este ușor să cădeți în ea. Ultimate Member livrează copii incluse ale mai multor biblioteci terțe în interiorul propriului dosar de modul, și fiecare poartă propriul număr de versiune, complet fără legătură. Sursa paginii dumneavoastră poate afișa o bibliotecă de decupare a imaginilor la ?ver=1.6.1, Font Awesome la ?ver=6.5.2 sau Select2 la ?ver=3.6.2, toate pe căi care încep cu dosarul modulului Ultimate Member. Un operator care caută în sursa paginii dosarul modulului și citește prima valoare ?ver= care apare poate pleca ușor cu unul dintre acele numere, care nu are nicio legătură cu versiunea modulului. Citiți versiunea numai de pe foile de stil um- proprii ale modulului (um-styles, um-profile, um-account și altele asemenea) și ignorați orice alt ?ver= de pe pagină. Dacă nu puteți obține deloc un număr lizibil din sursa paginii, este ceva obișnuit și nu este semn de nimic: modulele de cache și de optimizare elimină în mod curent valoarea ?ver=; folosiți atunci readme.txt sau ecranul de administrare.

Apoi aplicați această regulă, reținând că versiunile se compară numeric, nu alfabetic, astfel că 2.12.1 este mai nouă decât 2.6.7 chiar dacă „12” pare mai mic decât „6” ca text:

  • 2.6.7 până la 2.12.1: afectată, sub rezerva întrebării despre formulare de mai sus. Actualizați la 2.13.0 sau mai nouă.
  • 2.13.0 sau mai nouă: deja remediată în ceea ce privește această problemă. Alegerea celei mai recente versiuni disponibile este cea mai bună mișcare.
  • Orice versiune mai veche de 2.6.7: neafectată de această problemă. Actualizarea merită oricum ca întreținere obișnuită.

Cum se actualizează

Modulul este gratuit, încă publicat și întreținut activ, deci remedierea este o actualizare normală. Calea cea mai sigură este actualizarea prin WordPress însuși, după ce faceți mai întâi o copie de siguranță:

  1. Faceți o copie de siguranță a site-ului (fișiere și bază de date) înainte de a face modificări. Majoritatea furnizorilor de găzduire oferă copii de siguranță cu un clic, sau folosiți un modul WordPress de copii de siguranță.
  2. În administrarea WordPress, mergeți la Panou de control, apoi Actualizări, sau Module, apoi Module instalate. Dacă apare o actualizare Ultimate Member, instalați-o de aici.
  3. Dacă preferați linia de comandă, WP-CLI face același lucru: wp plugin update ultimate-member (comanda folosește numele dosarului, nu numele afișat).
  4. Dacă nu apare nicio actualizare, puteți obține cea mai recentă versiune direct din pagina modulului din directorul WordPress.org, Ultimate Member, și actualiza prin Module, apoi Adaugă un modul nou, apoi Încarcă modul.
  5. După actualizare, confirmați noul număr de versiune (2.13.0 sau mai nou) cu pașii de mai sus și înregistrați un cont de test (sau verificați fluxurile existente de membri și de înregistrare) pentru a vă asigura că funcționează în continuare conform așteptărilor.

Cât timp sunteți acolo, merită să confirmați că nucleul WordPress și celelalte module ale dumneavoastră sunt la zi, pentru că același principiu se aplică tuturor.

După actualizare: a fost deja folosită împotriva dumneavoastră?

Actualizarea la 2.13.0 sau mai nouă închide problema, și pentru multe site-uri aceasta este întreaga sarcină. Această pagină este o notificare preventivă, nu un raport de incident: nu am nicio vizibilitate asupra a ceea ce s-a întâmplat pe site-ul dumneavoastră, și nu m-am uitat.

O verificare ulterioară merită făcută, și este condiționată de aceeași întrebare despre formulare. Deoarece rezultatul acestei probleme, acolo unde se aplică, este un cont cu privilegii ridicate, atunci, dacă site-ul dumneavoastră a avut un formular de înregistrare sau de profil cu selector de rol în timp ce înregistrarea era deschisă și rulați o versiune afectată, merită să confirmați că nimeni nu l-a folosit pentru a crea un cont care nu ar trebui să existe:

  • Treceți în revistă conturile de utilizator, în special administratorii. În Utilizatori, apoi Toți utilizatorii, filtrați după Administrator (și orice alte roluri cu privilegii înalte) și căutați conturi pe care nu le recunoașteți, sau conturi create în jurul sau după perioada în care erați pe o versiune afectată. Acordați atenție utilizatorilor înregistrați recent al căror rol este mai înalt decât cel al unui membru obișnuit.
  • Dacă găsiți un cont pe care nu îl puteți explica, tratați-l așa cum ați trata orice acces neautorizat suspectat: eliminați-l sau retrogradați-l, forțați o resetare a parolelor administratorilor, iar dacă organizația dumneavoastră are o echipă de securitate IT, implicați-o.
  • Dacă totul arată așa cum trebuie, și mai ales dacă niciun formular nu oferea de la bun început un selector de rol, actualizarea singură este suficientă.

Pentru claritate în privința încadrării: aceasta este o autoverificare, nu o declarație că site-ul dumneavoastră a fost atacat. Această notificare se bazează pe un număr de versiune, nu pe vreo dovadă a unui incident.

Ce am făcut și ce nu am făcut

Pentru a fi complet transparent în privința verificării din spatele e-mailului meu: am citit doar fișiere pe care site-ul dumneavoastră le servește deja fiecărui vizitator, mai exact pagina principală și adresele foilor de stil Ultimate Member înscrise în ea, precum și fișierul public readme.txt al modulului din wp-content/plugins/ultimate-member/. Nu am accesat zona de administrare WordPress, baza de date, configurația formularelor sau vreo parte privată a site-ului.

În particular, nu am creat niciodată un cont, nu am trimis niciodată formularul dumneavoastră de înregistrare sau de profil, nu m-am autentificat niciodată și nu am trimis niciodată nimic către funcționalitatea afectată. Nimic nu a fost trimis, testat sau exploatat. Acest lucru contează aici, pentru că o trimitere de înregistrare este aproape de exact acțiunea la care se referă această problemă, deci „nu am atins-o” este întreaga diferență dintre o divulgare și o intruziune.

De asemenea, în mod deliberat nu public detaliile care ar ajuta pe cineva să acționeze asupra acestei probleme. Descrierea de mai sus se oprește la nivelul de care un operator de site are nevoie, și nu fac legătura către niciun cod proof-of-concept.

Aceasta este o observație bazată pe versiune: site-ul dumneavoastră raportează o versiune în intervalul 2.6.7 până la 2.12.1. Nu este o afirmație că site-ul dumneavoastră era exploatabil în momentul în care am verificat. Deoarece această problemă depinde de cum sunt construite formularele și de faptul că înregistrarea este deschisă (lucruri pe care nu le pot vedea), un site din intervalul afectat poate foarte bine să nu fie deloc expus, iar un site din acel interval poate fi protejat separat prin alte mijloace, cum ar fi un firewall pentru aplicații web sau o remediere portată înapoi. Dacă ați actualizat deja, sau ați remediat altfel această problemă, nu este nevoie de nicio acțiune, și îmi cer scuze pentru deranj.

Nu am 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 web, agenția sau furnizorul de găzduire). Vor recunoaște rapid pașii de mai sus.

Dacă întrețineți singur site-ul și v-ați blocat, vă ajut cu plăcere, gratuit, să vă orientați în direcția corectă. Contactați-mă folosind datele de mai jos.

Contact

Evan Harris, cercetător în securitate

Contactez operatorii în legătură cu probleme ca aceasta exclusiv pentru a-i ajuta să își securizeze site-urile. Dacă preferați să nu mai fiți contactat, spuneți-mi și voi respecta acest lucru.

Referințe

Notificări oficiale și urmărire

Producător / modul