Dacă ați primit un e-mail de la mine care vă trimite la această pagină, este pentru că site-ul dumneavoastră pare să ruleze o versiune a Content Views – Post Grid & Filter (pluginul WordPress de Content Views / PT Guy, care se află în fișierele dumneavoastră la /wp-content/plugins/content-views-query-and-display-post-page/) care se încadrează în intervalul afectat de o problemă de securitate cunoscută. Această pagină explică care este problema, cum să stabiliți cât de mult contează pentru site-ul dumneavoastră, cum să citiți versiunea dumneavoastră fără a fi păcăliți și cum să actualizați.

Problema este CVE-2026-15361, o injecție SQL în gestionarea previzualizării pluginului. Afectează fiecare lansare anterioară versiunii 4.5 și este remediată în 4.5, lansată pe 28 iulie 2026. Dacă rulați orice versiune mai veche de 4.5, actualizați Content Views la 4.5.1 sau o versiune ulterioară, care este lansarea curentă la momentul scrierii acestui text (4 august 2026). Nu există niciun scor CVSS publicat pentru această problemă, așa că nu vă voi cita unul, și nu am cunoștință de niciun cod de exploatare public pentru ea.

Nu există nicio versiune mai veche care să fie sigură. Aceasta nu este o defecțiune introdusă la un moment dat în istoria pluginului și remediată ulterior. Am verificat fiecare etichetă de lansare publicată din istoria pluginului, de la cea mai veche din 2014 până la 4.4, iar codul afectat se regăsește în toate. „Instalarea mea este prea veche pentru a fi afectată” nu este o scăpare aici. Singurele versiuni neafectate sunt 4.5 și cele ulterioare.

Înainte de orice altceva, calificativul care decide cât de mult contează acest lucru pentru site-ul dumneavoastră, pentru că prefer să îl precizez decât să las notificarea să pară mai gravă decât este: această defecțiune poate fi folosită doar de cineva care este conectat la site-ul dumneavoastră. Nu contează ce poate face în mod normal contul respectiv, iar cel mai mic rol din WordPress este suficient, dar trebuie totuși să existe un cont. Așadar, întrebarea care decide expunerea dumneavoastră nu este o setare nicăieri în plugin, ci cine poate obține un cont pe site-ul dumneavoastră. Pot citi versiunea pluginului dumneavoastră dintr-un fișier public și pot vedea dacă WordPress servește pagina sa standard de înregistrare, dar nu pot vedea cine deține conturi pe site-ul dumneavoastră, așa că această notificare este o avertizare preventivă, nu o constatare confirmată despre dumneavoastră.

Rețineți ce nu este acest calificativ. Nu există nicio opțiune de dezactivare, nicio funcție de anulare a publicării și nicio configurație care să vă scoată din intervalul de risc. Handlerul afectat este înregistrat la fiecare instalare a unei versiuni afectate, indiferent dacă ați plasat vreodată o grilă de articole pe o pagină. Dacă mergeți în căutarea unei casete de bifat pentru a-l dezactiva, nu veți găsi una, pentru că nu există. Actualizarea este remedierea.

Un cuvânt privind urgența, deoarece aceasta este o notificare condiționată. Dacă sunteți singura persoană cu un cont pe site și nimeni altcineva nu poate obține unul, actualizarea este o întreținere obișnuită a pluginului. Dacă site-ul dumneavoastră acceptă înregistrări din partea altor persoane, vă rugăm să o tratați ca pe o prioritate, și rețineți că înregistrările iau mai multe forme decât cea evidentă: un magazin WooCommerce, un plugin de membru sau de forum, un blog cu mai mulți autori și o pagină personalizată de înregistrare creează cu toatele conturi fără ca formularul propriu de înregistrare al WordPress să fie vreodată implicat.

