Dacă ați primit un e-mail de la mine care vă îndrumă către această pagină, este pentru că site-ul dumneavoastră web pare să ruleze o versiune a Welcart e-Commerce (pluginul gratuit de comerț electronic pentru WordPress de la Welcart / Collne, care se află în fișierele dumneavoastră în /wp-content/plugins/usc-e-shop/) care se încadrează în intervalul afectat de o problemă de securitate cunoscută. Această pagină explică în ce constă problema, cât de mult contează pentru site-ul dumneavoastră, cum să vă citiți versiunea fără a fi indus în eroare și cum să actualizați.

Problema este CVE-2026-19914, o vulnerabilitate de cross-site scripting (XSS) stocat, neautentificată. Afectează fiecare versiune până la 2.12.1 inclusiv și a fost corectată în 2.12.2, lansată pe 31 august 2026. Dacă rulați 2.12.1 sau o versiune mai veche, actualizați Welcart la 2.12.2 sau mai nou. Problema este evaluată la CVSS 7.2 (High), conform evaluării Wordfence. Nu am cunoștință de niciun cod de exploatare public pentru ea.

Nu există nicio versiune mai veche care să fie sigură. Nu este o defecțiune introdusă la un moment dat în istoria pluginului și corectată ulterior. Redarea fără escapare aflată la baza acestei probleme a fost prezentă pe tot parcursul istoriei pluginului - am confirmat că este prezentă încă din versiunea 1.7.0 - așa că „instalarea mea este prea veche ca să fie afectată” nu este o scăpare aici. Singurele versiuni care nu sunt afectate sunt 2.12.2 și cele mai noi.

Înainte de orice, câteva cuvinte despre ce este această problemă și cum se produce, pentru că prefer să o spun clar decât să las avertizarea să sune mai gravă decât este. Este o vulnerabilitate de cross-site scripting stocat, iar scriptul pe care îl poate rula se execută în browserul unui administrator al magazinului, nu în browserul unui vizitator. Pentru ca acest lucru să se întâmple, trebuie să survină două lucruri distincte, ambele: cineva care plasează o comandă în calitate de vizitator (guest) trebuie să trimită, la finalizarea comenzii, o valoare special construită într-un câmp de comandă personalizat, iar apoi un administrator trebuie să deschidă acea comandă pe ecranul de editare a comenzilor din zona de administrare a WordPress-ului dumneavoastră. Valoarea trimisă este stocată împreună cu comanda și redată pe acel ecran fără a fi escapată, așa că se execută atunci când comanda este vizualizată.

Pot citi versiunea dumneavoastră de Welcart dintr-un fișier public, dar nu vă pot vedea comenzile, nu pot vedea dacă vreo comandă conține o valoare special construită și nu pot vedea dacă cineva a făcut într-adevăr acest lucru pe site-ul dumneavoastră. Prin urmare, această notificare este un avertisment de precauție bazat pe numărul versiunii dumneavoastră, nu o constatare confirmată despre site-ul dumneavoastră.

Merită, de asemenea, să fim preciși în privința a ceea ce este și a ceea ce nu este această problemă. Cross-site scripting-ul care se declanșează în sesiunea unui administrator este o problemă reală care merită corectată: un script care rulează în timp ce un administrator este autentificat poate acționa cu privilegiile acelui administrator atât timp cât pagina este deschisă. Dar, în sine, nu este o preluare completă a site-ului. Nu este execuție de cod la distanță pe serverul dumneavoastră și nu este o modalitate prin care un străin neautentificat să își atribuie pur și simplu un cont de administrator. Este mai restrânsă decât problemele de compromitere totală despre care scriu în altă parte și depinde atât de trimiterea unei comenzi, cât și de deschiderea ei de către un administrator, așa că prefer să prezint amploarea cu onestitate decât să vă las cu o impresie mai înfricoșătoare decât o susțin faptele.

Aceasta este o defecțiune a pluginului, nu o defecțiune a nucleului WordPress. Un WordPress complet actualizat nu vă protejează dacă pluginul Welcart în sine se află într-o versiune afectată.

Este legitim acest mesaj?

Da. Aceasta este o notificare de dezvăluire responsabilă și de bună-credință din partea unui cercetător în securitate independent. Nu vă cer bani, parole sau acces la site-ul dumneavoastră și nu am încercat să pătrund în el, să plasez o comandă 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ă web le furnizează fiecărui vizitator (în același mod în care pagina dumneavoastră principală este publică) și să notez numărul versiunii pe care pluginul îl publică. În mod specific, nu am plasat nicio comandă, nu am trimis nimic prin procesul dumneavoastră de finalizare a comenzii, 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, comenzile sau vreo parte privată a site-ului dumneavoastră (mai multe detalii mai jos, la Ce am făcut și ce nu am făcut).

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ă

