Jeśli otrzymali Państwo ode mnie e-mail kierujący na tę stronę, to dlatego, że Państwa witryna wydaje się uruchamiać wersję wtyczki Forminator Forms (wtyczki WordPressa autorstwa WPMU DEV, znajdującej się w Państwa plikach w katalogu /wp-content/plugins/forminator/), która mieści się w zakresie objętym znanym problemem bezpieczeństwa. Ta strona wyjaśnia, na czym polega problem, jak ustalić, czy w ogóle dotyczy on Państwa witryny, jak odczytać swoją wersję, nie dając się wprowadzić w błąd, oraz jak dokonać aktualizacji.

Zanim przejdę dalej, najważniejszy fakt dotyczący tego powiadomienia: sama wersja z zakresu objętego problemem nie oznacza, że Państwa witryna jest narażona. Poniższy problem ma znaczenie tylko na witrynach, których formularze zawierają pole przesyłania plików, a ja nie widzę z zewnątrz, jak zbudowane są Państwa formularze:

  • Problem dotyczy wyłącznie formularza Forminator, który zawiera pole przesyłania plików. Jeśli żaden z Państwa formularzy nie umożliwia odwiedzającym przesyłania plików, nie dotyczy to Państwa, nawet przy wersji objętej problemem.
  • Należy pamiętać, że liczy się obecność pola przesyłania plików, a nie sposób jego konfiguracji. Ograniczenie pola do określonych typów (na przykład obrazów lub plików PDF) nie zamyka tej luki, ponieważ luka omija to ograniczenie. Jedyną rzeczą, która wyklucza Państwa z zakresu ryzyka, jest brak jakiegokolwiek formularza z polem przesyłania plików.

Mogę odczytać wersję Państwa wtyczki z publicznego pliku, ale nie mogę odczytać Państwa formularzy, więc to powiadomienie jest zapobiegawczym ostrzeżeniem, a nie potwierdzonym ustaleniem dotyczącym Państwa witryny.

Problem to CVE-2026-15748, nieuwierzytelniona luka w przesyłaniu plików w obsłudze formularzy przez wtyczkę. Dotyczy wersji od 1.18.1 do 1.56.1 i został naprawiony w wersji 1.56.2, wydanej 30 lipca 2026 roku. Jeśli korzystają Państwo z wersji objętej problemem, proszę zaktualizować Forminator Forms do wersji 1.56.2 lub nowszej (bieżąca wersja w momencie pisania tego tekstu należy do linii 1.57.x).

Słowo o pilności, ponieważ to powiadomienie jest warunkowe. Jeśli żaden z Państwa formularzy nie zawiera pola przesyłania plików, aktualizacja jest zwykłą konserwacją wtyczki. Jeśli któryś z nich takie pole zawiera, proszę potraktować aktualizację jako priorytet: w takiej konfiguracji luka mogła pozwolić odwiedzającemu bez żadnego konta na zapisanie na Państwa serwerze dowolnie wybranego przez siebie pliku, takiego rodzaju, jaki serwer mógłby następnie uruchomić, co może prowadzić do pełnego przejęcia kontroli nad witryną.

Jest to luka we wtyczce, a nie w rdzeniu WordPressa. W pełni zaktualizowany WordPress nie chroni Państwa, jeśli sama wtyczka Forminator jest w wersji objętej problemem.

Czy ta wiadomość jest wiarygodna?

Tak. Jest to powiadomienie o odpowiedzialnym ujawnieniu luki, wystosowane w dobrej wierze przez niezależnego badacza bezpieczeństwa. Nie proszę o pieniądze, hasła ani dostęp do Państwa witryny, i nie próbowałem się do niej włamać, przesłać żadnego z Państwa formularzy ani niczego do niej przesłać.

