Notificare de securitate Forminator Forms
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 Forminator Forms (pluginul WordPress de WPMU DEV, care se află în fișierele dumneavoastră la /wp-content/plugins/forminator/) care se încadrează în intervalul afectat de o problemă de securitate cunoscută. Această pagină explică care este problema, cum să stabiliți dacă se aplică deloc site-ului dumneavoastră, cum să citiți versiunea dumneavoastră fără a fi păcăliți și cum să actualizați.
Înainte de orice altceva, cel mai important aspect al acestei notificări: 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 ale căror formulare includ un câmp de încărcare fișiere, iar eu nu pot vedea cum sunt construite formularele dumneavoastră din exterior:
- Problema afectează doar un formular Forminator care conține un câmp de încărcare fișiere. Dacă niciunul dintre formularele dumneavoastră nu permite vizitatorilor să încarce fișiere, aceasta nu vă afectează, chiar și pe o versiune afectată.
- Rețineți că contează prezența unui câmp de încărcare, nu modul în care este configurat. Restricționarea unui câmp la tipuri specifice (de exemplu, imagini sau PDF-uri) nu rezolvă această problemă, deoarece defectul ocolește acea restricție. Ceea ce vă scoate din intervalul de risc este să nu aveți niciun formular cu un câmp de încărcare fișiere.
Pot citi versiunea pluginului dumneavoastră dintr-un fișier public, dar nu pot citi formularele dumneavoastră, astfel încât această notificare este o avertizare preventivă, nu o constatare confirmată privind site-ul dumneavoastră.
Problema este CVE-2026-15748, un defect de încărcare fișiere neautentificat în gestionarea formularelor pluginului. Afectează versiunile 1.18.1 până la 1.56.1 și este remediat în 1.56.2, lansată pe 30 iulie 2026. Dacă rulați o versiune afectată, actualizați Forminator Forms la 1.56.2 sau o versiune ulterioară (versiunea curentă la momentul scrierii acestui text este în linia 1.57.x).
Un cuvânt privind urgența, deoarece aceasta este o notificare condiționată. Dacă niciunul dintre formularele dumneavoastră nu are un câmp de încărcare fișiere, actualizarea este o întreținere obișnuită a pluginului. Dacă unul dintre ele are, vă rugăm să tratați actualizarea ca pe o prioritate: în acea configurație, defectul ar putea permite unui vizitator fără niciun cont să salveze un fișier la alegerea sa pe serverul dumneavoastră, un fișier pe care serverul l-ar putea executa, ceea ce poate duce la controlul deplin al site-ului.
Aceasta este o problemă a pluginului, nu a nucleului WordPress. Un WordPress complet actualizat nu vă protejează dacă pluginul Forminator î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ă trimit vreunul dintre formularele dumneavoastră sau să încarc ceva în el.
Tot ce am făcut a fost să mă uit la fișierele vizibile public 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. În mod specific, nu am trimis niciun formular, nu am încărcat un fișier și nu m-am apropiat de gestionarul de încărcare al pluginului. 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ă
Forminator vă permite să construiți formulare de contact, chestionare, sondaje și formulare de plată, iar unele dintre aceste formulare pot oferi vizitatorilor un câmp de încărcare fișiere, astfel încât să poată atașa un document sau o imagine. Pentru a menține acest lucru în siguranță, pluginul ar trebui să controleze ce fișiere acceptă și unde le stochează.
În versiunile afectate, aceste controale puteau fi ocolite. O trimitere de formular elaborată putea strecura o valoare de câmp falsificată prin partea pluginului care salvează o înregistrare, și de acolo în rutina de salvare a fișierelor, a cărei listă de tipuri de fișiere interzise putea fi ocolită cu o cerere special formatată. Rezultatul este că un fișier pe care pluginul ar fi trebuit să-l refuze putea fi scris în directorul dumneavoastră de încărcări. Unde serverul tratează apoi acel fișier ca pe ceva ce poate executa, un fișier al unui străin rulează pe site-ul dumneavoastră.
Două lucruri rezultă din acest lucru, și ele trag în direcții opuse. Primul este că acest lucru contează doar acolo unde un formular are de fapt un câmp de încărcare fișiere; un site ale cărui formulare nu colectează încărcări nu este accesibil prin această problemă. Al doilea este că acolo unde un astfel de câmp există, nu este necesar niciun cont, nicio parolă și nicio cooperare din partea nimănui: formularul este deschis publicului prin proiectare. Și iată partea cea mai probabilă să fie interpretată greșit: restricționarea acelui câmp la „doar imagini” sau „doar PDF-uri” nu vă salvează, deoarece defectul ocolește verificarea tipului câmpului. Întrebarea este pur și simplu dacă există un câmp de încărcare fișiere pe vreunul dintre formularele dumneavoastră.
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ă le reproducă, și aș ruga să nu încercați acest lucru pe propriul site sau pe al cuiva. Verificarea formularelor și a versiunii dumneavoastră, 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ă se încadrează în intervalul afectat. Nu am testat dacă site-ul dumneavoastră particular este exploatabil, și nu pot vedea cum sunt construite formularele dumneavoastră. Tot ce am observat este versiunea.
Sunt afectat?
Două întrebări decid acest lucru, în această ordine.
Primul: are vreun formular un câmp de încărcare fișiere?
Aceasta este întrebarea decisivă, și doar dumneavoastră puteți răspunde la ea. Verificarea propriilor formulare este în întregime sigură și este întregul scop al acestei pagini.
- Conectați-vă la tabloul de bord WordPress și deschideți Forminator în bara laterală, apoi Formulare.
- Deschideți fiecare formular și căutați un câmp Încărcare (tipul de câmp de încărcare fișiere din Forminator).
- Dacă niciunul dintre formularele dumneavoastră nu are un câmp de încărcare, această problemă nu vă afectează site-ul, chiar și pe o versiune afectată, deși actualizarea merită făcută ca întreținere obișnuită.
- Dacă oricare formular are un câmp de încărcare, problema se aplică dumneavoastră și ar trebui să actualizați cât mai curând. Restricționarea câmpului la tipurile de fișiere de care aveți nevoie este o bună practică, dar nu este o remediere pentru această problemă: actualizarea este remedierea.
Vă rugăm să nu încercați să reproduceți problema pe propriul site sau pe al cuiva; nu este nevoie să faceți acest lucru pentru a răspunde la întrebarea de mai sus.
Al doilea: ce versiune rulați?
Nu trebuie să mă credeți pe cuvânt. Pentru acest plugin există câteva moduri de verificare care vă pot păcăli, astfel încât merită să citiți această parte cu atenție.
Din zona de administrare WordPress (sursa de referință):
- În tabloul de bord WordPress, mergeți la Pluginuri apoi Pluginuri instalate.
- Găsiți Forminator Forms, intrarea al cărei folder este
forminator, și notați versiunea afișată sub numele său.
Din sursa paginii dumneavoastră (nu este necesară conectarea): vizualizați sursa unei pagini de pe site-ul dumneavoastră care afișează un formular Forminator și căutați una dintre resursele front-end ale pluginului la exact aceste căi:
/wp-content/plugins/forminator/build/front/front.multi.min.js?ver=...
/wp-content/plugins/forminator/assets/forminator-ui/js/forminator-form.min.js?ver=...
/wp-content/plugins/forminator/assets/forminator-ui/css/forminator-icons.min.css?ver=...
Numărul ?ver= atașat acelor fișiere din folderul forminator este versiunea propriu-zisă a pluginului. Pentru acest plugin, acesta urmărește lansarea, de aceea îl consider o citire de încredere. Rețineți că resursele apar doar pe o pagină care redă de fapt un formular Forminator, astfel încât verificați o pagină care are unul (o pagină de start goală fără niciun formular pe ea adesea nu afișează nimic).
Două capcane de evitat aici. Ambele fac ca o citire naivă să raporteze o versiune care nu are nicio legătură cu Forminator:
- Biblioteca încorporată de numere de telefon. Forminator livrează o copie a unei biblioteci terțe numită intlTelInput, care are propria sa versiune,
4.0.3. În funcție de versiunea dumneavoastră, aceasta se află fie în fișierulassets/css/intlTelInput.min.css, fie înassets/js/library/intlTelInput.min.js, ambele în interiorul folderului Forminator. Dacă citiți un?ver=4.0.3de pe unul dintre acestea, aceea este versiunea bibliotecii, nu cea a Forminator. Forminator nu a avut niciodată o lansare 4.x. Citiți doar fișierele listate mai sus și tratați orice versiune care nu începe cu1.ca „nu este versiunea Forminator”. - Foaia de stil per formular din folderul dumneavoastră de încărcări. Forminator scrie o foaie de stil mică pentru fiecare formular publicat la o cale precum
/wp-content/uploads/forminator/<something>/style-<number>.css?ver=<a long 10-digit number>. Acel număr lung este un timestamp, nu o versiune. Se află subwp-content/uploads/, nu sub folderul pluginului, astfel încât ignorați-l complet.
O altă notă specifică acestui plugin: linia „Stable tag” din readme.txt încorporat nu este de încredere aici, deoarece poate întârzia lansarea reală (atât build-ul 1.56.1, cât și cel 1.56.2 raportează 1.56.0), astfel încât, spre deosebire de unele pluginuri, acel fișier nu vă va spune care dintre cele două aveți. Ecranul de administrare și ?ver=-ul resurselor de mai sus sunt citirile de încredere.
Apoi aplicați această regulă, reținând că versiunile se compară numeric, nu alfabetic:
- 1.18.1 până la 1.56.1: potențial afectat, supus întrebării câmpului de încărcare de mai sus. Actualizați acum.
- 1.56.2 sau mai nou: deja remediat în ceea ce privește această problemă. Luarea celei mai recente versiuni disponibile (linia 1.57.x la momentul scrierii acestui text) este cea mai bună mișcare.
- Mai vechi de 1.18.1: neafectat de această problemă. Slăbiciunea specifică descrisă mai sus a fost introdusă la 1.18.1. Totuși, o lansare atât de veche este mult în urmă în ceea ce privește totul, iar actualizarea merită făcută din motive generale.
Dacă nu puteți obține o versiune lizibilă din verificările de mai sus, acest lucru nu este neobișnuit: pluginurile de cache sau optimizare elimină în mod obișnuit valoarea ?ver=, iar resursele apar doar acolo unde un formular este redat. Ecranul de administrare din prima verificare are întotdeauna răspunsul.
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ă:
- 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.
- Î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 Forminator, instalați-o de aici.
- Dacă preferați linia de comandă, WP-CLI face același lucru:
wp plugin update forminator(comanda utilizează numele folderului). - Dacă nu apare nicio actualizare, puteți obține cea mai recentă versiune direct de pe pagina pluginului din directorul WordPress.org, Forminator Forms, și puteți actualiza accesând Pluginuri apoi Adaugă plugin nou și apoi Încarcă plugin.
- După actualizare, confirmați numărul noii versiuni (1.56.2 sau o versiune ulterioară) folosind pașii de mai sus și verificați dacă formularele dumneavoastră și orice încărcări de fișiere pe acestea funcționează î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 1.56.2 sau o versiune ulterioară rezolvă 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.
Un pas de verificare suplimentară merită luat în considerare și este condiționat de aceeași întrebare privind câmpul de încărcare a fișierelor. Dacă site-ul dumneavoastră a avut un formular cu un câmp de încărcare a fișierelor în timp ce rula o versiune afectată, atunci a fost cel puțin teoretic posibil ca un fișier să fi fost plasat pe serverul dumneavoastră. Actualizarea închide vulnerabilitatea, dar nu elimină nimic care ar fi putut fi deja salvat, așa că în acel caz sunt recomandabile câteva măsuri de precauție obișnuite:
- Căutați în directorul de încărcări (de obicei sub
wp-content/uploads/, inclusiv subdirectorulwp-content/uploads/forminator/) fișiere pe care nu le recunoașteți, în special orice fișiere care nu sunt de tipul documentelor sau imaginilor pe care formularele dumneavoastră sunt menite să le primească. - Revizuiți conturile de administrator, autentificările recente și orice sesiuni active pentru orice element pe care nu îl puteți explica.
- Resetați parolele conturilor de administrator. Regenerarea cheilor secrete și a sărurilor WordPress din
wp-config.phpeste un pas complementar recomandat (noile valori se obțin cu un singur clic de la generatorul oficial de chei secrete, iar înlocuirea lor deconectează toți utilizatorii o dată).
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 a avut un câmp de încărcare a fișierelor, actualizarea singură este suficientă.
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: am citit doar fișiere pe care site-ul dumneavoastră le servește deja fiecărui vizitator, anume readme.txt public al pluginului, pagina dumneavoastră de start și adresele activelor scrise în acea pagină. Nu am accesat zona de administrare WordPress, baza de date sau nicio parte privată a site-ului.
În mod special, nu am trimis niciodată niciunul dintre formularele dumneavoastră, nu am încărcat niciodată un fișier și nu am atins niciodată gestionarul de încărcare al pluginului. Nu s-a trimis, testat sau exploatat nimic. Acest lucru este mai important aici decât pe majoritatea acestor pagini, deoarece încărcarea unui fișier este acțiunea exactă despre care se ocupă această problemă, așa că „nu m-am atins de ea” face toată diferența dintre o divulgare și o intruziune.
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 din intervalul afectat. Nu este o afirmație că site-ul dumneavoastră era exploatabil la momentul verificării mele. Deoarece problema depinde de faptul dacă vreunul dintre formularele dumneavoastră are un câmp de încărcare a fișierelor, pe care nu îl pot vedea, un site din acel interval s-ar putea să nu fie expus deloc, 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.
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 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
- Email: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
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