Welcart transformă un site WordPress într-un magazin online și este cel mai utilizat plugin de comerț electronic pentru WordPress din Japonia. O parte din ceea ce face este să preia datele unui client la finalizarea comenzii, inclusiv orice câmpuri de comandă personalizate pe care un magazin le-a adăugat pentru a colecta informații suplimentare, și să le stocheze împreună cu comanda, astfel încât personalul să le poată examina ulterior.

În versiunile afectate, o valoare trimisă într-un câmp de comandă personalizat în timpul unei finalizări de comandă ca vizitator este stocată împreună cu comanda și apoi afișată pe ecranul de editare a comenzilor din zona de administrare a WordPress-ului dumneavoastră fără a fi escapată. Escaparea este cea care transformă un text ce arată ca marcaj înapoi în text simplu pentru afișare. Fără ea, o valoare construită astfel încât să conțină conținut activ nu este afișată ca text, ci este executată de browserul administratorului care deschide acea comandă. Deoarece un vizitator poate plasa o comandă fără a se autentifica, persoana care furnizează acea valoare nu are nevoie de niciun cont pe site-ul dumneavoastră.

Condiția prealabilă, ca să o spun clar pentru că este partea cel mai ușor de înțeles greșit în ambele sensuri: aceasta necesită atât ca o comandă construită să fi fost trimisă, cât și ca un administrator să o deschidă. Nu se declanșează pe vitrina magazinului dumneavoastră și nu face nimic vizitatorilor obișnuiți. Ceea ce atinge este sesiunea unui administrator de magazin care vizualizează comenzi în wp-admin.

Descriu acest lucru la nivelul de care are nevoie un proprietar de site pentru a acționa, și nu mai mult. Nu public detaliile care ar permite cuiva să îl reproducă și v-aș ruga să nu îl încercați împotriva propriului site sau al oricui altcuiva. Citirea numărului versiunii dumneavoastră, așa cum este descris mai jos, vă spune tot ce aveți nevoie pentru a decide ce să faceți.

Dacă e-mailul meu a citat această problemă, înseamnă că versiunea pe care o raportează site-ul dumneavoastră este 2.12.1 sau mai veche. Nu am testat dacă site-ul dumneavoastră anume este exploatabil și nu vă pot vedea comenzile. Tot ce am observat este versiunea.

Sunt afectat?

Se reduce la o singură întrebare: ce versiune de Welcart rulați?

Din zona de administrare WordPress (sursă de autoritate):

  1. Autentificați-vă în panoul dumneavoastră WordPress (de obicei la yourdomain.com/wp-admin).
  2. Mergeți la Pluginuri apoi Pluginuri instalate.
  3. Găsiți Welcart e-Commerce, intrarea al cărei folder este usc-e-shop, și notați versiunea afișată sub numele său.

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

yourdomain.com/wp-content/plugins/usc-e-shop/readme.txt

într-un browser și citiți linia Stable tag: de lângă început. Dacă acea adresă returnează „nu a fost găsit”, încercați README.txt cu majuscule - unele găzduiri sunt sensibile la majuscule/minuscule, iar câteva pachete livrează fișierul cu majuscule.

Din codul sursă al paginii dumneavoastră (fără autentificare): vizualizați codul sursă al paginii principale și căutați propria foaie de stil a pluginului exact la această cale:

/wp-content/plugins/usc-e-shop/css/usces_default.css?ver=...

Numărul ?ver= atașat acelui fișier este versiunea proprie a pluginului și este sursa publică pe care am citit-o. Welcart încarcă această foaie de stil pe paginile sale de magazin, așa că o pagină de magazin sau de coș este un loc de încredere unde să o găsiți. Citiți versiunea doar din usces_default.css: alte fișiere scrise în pagina dumneavoastră poartă propriile numere ?ver=, cu totul fără legătură, iar citirea primului pe care îl găsiți vă poate lăsa cu versiunea unui alt software. Dacă nu reușiți deloc să obțineți un număr lizibil din codul sursă al paginii, acest lucru este obișnuit și nu este semnul a nimic - pluginurile de cache și de optimizare elimină în mod obișnuit valoarea ?ver= din adresele URL ale resurselor - așa că folosiți readme.txt sau ecranul de administrare.

Apoi aplicați această regulă și rețineți că versiunile se compară numeric, nu alfabetic, așa că 2.12.1 este mai nouă decât 2.9.1 chiar dacă „12” pare mai mic decât „9” ca text:

  • 2.12.1 sau mai veche: afectată. Actualizați la 2.12.2 sau mai nou. Nu există un prag sub care o versiune mai veche să redevină sigură.
  • 2.12.2 sau mai nouă: deja corectată în ceea ce privește această problemă. Instalarea celei mai recente versiuni disponibile este cea mai bună mișcare.