Jedynie sprawdziłem publicznie widoczne pliki, które Państwa witryna udostępnia każdemu odwiedzającemu (w ten sam sposób, w jaki Państwa strona główna jest publiczna), i odnotowałem numer wersji publikowany przez wtyczkę. Celowo nie przesłałem żadnego formularza, nie przesłałem pliku i nie zbliżyłem się do obsługi przesyłania plików wtyczki. Żadna część tego sprawdzenia nie dotyka Państwa danych, panelu administracyjnego ani żadnej prywatnej części Państwa witryny (więcej szczegółów w sekcji Co zrobiłem, a czego nie poniżej).

Jeśli chcą Państwo zweryfikować, kim jestem, dane kontaktowe znajdują się na dole tej strony oraz na stronie O mnie.

Dlaczego to ważne

Forminator pozwala budować formularze kontaktowe, quizy, ankiety i formularze płatnicze, a niektóre z tych formularzy mogą oferować odwiedzającym pole przesyłania plików, aby mogli dołączyć dokument lub obraz. Aby zapewnić bezpieczeństwo, wtyczka powinna kontrolować, jakie pliki akceptuje i gdzie je przechowuje.

W wersjach objętych problemem te zabezpieczenia dało się ominąć. Sfałszowane przesłanie formularza mogło przedostać się przez część wtyczki odpowiedzialną za zapisywanie wpisu, a następnie do procedury zapisywania pliku, gdzie listę zabronionych typów plików dało się ominąć za pomocą specjalnie przygotowanego żądania. Efektem jest to, że plik, który wtyczka powinna była odrzucić, mógł zostać zapisany w katalogu przesyłanych plików. Tam, gdzie serwer traktuje ten plik jako coś, co może uruchomić, na Państwa witrynie uruchamia się plik obcej osoby.

Z tego wynikają dwie rzeczy, które ciągną w przeciwnych kierunkach. Po pierwsze, problem ma znaczenie tylko tam, gdzie formularz faktycznie zawiera pole przesyłania plików; witryna, której formularze nie zbierają żadnych plików, nie jest osiągalna przez ten problem. Po drugie, tam, gdzie takie pole istnieje, nie jest wymagane żadne konto, żadne hasło ani żadna współpraca z kimkolwiek: formularz jest z założenia otwarty publicznie. I oto część, którą najłatwiej źle zrozumieć: ograniczenie tego pola do „tylko obrazy” lub „tylko PDF” nie chroni Państwa, ponieważ luka omija własną kontrolę typu pola. Pytanie sprowadza się po prostu do tego, czy pole przesyłania plików istnieje na którymkolwiek z Państwa formularzy.

Opisuję to na poziomie, jakiego potrzebuje właściciel witryny, by podjąć działanie, i nie dalej. Nie publikuję szczegółów, które pozwoliłyby komuś to odtworzyć, i prosiłbym, aby nie próbowali Państwo tego robić na własnej witrynie ani na witrynie kogokolwiek innego. Sprawdzenie Państwa formularzy i wersji, jak opisano poniżej, mówi Państwu wszystko, co potrzebne, by zdecydować, co robić.

Jeśli mój e-mail powołał się na ten problem, oznacza to, że wersja zgłaszana przez Państwa witrynę mieści się w zakresie objętym problemem. Nie sprawdzałem, czy akurat Państwa witrynę da się wykorzystać, i nie widzę, jak zbudowane są Państwa formularze. Zaobserwowałem wyłącznie wersję.

Czy mnie to dotyczy?

O tym decydują dwa pytania, w tej kolejności.

Po pierwsze: czy którykolwiek formularz zawiera pole przesyłania plików?

