Dacă ați primit de la mine un e-mail care trimite către această pagină, este pentru că site-ul dumneavoastră pare să folosească o versiune de Drag and Drop Multiple File Upload for Contact Form 7 (pluginul WordPress listat pe WordPress.org sub acest nume, realizat de codedropz, care se află în fișierele dumneavoastră la /wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/) care se încadrează în intervalul afectat de o problemă de securitate cunoscută. Această pagină explică în ce constă problema, cum stabiliți dacă vi se aplică deloc, cum să vă citiți versiunea fără să fiți indus în eroare și cum să actualizați.

Rețineți: aceasta nu este versiunea pentru WooCommerce. Același autor publică un plugin separat, „Drag and Drop Multiple File Upload for WooCommerce” (folderul drag-and-drop-multiple-file-upload-for-woocommerce), care este un produs diferit, cu propria numerotare a versiunilor. Dacă pluginul din fișierele dumneavoastră este cel pentru WooCommerce, nu cel pentru Contact Form 7, această pagină nu se referă la el. Tot ce urmează privește exclusiv add-on-ul pentru Contact Form 7.

Înainte de orice altceva, cel mai important fapt despre această notificare: o versiune din intervalul afectat nu înseamnă, prin ea însăși, că site-ul dumneavoastră este expus. Problema de mai jos intervine doar pe site-urile care au un anumit tip de câmp de încărcare, iar eu nu pot vedea din exterior cum sunt configurate formularele dumneavoastră:

  • Problema ajunge doar la un formular Contact Form 7 care are unul dintre câmpurile de încărcare drag-and-drop ale acestui plugin setat să accepte orice tip de fișier.
  • Un câmp care restricționează ce acceptă la anumite tipuri (de exemplu imagini sau PDF-uri) nu este expus acestei probleme, nici măcar pe o versiune afectată. Restricționarea tipurilor acceptate este de asemenea comportamentul implicit atunci când un câmp nu le specifică.

Pot citi versiunea pluginului dumneavoastră dintr-un fișier public, dar nu pot citi configurația formularelor dumneavoastră, așa că această notificare este o avertizare de precauție, nu o constatare confirmată despre site-ul dumneavoastră.

Problema este CVE-2026-18781, o vulnerabilitate de încărcare a fișierelor fără autentificare în gestionarea încărcărilor din plugin. Afectează versiunile 1.3.9.3 până la 1.3.9.8 și este remediată în 1.3.9.9. Dacă folosiți o versiune afectată, actualizați Drag and Drop Multiple File Upload for Contact Form 7 la 1.3.9.9 sau mai nouă, și mențineți la zi și Contact Form 7 însuși.

Un cuvânt despre urgență, pentru că aceasta este o notificare condiționată. Dacă niciunul dintre câmpurile dumneavoastră de încărcare nu acceptă orice tip de fișier, actualizarea este întreținere obișnuită a pluginului. Dacă unul dintre ele acceptă, vă rog să tratați actualizarea ca prioritară: în acea configurație, vulnerabilitatea ar putea permite unui vizitator fără niciun cont să salveze pe serverul dumneavoastră un fișier la alegere, de un tip pe care serverul l-ar putea apoi executa, ceea ce poate duce la controlul total al site-ului.

Aceasta este o vulnerabilitate a pluginului, nu a nucleului WordPress, și este separată de Contact Form 7 însuși. Un WordPress complet actualizat, și un Contact Form 7 la zi, nu vă protejează dacă acest add-on se află pe o versiune afectată.

Este legitim acest mesaj?

Da. Este o notificare de bună-credință, în spiritul dezvăluirii responsabile, din partea unui cercetător independent în securitate. Nu vă cer bani, parole sau acces la site și nu am încercat să pătrund în el, să trimit vreunul dintre formularele dumneavoastră sau să încarc ceva pe el.