Dacă aveți pagina de înregistrare a WordPress deschisă vizitatorilor și nu aveți nevoie de ea, dezactivarea ei este un pas intermediar rezonabil, deoarece restrânge cine poate ajunge la această problemă. Vă rugăm însă să nu o interpretați ca pe o garanție completă. Închiderea înregistrării închide doar una dintre mai multe uși către un cont și nu face nimic în privința conturilor deja existente. Actualizarea pluginului este ceea ce elimină efectiv problema.

Merită de asemenea să fim preciși despre ce este și ce nu este această problemă. Ea permite cuiva cu un cont cu privilegii reduse să citească date din baza de date a site-ului dumneavoastră pe care contul său nu ar trebui să le poată vedea. Merită remediată, întrucât o bază de date WordPress conține lucruri precum adresele de e-mail ale utilizatorilor și parolele criptate (hashed), iar pe unele site-uri și înregistrări ale membrilor sau clienților. Dar nu este o preluare de administrator, nu este o modalitate prin care cineva să își acorde singur un cont de administrator și nu este execuție de cod la distanță. Este mai restrânsă decât problemele de compromitere completă despre care scriu în altă parte, și prefer să stabilesc amploarea în mod onest decât să vă las cu o impresie mai înspăimântătoare decât susțin faptele.

Aceasta este o defecțiune a pluginului, nu a nucleului WordPress. Un WordPress complet actualizat nu vă protejează dacă pluginul Content Views însuși este pe o versiune afectată.

Este legitim acest mesaj?

Da. Aceasta este o notificare de divulgare responsabilă, făcută cu bună-credință, de către un cercetător independent în securitate. Nu vă rog să îmi dați 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 paginile și fișierele pe care site-ul dumneavoastră le servește fiecărui vizitator (același mod în care pagina dumneavoastră de start este publică) și să notez numărul de versiune pe care îl publică pluginul. Una dintre paginile pe care le-am citit a fost pagina standard de înregistrare WordPress a site-ului dumneavoastră, pentru a vedea dacă este deschisă vizitatorilor, iar citirea ei este tot ce am făcut cu ea. În mod specific, nu am trimis acel formular, nu am creat un cont, nu m-am conectat și nu am trimis nimic către funcția afectată. Nimic din această verificare nu atinge datele dumneavoastră, zona de administrare sau orice parte privată a site-ului dumneavoastră (mai multe detalii la secțiunea Ce am făcut și ce nu am făcut de mai jos).

Dacă doriți să verificați cine sunt, consultați detaliile de contact de la sfârșitul acestei pagini și pagina Despre.

De ce contează

Content Views construiește grile, liste și derulatoare de articole pe site-ul dumneavoastră, astfel încât să puteți afișa o selecție filtrată de articole sau pagini fără să scrieți niciun cod. O parte din modul în care face acest lucru este un handler de cereri care redă o previzualizare a unei grile pe baza setărilor care îi sunt furnizate.

În versiunile afectate, acel handler verifică un jeton de securitate și se oprește acolo. Nu verifică niciodată dacă persoana care trimite cererea are voie să îl folosească, iar jetonul în cauză nu este un secret: pluginul îl publică fiecărui vizitator al site-ului. Handlerul construiește apoi o interogare a bazei de date din setări preluate direct din cerere. Consecința este că cineva care deține nimic mai mult decât cel mai puțin privilegiat cont de pe site-ul dumneavoastră poate direcționa acea interogare și poate citi date din baza dumneavoastră de date pe care contul său nu ar trebui să le vadă.

Precondiția, repetată pentru că este partea cel mai probabil să fie interpretată greșit în oricare direcție: un cont, nu o configurație. Nu trebuie activat nimic pentru ca handlerul să fie accesibil, și nu există nicio setare care să scoată o versiune afectată din intervalul de risc. Ceea ce se interpune între o instalare afectată și această problemă este pur și simplu dacă altcineva în afară de dumneavoastră se poate conecta. Pe un site unde oricine se poate înregistra, aceasta nu este o barieră prea mare. Pe un site unde sunteți singurul utilizator, este una reală.