To jest pytanie decydujące, i tylko Państwo mogą na nie odpowiedzieć. Sprawdzenie własnych formularzy jest całkowicie bezpieczne i to właśnie jest sens tej strony.

  1. Proszę zalogować się do panelu administracyjnego WordPressa i otworzyć w menu bocznym Forminator, a następnie Formularze (Forms).
  2. Otworzyć każdy formularz i poszukać pola Upload (typ pola przesyłania plików w Forminatorze).
  3. Jeśli żaden z Państwa formularzy nie zawiera pola przesyłania plików, problem nie dotyczy Państwa witryny, nawet przy wersji objętej problemem, choć aktualizacja nadal jest warta wykonania jako zwykła konserwacja.
  4. Jeśli jakikolwiek formularz zawiera pole przesyłania plików, problem Państwa dotyczy i powinni Państwo zaktualizować wtyczkę niezwłocznie. Ograniczenie pola do typów plików, których faktycznie Państwo potrzebują, jest dobrą praktyką, ale nie jest to naprawienie tego problemu: aktualizacja jest rozwiązaniem.

Proszę nie próbować odtwarzać problemu na własnej ani cudzej witrynie; nie jest to potrzebne, by odpowiedzieć na powyższe pytanie.

Po drugie: której wersji Państwo używają?

Nie muszą Państwo wierzyć mi na słowo. W przypadku tej wtyczki istnieje kilka sposobów sprawdzenia wersji, które mogą Państwa wprowadzić w błąd, więc warto przeczytać tę część uważnie.

W panelu administracyjnym WordPressa (źródło rozstrzygające):

  1. W panelu administracyjnym WordPressa proszę przejść do Wtyczki, a następnie Zainstalowane wtyczki.
  2. Odnaleźć Forminator Forms, pozycję, której katalog to forminator, i odczytać wersję widoczną pod jej nazwą.

Ze źródła strony (bez logowania): proszę wyświetlić źródło strony na Państwa witrynie, która wyświetla formularz Forminator, i odszukać jeden z zasobów front-endowych wtyczki pod dokładnie tymi ścieżkami:

/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=...

Numer ?ver= dołączony do tych plików w katalogu forminator to własna wersja wtyczki. W przypadku tej wtyczki numer ten śledzi wydanie, dlatego traktuję go jako wiarygodne źródło. Należy pamiętać, że te zasoby pojawiają się tylko na stronie, która faktycznie renderuje formularz Forminator, więc warto sprawdzić stronę, która taki formularz zawiera (sama strona główna bez formularza często niczego nie pokazuje).

Dwie pułapki, których należy tu unikać. Obie sprawiają, że naiwny odczyt wskazuje wersję, która nie ma nic wspólnego z Forminatorem:

  • Dołączona biblioteka numerów telefonicznych. Forminator zawiera kopię biblioteki innej firmy o nazwie intlTelInput, która ma własny numer wersji, 4.0.3. W zależności od wersji wtyczki znajduje się ona albo w pliku assets/css/intlTelInput.min.css, albo w assets/js/library/intlTelInput.min.js, oba wewnątrz katalogu Forminatora. Jeśli odczytają Państwo ?ver=4.0.3 z jednego z tych plików, to wersja biblioteki, a nie Forminatora. Forminator nigdy nie miał wydania 4.x. Proszę czytać tylko pliki wymienione powyżej i traktować każdą wersję, która nie zaczyna się od 1., jako „nie jest to wersja Forminatora”.
  • Arkusz stylów dla każdego formularza w katalogu przesyłanych plików. Forminator zapisuje mały arkusz stylów dla każdego opublikowanego formularza pod ścieżką taką jak /wp-content/uploads/forminator/<something>/style-<number>.css?ver=<a long 10-digit number>. Ten długi numer to znacznik czasu, a nie wersja. Znajduje się on pod wp-content/uploads/, a nie w katalogu wtyczki, więc proszę go całkowicie zignorować.

Jeszcze jedna uwaga specyficzna dla tej wtyczki: jej wbudowany plik readme.txt z linią „Stable tag” (Stabilna wersja) nie jest w tym przypadku wiarygodny, ponieważ bywa opóźniony względem rzeczywistego wydania (zarówno kompilacja 1.56.1, jak i 1.56.2 raportują 1.56.0), więc w przeciwieństwie do niektórych wtyczek ten plik nie powie Państwu, którą z tych dwóch wersji Państwo mają. Ekran administracyjny oraz ?ver= zasobów powyżej to źródła, którym należy ufać.