Tot ce am făcut a fost să mă uit la fișiere vizibile public pe care site-ul dumneavoastră le servește oricărui vizitator (la fel cum pagina de start este publică) și să notez numărul de versiune pe care îl publică pluginul. În mod special nu am trimis niciun formular, nu am încărcat niciun fișier și nu m-am apropiat de gestionarul de încărcări al pluginului. Nimic din această verificare nu atinge datele dumneavoastră, zona de administrare sau vreo parte privată a site-ului dumneavoastră (mai multe detalii la Ce am făcut și ce nu am făcut mai jos).

Dacă doriți să verificați cine sunt, găsiți datele de contact la finalul acestei pagini și pe pagina Despre.

De ce contează

Acest plugin adaugă formularelor Contact Form 7 câmpuri de încărcare a fișierelor prin drag-and-drop, astfel încât vizitatorii pot atașa fișiere atunci când trimit un formular: o candidatură pentru un loc de muncă, o cerere de suport, o fotografie. Pentru ca acest lucru să fie sigur, pluginul ar trebui să refuze tipurile de fișiere periculoase.

În versiunile afectate, această verificare putea fi ocolită. Pluginul examina numele fișierului încărcat pentru a decide dacă tipul era permis, apoi modifica numele și salva fișierul fără să verifice din nou numele modificat. Pentru că numele era schimbat după ce fusese aprobat, un nume putea fi construit astfel încât versiunea verificată să pară inofensivă, în timp ce versiunea salvată efectiv nu era, permițând unui tip de fișier neautorizat să ajungă pe server. Acolo unde serverul tratează apoi acel fișier ca pe ceva ce poate executa, rezultatul este că fișierul unui străin rulează pe site-ul dumneavoastră.

Din asta decurg două lucruri, care trag în direcții opuse. Primul este că acest lucru contează doar acolo unde un formular are un câmp de încărcare configurat să accepte orice tip de fișier. Acolo unde fiecare câmp de încărcare este limitat la un set specific de tipuri, fișierul deghizat nu se potrivește cu un tip permis și este respins, așa că un site aflat în această situație nu poate fi atins prin această problemă. Al doilea este că acolo unde un câmp „acceptă orice” chiar există, nu este nevoie de niciun cont, nicio parolă și nicio cooperare din partea nimănui: formularul este deschis publicului prin proiectare.

Descriu toate acestea la nivelul de care are nevoie un proprietar de site pentru a acționa, și nu mai departe. Nu public detaliile care i-ar permite cuiva să reproducă problema și v-aș ruga să nu încercați acest lucru nici pe site-ul dumneavoastră, nici pe al altcuiva. Citirea configurației formularelor dumneavoastră și a numărului de versiune, așa cum este descris mai jos, vă spune tot ce vă trebuie ca să decideți ce aveți de făcut.

Dacă e-mailul meu a invocat 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ă. Tot ce am observat este versiunea.

Sunt afectat?

Există două întrebări care decid acest lucru, în această ordine.

Primul: vreun câmp de încărcare acceptă „orice tip de fișier”?

Aceasta este întrebarea decisivă, iar numai dumneavoastră puteți răspunde la ea. Verificarea propriilor formulare este complet sigură și este exact scopul acestei pagini.

  1. Autentificați-vă în panoul WordPress și deschideți Contact (Contact Form 7) din bara laterală.
  2. Deschideți fiecare formular care oferă o încărcare de fișiere și găsiți câmpul de încărcare drag-and-drop (câmpul acestui plugin, adăugat alături de etichetele standard Contact Form 7).
  3. Verificați dacă acel câmp limitează tipurile de fișiere pe care le acceptă.
  • Dacă fiecare câmp de încărcare este restricționat la tipuri specifice (de exemplu jpg, png, pdf), această problemă nu ajunge la site-ul dumneavoastră, nici măcar pe o versiune afectată. Actualizarea merită totuși făcută, ca întreținere obișnuită.
  • Dacă vreun câmp de încărcare este setat să accepte orice tip de fișier, problema vi se aplică și ar trebui să actualizați cât mai curând. Restricționarea acelui câmp la tipurile de care aveți cu adevărat nevoie este un pas înțelept în sine, dar actualizarea este remedierea.

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