Și reversul, care contează la fel de mult: un site cu formularul de înregistrare al WordPress închis nu este, prin urmare, sigur. Conturile apar pe multe căi, și oricare dintre ele este suficientă.

Descriu acest lucru la nivelul de detaliu de care are nevoie un proprietar de site pentru a acționa, și nu mai mult. Nu public detaliile care ar permite cuiva să o reproducă, și aș ruga să nu încercați acest lucru pe propriul site sau pe al cuiva. Citirea numărului dumneavoastră de versiune, așa cum este descris mai jos, vă spune tot ce aveți nevoie pentru a decide ce aveți de făcut.

Dacă e-mailul meu a citat această problemă, înseamnă că versiunea pe care o raportează site-ul dumneavoastră este mai veche de 4.5. Nu am testat dacă site-ul dumneavoastră particular este exploatabil, și nu pot vedea cine are conturi pe el. Tot ce am observat este versiunea, și dacă pagina dumneavoastră de înregistrare este servită vizitatorilor.

Sunt afectat?

Totul se reduce la o singură întrebare: ce versiune de Content Views rulați?

Un cuvânt rapid despre care plugin este vorba, deoarece numele este comun mai multor produse. Această notificare privește pluginul gratuit publicat pe WordPress.org, cel al cărui folder este content-views-query-and-display-post-page. Același producător vinde și o linie Pro separată. Dacă folderul pluginului dumneavoastră este acesta, continuați lectura.

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

  1. Conectați-vă la tabloul de bord WordPress (de obicei la yourdomain.com/wp-admin).
  2. Mergeți la Pluginuri apoi Pluginuri instalate.
  3. Găsiți Content Views – Post Grid & Filter, intrarea al cărei folder este content-views-query-and-display-post-page, și notați versiunea afișată sub numele său.

Din manifestul public (nu este necesară conectarea): deschideți

yourdomain.com/wp-content/plugins/content-views-query-and-display-post-page/README.txt

într-un browser, și citiți linia Stable tag: de aproape de partea de sus. Aceasta este una dintre cele două surse publice pe care le-am citit.

Fiți atenți la majuscule în acel nume de fișier. Pluginurile WordPress livrează în mod convențional un readme.txt cu litere mici, iar aceasta este adresa pe care majoritatea oamenilor o tastează din obișnuință. Pachetele 4.x ale acestui plugin livrează fișierul ca README.txt cu litere mari, așa că pe o gazdă sensibilă la majuscule/minuscule adresa cu litere mici returnează o eroare 404 și pare că fișierul nu există. El există. Încercați scrierea cu majuscule înainte de a trage vreo concluzie.

Din sursa paginii dumneavoastră (nu este necesară conectarea): vizualizați sursa paginii dumneavoastră de start și căutați resursele front-end proprii ale pluginului la exact aceste căi:

/wp-content/plugins/content-views-query-and-display-post-page/public/assets/js/cv.js?ver=...
/wp-content/plugins/content-views-query-and-display-post-page/public/assets/css/cv.css?ver=...

Numărul ?ver= atașat acestor fișiere este versiunea proprie a pluginului. La o instalare implicită, ele se încarcă pe fiecare pagină din front-end, indiferent dacă apare sau nu o grilă de articole pe ea, așa că pagina dumneavoastră de start este de obicei suficientă. La instalările foarte vechi, aceleași două fișiere se numesc public.js și public.css, și aceeași regulă se aplică și lor.