Następnie proszę zastosować tę regułę, pamiętając, że wersje porównuje się numerycznie, a nie alfabetycznie:

  • Od 1.18.1 do 1.56.1: potencjalnie objęte problemem, zależnie od pytania o pole przesyłania plików powyżej. Proszę zaktualizować teraz.
  • 1.56.2 lub nowsza: już naprawiona, jeśli chodzi o ten problem. Najlepszym rozwiązaniem jest wybranie najnowszej dostępnej wersji (linia 1.57.x w momencie pisania tego tekstu).
  • Starsza niż 1.18.1: nieobjęta tym problemem. Opisana powyżej konkretna słabość została wprowadzona w wersji 1.18.1. Mimo to wersja tak stara jest mocno w tyle pod każdym innym względem, więc aktualizacja warta jest wykonania z ogólnych powodów.

Jeśli powyższe sposoby sprawdzania nie dają czytelnej wersji, nie ma w tym nic niezwykłego: wtyczki buforujące lub optymalizujące rutynowo usuwają wartość ?ver=, a zasoby pojawiają się tylko tam, gdzie renderowany jest formularz. Ekran administracyjny z pierwszego sprawdzenia zawsze da odpowiedź.

Jak zaktualizować

Wtyczka jest darmowa, nadal publikowana i aktywnie utrzymywana, więc poprawka to zwykła aktualizacja. Najbezpieczniejsza droga to aktualizacja przez sam WordPress, po uprzednim wykonaniu kopii zapasowej:

  1. Proszę wykonać kopię zapasową swojej witryny (plików i bazy danych) przed wprowadzeniem jakichkolwiek zmian. Większość dostawców hostingu oferuje kopie zapasowe jednym kliknięciem, można też skorzystać z wtyczki do kopii zapasowych WordPressa.
  2. W panelu administracyjnym WordPressa proszę przejść do Kokpit, a następnie Aktualizacje, albo do Wtyczki, a następnie Zainstalowane wtyczki. Jeśli na liście pojawi się aktualizacja tej wtyczki, proszę zainstalować ją stąd.
  3. Jeśli wolą Państwo wiersz poleceń, WP-CLI robi to samo: wp plugin update forminator (polecenie używa nazwy katalogu).
  4. Jeśli nie pojawia się żadna aktualizacja, mogą Państwo pobrać najnowszą wersję bezpośrednio ze strony wtyczki w katalogu WordPress.org, Forminator Forms, i zaktualizować przez Wtyczki, następnie Dodaj wtyczkę i Wyślij wtyczkę na serwer.
  5. Po aktualizacji proszę potwierdzić nowy numer wersji (1.56.2 lub nowszy), korzystając z powyższych kroków, i sprawdzić, czy Państwa formularze oraz wszelkie przesyłane na nich pliki nadal działają prawidłowo.

Przy tej okazji warto upewnić się, że rdzeń WordPressa oraz pozostałe Państwa wtyczki są aktualne, ponieważ ta sama zasada dotyczy ich wszystkich.

Po aktualizacji

Aktualizacja do wersji 1.56.2 lub nowszej zamyka ten problem i dla większości witryn to cały zakres zadania. Ta strona jest powiadomieniem zapobiegawczym, a nie raportem incydentu: nie mam wglądu w to, czy na Państwa witrynie coś się wydarzyło, i tego nie sprawdzałem.