Al doilea: ce versiune folosiți?

Nu trebuie să mă credeți pe cuvânt. Pentru acest plugin există un anumit mod de verificare care vă va induce în eroare, așa că merită să citiți cu atenție această parte.

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

  1. În panoul WordPress, mergeți la Pluginuri, apoi Pluginuri instalate.
  2. Găsiți Drag and Drop Multiple File Upload - Contact Form 7, intrarea al cărei folder este drag-and-drop-multiple-file-upload-contact-form-7, și notați versiunea afișată sub numele său.

Din manifestul public (fără autentificare): deschideți în browser domeniuldvs.ro/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/readme.txt. Linia Stable tag: din apropierea începutului este versiunea pe care o raportează instalarea dumneavoastră, și este una dintre sursele publice pe care le-am citit.

Din sursa paginii dumneavoastră (fără autentificare): vizualizați sursa unei pagini de pe site-ul dumneavoastră și căutați una dintre resursele front-end ale pluginului la exact aceste căi:

/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/assets/css/dnd-upload-cf7.css?ver=...
/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/assets/js/codedropz-uploader-min.js?ver=...

Numărul ?ver= atașat acestor fișiere aflate sub acest folder este chiar versiunea pluginului. Pentru acest plugin, acesta corespunde exact versiunii publicate, motiv pentru care îl consider o citire de încredere.

Capcana de evitat aici. Pluginul separat al autorului pentru WooCommerce include un fișier cu același nume, codedropz-uploader-min.js, sub propriul său folder (drag-and-drop-multiple-file-upload-for-woocommerce), cu un număr de versiune fără legătură. Dacă citiți o versiune din sursa paginii dumneavoastră, asigurați-vă că folderul din cale este drag-and-drop-multiple-file-upload-contact-form-7 și nu cel pentru WooCommerce; altfel veți citi de fapt versiunea unui produs cu totul diferit.

Aplicați apoi această regulă, ținând cont că versiunile se compară numeric, nu alfabetic:

  • 1.3.9.3 până la 1.3.9.8: potențial afectată, condiționat de întrebarea privind câmpul de încărcare de mai sus. Actualizați acum.
  • 1.3.9.9 sau mai nouă: deja remediată, în ceea ce privește această problemă. Alegerea celei mai noi versiuni disponibile este cea mai bună variantă.
  • Mai veche decât 1.3.9.3: neafectată de această problemă. Vulnerabilitatea specifică descrisă mai sus a fost introdusă la 1.3.9.3. Totuși, o versiune atât de veche este mult în urmă la toate celelalte capitole, iar actualizarea merită făcută din motive generale.

Dacă nu reușiți să obțineți o versiune lizibilă din verificările de mai sus, nu este neobișnuit: pluginurile de cache sau de optimizare elimină în mod obișnuit valoarea ?ver=, iar resursele apar doar acolo unde se încarcă pluginul. Ecranul de administrare de la pasul unu are întotdeauna răspunsul.

Cum se actualizează

Cea mai sigură cale este să actualizați chiar din WordPress și să faceți î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 puteți folosi un plugin WordPress de backup.
  2. În zona de administrare WordPress, mergeți la Panou, apoi Actualizări, sau la Pluginuri, apoi Pluginuri instalate. Dacă este listată o actualizare pentru acest plugin, instalați-o de aici.
  3. Dacă preferați linia de comandă, WP-CLI face același lucru: wp plugin update drag-and-drop-multiple-file-upload-contact-form-7 (comanda folosește numele folderului).
  4. Dacă nu apare nicio actualizare, puteți obține ultima versiune direct de pe pagina pluginului din directorul WordPress.org, Drag and Drop Multiple File Upload for Contact Form 7, și puteți actualiza prin Pluginuri, apoi Adaugă plugin nou, apoi Încarcă plugin.
  5. După actualizare, confirmați noul număr de versiune (1.3.9.9 sau mai nouă) folosind pașii de mai sus și verificați că formularele și încărcările de fișiere ale dumneavoastră funcționează în continuare normal.