Capcana de evitat aici, și este una ușor de căzut în ea. Acest plugin livrează copii încorporate ale mai multor biblioteci terțe în interiorul propriului folder de plugin, iar fiecare dintre acestea poartă propriul său număr de versiune, complet independent. Sursa paginii dumneavoastră poate arăta Bootstrap la 3.3.5 sau 3.3.0, Select2 la 3.4.5, html5shiv la 3.7.0, respond.js la 1.4.2 și bootstrap-paginator la 0.5, toate pe căi care încep cu folderul pluginului Content Views. Un operator care caută în sursa paginii folderul pluginului și citește prima valoare ?ver= care apare poate ajunge cu ușurință să creadă că pluginul este la versiunea „3.3.5”, și apoi să se întrebe cum se compară asta cu 4.5. Nu se compară deloc. Un număr precum 3.3.5 sau 0.5 aflat pe o cale bootstrap sau select2 este versiunea unei alte bucăți de software. Citiți versiunea doar de pe cv.js sau cv.css (sau public.js / public.css la o instalare foarte veche), și ignorați orice alt ?ver= din pagină.

Dacă nu puteți obține deloc un număr lizibil din sursa paginii, acest lucru este frecvent și nu este un semn de nimic: pluginurile de cache și optimizare elimină în mod obișnuit valoarea ?ver= de pe adresele resurselor, sau combină fișierele într-un script unificat. În acest caz, README.txt este citirea publică de încredere, iar ecranul de administrare din prima verificare are întotdeauna răspunsul.

Apoi aplicați această regulă, reținând că versiunile se compară numeric, nu alfabetic, astfel încât 4.10 ar fi mai nouă decât 4.9 chiar dacă pare mai mică ca text:

  • Orice versiune mai veche de 4.5: afectată. Actualizați. Nu există niciun prag sub care o lansare mai veche să devină din nou sigură.
  • 4.5 sau mai nouă: deja remediată în ceea ce privește această problemă. Lansarea curentă la momentul scrierii acestui text este 4.5.1, iar utilizarea celei mai recente versiuni disponibile este cea mai bună mișcare.

Cum se actualizează

Pluginul este gratuit, este încă publicat și întreținut activ, astfel încât remedierea constă într-o actualizare normală. Cea mai sigură metodă este să efectuați actualizarea direct din WordPress și să faceți mai întâi o copie de rezervă:

  1. Faceți o copie de rezervă a site-ului (fișiere și bază de date) înainte de a face modificări. Majoritatea furnizorilor de găzduire oferă backup-uri cu un singur clic, sau puteți utiliza un plugin de backup pentru WordPress.
  2. În panoul de administrare WordPress, mergeți la Panou de control apoi la Actualizări, sau la Pluginuri apoi la Pluginuri instalate. Dacă este listată o actualizare pentru Content Views, instalați-o de aici.
  3. Dacă preferați linia de comandă, WP-CLI face același lucru: wp plugin update content-views-query-and-display-post-page (comanda utilizează numele folderului, nu numele de afișare).
  4. Dacă nu apare nicio actualizare, puteți obține cea mai recentă versiune direct de pe pagina pluginului din directorul WordPress.org, Content Views – Post Grid & Filter, și puteți actualiza accesând Pluginuri apoi Adaugă plugin nou și apoi Încarcă plugin.
  5. După actualizare, confirmați numărul noii versiuni (4.5.1 sau o versiune ulterioară) folosind pașii de mai sus, și verificați dacă grilele dumneavoastră de articole și orice filtre de pe ele se afișează în continuare normal.

În timp ce sunteți acolo, merită să confirmați că nucleul WordPress și celelalte pluginuri sunt actualizate, deoarece același principiu se aplică tuturor acestora.

După actualizare

Actualizarea la versiunea 4.5.1 sau o versiune ulterioară închide problema, iar pentru majoritatea site-urilor aceasta este singura sarcină necesară. Această pagină este o notificare preventivă, nu un raport de incident: nu am vizibilitate asupra faptului dacă s-a întâmplat ceva pe site-ul dumneavoastră, și nu am verificat.