Cum se actualizează

Pluginul este gratuit, încă publicat și întreținut activ, așa că remedierea este o actualizare normală. Calea cea mai sigură este să actualizați prin WordPress însuși și să faceți mai întâi o copie de rezervă:

  1. Faceți o copie de rezervă a site-ului dumneavoastră (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 copii de rezervă pentru WordPress.
  2. În administrarea WordPress, mergeți la Tablou de bord apoi Actualizări, sau la Pluginuri apoi Pluginuri instalate. Dacă este listată o actualizare Welcart, instalați-o de aici.
  3. Dacă preferați linia de comandă, WP-CLI face același lucru: wp plugin update usc-e-shop (comanda folosește numele folderului, nu numele afișat).
  4. Dacă nu apare nicio actualizare, puteți obține cea mai recentă versiune direct de pe pagina pluginului din directorul WordPress.org, Welcart e-Commerce, și actualiza prin Pluginuri apoi Adaugă un plugin nou apoi Încarcă plugin.
  5. După actualizare, confirmați noul număr al versiunii (2.12.2 sau mai nou) folosind pașii de mai sus și deschideți o comandă recentă în zona dumneavoastră de administrare pentru a vă asigura că ecranele de comandă se afișează în continuare normal.

Versiunea 2.12.2 a rezolvat și alte probleme de securitate pe lângă aceasta, așa că actualizarea merită oricum. Cât timp sunteți acolo, merită să confirmați că nucleul WordPress și celelalte pluginuri ale dumneavoastră sunt la zi, deoarece același principiu se aplică tuturor.

După actualizare

Actualizarea la 2.12.2 sau mai nou închide problema, iar pentru majoritatea site-urilor aceasta este toată sarcina. Această pagină este o notificare de precauție, nu un raport de incident: nu am nicio vizibilitate asupra faptului dacă s-a întâmplat ceva pe site-ul dumneavoastră și nu m-am uitat.

Un lucru mic merită făcut cât timp actualizarea este proaspătă:

  • Confirmați că versiunea s-a schimbat cu adevărat, cu oricare dintre verificările de mai sus care a fost cea mai simplă, și deschideți o comandă în zona dumneavoastră de administrare pentru a vă asigura că ecranele de comandă se afișează în continuare.

Veți observa că pe această pagină nu există o listă de verificare de tipul „presupuneți că ați fost compromis”, iar acest lucru este deliberat, nu o omisiune. Ceea ce produce această problemă este un script care rulează în browserul unui administrator, și numai acolo unde a fost trimisă o comandă construită și un administrator a deschis-o ulterior. Nu execută cod pe serverul dumneavoastră și nu creează, în sine, un cont de administrator, așa că auditul administratorilor și rotația parolelor pe care le recomand după o defecțiune din clasa preluării nu ar fi proporționale aici. Actualizați, confirmați și continuați. Dacă aveți un motiv anume să credeți că acest lucru a fost folosit împotriva site-ului dumneavoastră - pentru care această notificare, bazată doar pe un număr de versiune, nu vă oferă nicio dovadă - atunci este rezonabil să tratați autentificările administratorilor cu prudența obișnuită, dar versiunea singură nu o cere.

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 furnizează deja fiecărui vizitator, mai exact pagina dumneavoastră principală și adresa foii de stil Welcart scrisă în ea, precum și readme.txt-ul public al pluginului din interiorul wp-content/plugins/usc-e-shop/. Nu am accesat zona dumneavoastră de administrare WordPress, baza de date, comenzile sau vreo parte privată a site-ului.

În special, nu am plasat niciodată o comandă, nu am trimis nimic prin procesul dumneavoastră de finalizare a comenzii, nu m-am autentificat și nu am trimis nimic către funcționalitatea afectată. Nimic nu a fost trimis, testat sau exploatat. Acest lucru contează aici, deoarece trimiterea unei valori construite la finalizarea comenzii este foarte apropiată de acțiunea exactă la care se referă această problemă, așa că „nu am atins-o” este toată diferența dintre o dezvăluire ș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 are nevoie un proprietar de site și nu leg niciun cod proof-of-concept.

Aceasta este o observație bazată pe versiune: site-ul dumneavoastră raportează o versiune 2.12.1 sau mai veche. Nu este o afirmație că site-ul dumneavoastră era exploatabil în momentul în care am verificat. Deoarece această problemă depinde atât de trimiterea unei comenzi construite, cât și de deschiderea ei de către un administrator - lucruri pe care nu le pot vedea - un site din intervalul afectat s-ar putea foarte bine să nu fi fost 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 corecție retroportată. Dacă ați actualizat deja sau ați remediat altfel acest lucru, nu este necesară 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ă 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