Cât timp sunteți acolo, merită să confirmați că nucleul WordPress, Contact Form 7 și celelalte pluginuri ale dumneavoastră sunt la zi, întrucât același principiu se aplică tuturor.

După actualizare

Actualizarea la 1.3.9.9 sau mai nouă închide problema, și pentru majoritatea site-urilor aceasta este întreaga sarcină. 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 nici nu am căutat.

Merită luat în considerare un pas ulterior, condiționat de aceeași întrebare privind câmpul de încărcare. Dacă site-ul dumneavoastră avea un formular cu un câmp de încărcare care „acceptă orice tip de fișier” în timp ce rula o versiune afectată, atunci era cel puțin teoretic posibil ca un fișier să fi fost plasat pe serverul dumneavoastră. Actualizarea închide breșa, dar nu elimină nimic ce ar fi putut fi deja salvat, așa că în acest caz câteva măsuri de precauție obișnuite sunt înțelepte:

  • Verificați directorul de încărcări (de obicei sub wp-content/uploads/) pentru fișiere pe care nu le recunoașteți, în special orice fișier care nu este genul de document sau imagine pe care formularele dumneavoastră sunt menite să îl primească.
  • Verificați conturile de administrator, autentificările recente și orice sesiune activă pentru orice nu puteți explica.
  • Resetați parolele conturilor dumneavoastră de administrator. Regenerarea cheilor secrete și a „salts”-urilor WordPress din wp-config.php este un pas suplimentar înțelept (valorile noi sunt la un clic distanță în generatorul oficial de chei, iar înlocuirea lor deconectează o dată toți utilizatorii).

Dacă găsiți ceva care vă îngrijorează, tratarea situației ca orice alt caz suspectat de acces neautorizat este răspunsul corect. Dacă niciunul dintre formularele dumneavoastră nu avea un câmp de încărcare care „acceptă orice tip de fișier”, actualizarea singură este suficientă.

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

Pentru deplină transparență privind verificarea din spatele e-mailului meu: am citit doar fișiere pe care site-ul dumneavoastră le servește deja oricărui vizitator, mai exact fișierul public readme.txt al pluginului, pagina dumneavoastră de start și adresele resurselor scrise în acea pagină. Nu am accesat zona de administrare WordPress, baza de date sau vreo parte privată a site-ului.

În mod special, nu am trimis niciodată vreunul dintre formularele dumneavoastră, nu am încărcat niciodată un fișier și nu am atins niciodată gestionarul de încărcări al pluginului. Nimic nu a fost trimis, testat sau exploatat. Acest lucru contează aici mai mult decât pe majoritatea acestor pagini, pentru că încărcarea unui fișier este exact acțiunea de care ține această problemă, așa că „nu m-am atins de ea” este toată diferența dintre o dezvăluire și o intruziune.

De asemenea, nu public în mod deliberat detaliile care l-ar ajuta pe cineva să acționeze pe baza acestei probleme. 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 din intervalul afectat. Nu este o afirmație că site-ul dumneavoastră era exploatabil în momentul verificării. Pentru că problema depinde de o setare a formularului pe care nu o pot vedea, un site din acel interval poate să nu fie deloc expus, iar un site din acel interval poate fi, separat, protejat prin alte mijloace, cum ar fi un firewall de aplicații web.

Nu am webmaster / m-am blocat

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

Dacă întrețineți singur site-ul și vă blocați, vă îndrum cu plăcere, gratuit. Scrieți-mi folosind datele de contact de mai jos.

Contact

Evan Harris, cercetător în securitate

Iau legătura pe astfel de subiecte exclusiv pentru a ajuta operatorii să își securizeze site-urile. Dacă preferați să nu mai fiți contactat, spuneți-mi și voi respecta acest lucru.

Referințe

Anunțuri oficiale și urmărire

Producător / plugin