Merită făcute două lucruri mici cât timp actualizarea este proaspătă:

  • Confirmați că versiunea s-a schimbat efectiv, folosind oricare dintre verificările de mai sus a fost mai ușoară, și încărcați o pagină care afișează una dintre grilele dumneavoastră de articole pentru a vă asigura că se afișează în continuare corect.
  • Dacă ați avut înregistrarea WordPress deschisă și nu aveți nevoie de ea, luați în considerare închiderea ei. Aceasta este o igienă generală, nu o remediere pentru această problemă, pe care actualizarea a rezolvat-o deja, și merită reținut că alte pluginuri de pe site-ul dumneavoastră pot crea conturi indiferent de aceasta.

Veți observa că nu există pe această pagină o listă de verificare de tipul „presupuneți că ați fost compromis”, iar acest lucru este deliberat, nu o omisiune. Ceea ce oferă această problemă este o citire a bazei de date accesibilă dintr-un cont cu privilegii reduse. Nu îi oferă nimănui un cont de administrator și nu execută cod pe serverul dumneavoastră, așa că auditul de administrator și exercițiul de rotație a parolelor pe care le recomand după o defecțiune de tip preluare nu ar fi proporționale aici. Actualizați, confirmați și continuați.

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

Pentru a fi complet transparent în legătură cu verificarea din spatele e-mailului meu, iată-o în întregime. Am citit pagini și fișiere pe care site-ul dumneavoastră le servește deja fiecărui vizitator:

  • pagina dumneavoastră de start, și adresele resurselor scrise în ea;
  • README.txt-ul public al pluginului din interiorul wp-content/plugins/content-views-query-and-display-post-page/;
  • pagina standard de înregistrare WordPress a site-ului dumneavoastră, la /wp-login.php?action=register, pentru a vedea dacă este deschisă vizitatorilor. Aceasta este o pagină publicată, și citirea ei este tot ce am făcut.

Nu am trimis acel formular de înregistrare, nu am creat un cont și nu m-am conectat la site-ul dumneavoastră. Nu am trimis nimic către funcția afectată. Acesta este ultimul punct despre care vreau să fiu cel mai clar: problema este un punct de injecție SQL, iar trimiterea unui payload către baza de date a altcuiva nu este ceva ce face acest proiect, nici într-un laborator, nici în producție. Nu s-a trimis, testat sau exploatat nimic, și nimic nu a atins zona de administrare WordPress, baza de date sau orice parte privată a site-ului dumneavoastră.

De asemenea, nu public în mod deliberat detaliile care ar ajuta pe cineva să acționeze în legătură cu această problemă. Descrierea de mai sus se oprește la nivelul de care are nevoie un proprietar de site, iar eu nu trimit către niciun cod demonstrativ.

Aceasta este o observație bazată pe versiune: site-ul dumneavoastră raportează o versiune mai veche de 4.5. Nu este o afirmație că site-ul dumneavoastră era exploatabil la momentul verificării mele. Deoarece folosirea acestei probleme necesită ca cineva să fie conectat, și nu pot vedea cine deține conturi pe site-ul dumneavoastră, un site din intervalul afectat s-ar putea să nu fie deloc expus, iar un site din acel interval s-ar putea să fie protejat separat prin alte mijloace, cum ar fi un firewall de aplicații web sau o remediere portată separat (backport).

Nu am webmaster / m-am blocat

Dacă nu sunteți persoana care întreține site-ul, vă rugăm să transmiteți această pagină persoanei care o face (dezvoltatorul dumneavoastră web, agenția sau furnizorul de găzduire). Va recunoaște rapid pașii de mai sus.

Dacă întrețineți site-ul dumneavoastră și rămâneți blocat, sunt bucuros să vă ajut indicând direcția corectă, fără costuri. Contactați-mă folosind detaliile de contact de mai jos.

Contact

Evan Harris, cercetător în securitate

Vă contactez în legătură cu astfel de probleme pur și simplu pentru a ajuta operatorii să își securizeze site-urile. Dacă preferați să nu mai fiți contactat din nou, spuneți-mi și voi respecta această dorință.

Referințe

Anunțuri oficiale și urmărire

Producător / plugin