Jedną rzecz warto rozważyć jako uzupełnienie, i jest ona warunkowa, zależna od tego samego pytania o pole przesyłania plików. Jeśli Państwa witryna miała formularz z polem przesyłania plików, działając na wersji objętej problemem, to przynajmniej teoretycznie było możliwe umieszczenie pliku na Państwa serwerze. Aktualizacja zamyka lukę, ale nie usuwa niczego, co mogło zostać już zapisane, więc w takim przypadku rozsądnych jest kilka rutynowych środków ostrożności:

  • Proszę przejrzeć katalog przesłanych plików (zwykle pod wp-content/uploads/, w tym poddrzewo wp-content/uploads/forminator/) pod kątem plików, których Państwo nie rozpoznają, zwłaszcza takich, które nie są rodzajem dokumentów lub obrazów, jakie mają odbierać Państwa formularze.
  • Proszę przejrzeć konta administratorów, ostatnie logowania i wszelkie aktywne sesje pod kątem czegokolwiek, czego nie potrafią Państwo wyjaśnić.
  • Proszę zresetować hasła na kontach administratorów. Rozsądnym krokiem uzupełniającym jest ponowne wygenerowanie kluczy i „soli” WordPressa w pliku wp-config.php (nowe wartości są o jedno kliknięcie w oficjalnym generatorze kluczy, a ich podmiana jednorazowo wylogowuje wszystkich użytkowników).

Jeśli znajdą Państwo coś, co Państwa niepokoi, właściwą reakcją jest potraktowanie tego tak samo, jak każdego innego podejrzenia nieuprawnionego dostępu. Jeśli żaden z Państwa formularzy nie miał pola przesyłania plików, sama aktualizacja wystarczy.

Co zrobiłem, a czego nie

Dla pełnej przejrzystości co do sprawdzenia stojącego za moim e-mailem: odczytałem wyłącznie pliki, które Państwa witryna i tak udostępnia każdemu odwiedzającemu, konkretnie publiczny plik readme.txt wtyczki, Państwa stronę główną oraz adresy zasobów zapisane na tej stronie. Nie uzyskałem dostępu do panelu administracyjnego WordPressa, do Państwa bazy danych ani do żadnej prywatnej części witryny.

W szczególności nigdy nie wysłałem żadnego z Państwa formularzy, nigdy nie przesłałem pliku i nigdy nie dotknąłem obsługi przesyłania plików wtyczki. Nic nie zostało wysłane, przetestowane ani wykorzystane. Ma to tu większe znaczenie niż na większości tych stron, ponieważ przesyłanie pliku jest dokładnie tą czynnością, której dotyczy ten problem, więc „nie dotknąłem jej” jest całą różnicą między ujawnieniem a włamaniem.

Celowo nie publikuję również szczegółów, które pomogłyby komuś wykorzystać ten problem. Powyższy opis zatrzymuje się na poziomie potrzebnym właścicielowi witryny, i nie podaję odnośników do żadnego kodu proof-of-concept.

To jest obserwacja oparta na wersji: Państwa witryna zgłasza wersję z zakresu objętego problemem. Nie jest to stwierdzenie, że Państwa witryna była podatna na atak w chwili, gdy ją sprawdzałem. Ponieważ problem zależy od tego, czy którykolwiek z Państwa formularzy ma pole przesyłania plików, czego nie widzę, witryna z tego zakresu może wcale nie być narażona, a witryna z tego zakresu może być osobno chroniona innymi środkami, takimi jak zapora aplikacji webowych (WAF).

Nie mam webmastera / utknąłem

Jeśli nie zajmują się Państwo witryną osobiście, proszę przekazać tę stronę osobie, która to robi (deweloperowi, agencji lub firmie hostingowej). Powyższe kroki rozpozna od razu.

Jeśli utrzymują Państwo witrynę samodzielnie i utkną, chętnie bezpłatnie wskażę właściwy kierunek. Proszę napisać, korzystając z danych kontaktowych poniżej.

Kontakt

Evan Harris, badacz bezpieczeństwa

Kontaktuję się w takich sprawach wyłącznie po to, by pomóc operatorom zabezpieczyć ich witryny. Jeśli wolą Państwo nie otrzymywać kolejnych wiadomości, proszę dać znać; uszanuję to.

Źródła

Oficjalne komunikaty i śledzenie

Producent / wtyczka