Luka w Bricksforge (CVE-2026-85097): jak sprawdzić, czy strona została przejęta, i co zrobić w 24 godziny
- Kogo dotyczy
- Stron z dodatkiem Bricksforge w wersji 3.1.8.9 lub starszej
- Co grozi
- Przejęcie strony bez logowania: obcy kod PHP, konta administratora, spam, kradzież danych
- Czas reakcji
- Aktualizacja od razu, przegląd śladów w ciągu doby
- Czy zrobisz to sam?
- Aktualizację i podstawowy przegląd tak. Czyszczenie po włamaniu lepiej zlecić
Szybka odpowiedź
Jeśli Twoja strona ma wtyczkę Bricksforge w wersji 3.1.8.9 lub starszej, zaktualizuj ją od razu (poprawka jest w 3.1.8.10, najlepiej instaluj najnowszą wersję), a jeśli nie możesz, dezaktywuj ją. Luka CVE-2026-85097 pozwala bez logowania wgrać i uruchomić na serwerze dowolny kod, a ataki trwają co najmniej od 7 października 2026. Po aktualizacji sprawdź, czy w wp-content/uploads nie ma plików PHP, czy nie pojawił się nowy administrator i czy w logach nie ma żądań do /wp-json/bricksforge/v1/form_submit.
Bricksforge to płatny dodatek do kreatora stron Bricks Builder. Dokłada mu m.in. formularze (moduł Pro Forms) i animacje, dlatego chętnie używają go agencje. W październiku 2026 okazało się, że jeden z jego mechanizmów pozwala obcej osobie wrzucić na serwer własny program i go uruchomić. Nie trzeba do tego żadnego hasła.
Poniżej wyjaśniam, co to znaczy dla Ciebie, jak sprawdzić, czy Cię to dotyczy, i co zrobić w ciągu pierwszej doby. Ta sama procedura zadziała przy każdej innej aktywnie wykorzystywanej luce we wtyczce.
Co się stało i dlaczego to poważne
Luka dostała numer CVE-2026-85097. CVE to po prostu numer w światowym rejestrze znanych luk, dzięki któremu wszyscy mówią o tym samym błędzie. Ocena zagrożenia w skali CVSS wynosi 10,0, czyli najwyżej, jak się da. Tak ocenia się luki, których można użyć zdalnie i bez logowania.
Według analizy firmy Patchstack, która opisała pierwsze wykryte ataki, problem tkwi w obsłudze plików wysyłanych przez formularze. Wtyczka sprawdza typ pliku przy pierwszym wgraniu, ale nie sprawdza go ponownie przy wysłaniu formularza. Atakujący wgrywa więc plik, który jednocześnie jest poprawnym obrazkiem GIF i programem w PHP (taki plik nazywa się poliglotą), a potem każe wtyczce zapisać go pod nazwą zakończoną na .php. Od tej chwili wystarczy otworzyć ten plik w przeglądarce, żeby serwer wykonał kod atakującego.
W praktyce oznacza to zdalne wykonanie kodu (RCE, z ang. remote code execution), czyli sytuację, w której ktoś z zewnątrz może robić na Twoim serwerze to samo, co sama strona: czytać bazę danych z zamówieniami, dopisywać kod do plików, zakładać konta. Zwykle pierwszym krokiem jest wgranie webshella, czyli ukrytego pliku, przez który włamywacz steruje stroną także po załataniu luki.
| Fakt | Stan na październik 2026 |
|---|---|
| Wersje podatne | 3.1.8.9 i wszystkie starsze |
| Pierwsza wersja z poprawką | 3.1.8.10 |
| Zalecana wersja | najnowsza dostępna (w połowie października była to 4.0.1) |
| Logowanie potrzebne do ataku | nie |
| Pierwsze wykryte ataki | 7 października 2026, 21:47 UTC (Patchstack) |
| Skala | żądania z co najmniej 63 adresów IP, w dużej części zautomatyzowane |
Źródła: analiza Patchstack i wpis w bazie Wordfence. Numer najnowszej wersji zmienia się z każdym wydaniem, więc przed aktualizacją sprawdź listę zmian u producenta.
Ataki są zautomatyzowane. Boty nie wybierają ofiar, tylko odpytują tysiące stron i sprawdzają, która odpowie. To, że Twoja strona jest mała i „nikogo nie interesuje”, niczego tu nie zmienia.
Czy to dotyczy Twojej strony
Jeśli stronę robiła agencja albo freelancer, możesz nawet nie wiedzieć, że masz Bricksforge. Sprawdzenie zajmuje minutę.
-
Otwórz listę wtyczek
Zaloguj się do panelu WordPressa i wejdź w Wtyczki (w wersji angielskiej: Plugins). Poszukaj pozycji „Bricksforge”. Pod opisem każdej wtyczki jest numer wersji.
-
Porównaj wersję
3.1.8.9 lub niższa oznacza wersję podatną. 3.1.8.10 lub wyższa oznacza, że luka jest załatana, ale nadal musisz sprawdzić, czy ktoś nie wszedł przed aktualizacją.
-
Bez dostępu do panelu sprawdź katalog
W menedżerze plików w panelu hostingu albo przez FTP zajrzyj do
wp-content/plugins/. Katalogbricksforgeoznacza, że wtyczka jest zainstalowana (aktywna lub nie). Przez SSH zrobisz to jednym poleceniem, które wypisze nazwę, stan i wersję wtyczki:wp plugin list --name=bricksforge --fields=name,status,version

Sama dezaktywacja zatrzymuje ten konkretny atak, bo WordPress nie ładuje kodu wyłączonej wtyczki. Pliki zostają jednak na serwerze, a o ich istnieniu łatwo zapomnieć. Jeśli Bricksforge nie jest Ci potrzebny, usuń go całkiem. Sprawdź też kopie strony (np. /test, /stara) i inne strony na tym samym koncie hostingowym.
Plan na pierwsze 24 godziny
Jeśli masz podatną wersję, działaj w tej kolejności. Pierwsze dwa kroki zajmują kilka minut i są najważniejsze.
-
Zrób kopię strony w obecnym stanie
Pobierz pliki i bazę danych, zanim cokolwiek zmienisz. Kopia pomoże ustalić, co się stało, i pozwoli wrócić, jeśli aktualizacja coś zepsuje. Większość hostingów pozwala zrobić kopię jednym przyciskiem w panelu. Przez SSH zrobisz to tak (pierwsze polecenie pakuje pliki, drugie zapisuje bazę do pliku). Te dwa polecenia uruchamiasz w katalogu domowym konta, nad
public_html; wszystkie kolejne w tym artykule uruchamiasz już w katalogu strony, czyli tam, gdzie leżywp-config.php:tar -czf przed-aktualizacja-$(date +%F).tar.gz public_html/ wp db export przed-aktualizacja-$(date +%F).sql --path=public_html -
Zaktualizuj Bricksforge albo go wyłącz
Bricksforge kupuje się u producenta, a nie w katalogu wordpress.org, więc aktualizacja zwykle wymaga aktywnego klucza licencyjnego wpisanego w ustawieniach wtyczki. Jeśli przycisk aktualizacji jest dostępny w Wtyczkach, użyj go. Jeśli licencja wygasła, a wykonawca nie odbiera telefonu, dezaktywuj wtyczkę. Część elementów strony (np. formularze) może przestać działać. To mniejsze zło niż otwarte drzwi.
# wyłącza wtyczkę bez usuwania jej plików i ustawień wp plugin deactivate bricksforge -
Zablokuj wykonywanie PHP w katalogu uploads
W tym ataku złośliwy plik ląduje w katalogu na przesłane pliki. Jeśli serwer nie wykonuje tam PHP, wgrany plik pozostaje martwy. Na serwerze Apache utwórz w
wp-content/uploadsplik.htaccessz poniższą treścią (możesz to zrobić w menedżerze plików hostingu). Reguła odmawia dostępu do plików z rozszerzeniami PHP, także pisanymi wielkimi literami:<FilesMatch "(?i)\.(php\d?|phtml|phar|pht)$"> Require all denied </FilesMatch>Na serwerze Nginx taka reguła trafia do konfiguracji serwera, więc poproś o nią hosting. Ta blokada to pas bezpieczeństwa, a nie zamiennik aktualizacji.
-
Poszukaj plików PHP w katalogu uploads
W
wp-content/uploadspowinny być zdjęcia, PDF-y i podobne pliki. Plik PHP to prawie zawsze ślad włamania. Najpierw zajrzyj do kataloguwp-content/uploads/bricksforge/tmp/, bo tam według Patchstack trafiają pliki z tego ataku. Patchstack widział też pliki o nazwachlogin_admin_….phpw katalogu z bieżącym miesiącem, np.wp-content/uploads/2026/10/. Potem przeszukaj cały katalog. Polecenie poniżej szuka plików z rozszerzeniem zaczynającym się od „ph” (łapie też.phtml,.php5i.PHP) i wypisuje ich daty:find wp-content/uploads -type f -iname "*.ph*" -printf "%TY-%Tm-%Td %TH:%TM %p\n"Tak wygląda wynik na naszej testowej instalacji, na której podłożyłem przykładowy plik:
2026-10-08 03:12 wp-content/uploads/bricksforge/tmp/f3a9c1.phpData tuż po pierwszych wykrytych atakach i losowa nazwa to typowy obraz. Plik zaczyna się od nagłówka obrazka GIF, a dopiero po nim jest kod PHP. Dlatego program
fileuznaje go za obrazek:$ head -c 60 wp-content/uploads/bricksforge/tmp/f3a9c1.php GIF89a<?php /* plik testowy */ ?> $ file wp-content/uploads/bricksforge/tmp/f3a9c1.php wp-content/uploads/bricksforge/tmp/f3a9c1.php: GIF image data, version 89a, 16188 x 26736Prawdziwy plik atakującego ma w tym miejscu działający kod, a nie komentarz. Kod PHP może się też ukrywać w plikach z rozszerzeniem obrazka. To polecenie wypisze każdy plik w uploads, który zawiera znacznik otwierający PHP:
grep -rlE "<\?php|<\?=" wp-content/uploadsBez terminala: otwórz menedżer plików w panelu hostingu, wejdź do
wp-content/uploadsi użyj wyszukiwarki plików, jeśli panel ją ma (szukaj „.php”). Wtyczka bezpieczeństwa ze skanerem plików też zgłosi pliki PHP w uploads. Nie usuwaj znalezisk od razu: zanotuj nazwę, datę i rozmiar, a plik pobierz do kopii jako dowód. -
Sprawdź listę administratorów
Po wejściu na serwer atakujący zwykle zakłada sobie konto administratora, żeby mieć drugie wejście. W panelu wejdź w Użytkownicy i kliknij filtr Administrator. Każde konto, którego nie znasz, jest podejrzane, szczególnie z nazwą udającą wsparcie techniczne i adresem e-mail spoza Twojej firmy.
# lista administratorów z datą założenia konta wp user list --role=administrator --fields=ID,user_login,user_email,user_registered

-
Zajrzyj do wtyczek Must-Use
Wtyczki Must-Use to pliki w katalogu
wp-content/mu-plugins, które WordPress uruchamia zawsze, bez aktywowania. Nie widać ich na zwykłej liście wtyczek i nie da się ich wyłączyć z panelu, dlatego włamywacze chętnie zostawiają w nich tylne furtki. W Wtyczkach kliknij zakładkę Wymuszane (w wersji angielskiej Must-Use; pojawia się tylko wtedy, gdy taki plik istnieje). Hostingi i wtyczki cache też tu coś zapisują, więc sprawdź pochodzenie każdego pliku.wp plugin list --status=must-use ls -la wp-content/mu-plugins

-
Przejrzyj logi serwera
Logi dostępu (access log) to zapis każdego żądania do strony. Pobierzesz je z panelu hostingu albo poprosisz o nie obsługę. Szukaj odwołań do adresów używanych w ataku, od 7 października 2026. Polecenie poniżej przeszukuje bieżący log i spakowane starsze logi:
zgrep -E "bricksforge/v1/form_submit|bricksforge_form_submit|bricksforge_regenerate_nonce" access.log*Samo trafienie oznacza próbę ataku, nie udany atak. Ważniejsze jest, czy później ktoś otwierał pliki PHP w katalogu uploads, bo to oznacza uruchamianie wgranego kodu:
zgrep -iE "/wp-content/uploads/.*\.ph(p[0-9]?|tml|ar|t)" access.log*Uwaga na jedną pułapkę: log zapisuje adres, ale nie treść formularza. Żądanie do
admin-ajax.phpzobaczysz w logu, ale nazwę akcji tylko wtedy, gdy była w adresie. Brak trafień nie jest więc dowodem, że ataku nie było. -
Sprawdź pliki zmienione od 7 października
Włamywacz rzadko poprzestaje na jednym pliku. To polecenie wypisze pliki PHP zmienione od dnia pierwszych ataków, posortowane po dacie:
find . -type f -name "*.php" -newermt "2026-10-07" -printf "%TY-%Tm-%Td %TH:%TM %p\n" | sortPliki z Twoich aktualizacji też tu będą. Szukaj tych, których nie potrafisz wyjaśnić: zmian w
wp-config.php,index.php,functions.phpmotywu, nowych katalogów wwp-content/plugins. Pliki rdzenia porównasz z oryginałem poleceniemwp core verify-checksums. Wtyczek płatnych, takich jak Bricksforge, w ten sposób nie sprawdzisz, bo WordPress.org nie zna ich sum kontrolnych.
Plik PHP w uploads albo obce konto administratora oznacza, że ktoś miał pełny dostęp do serwera, czasem przez kilka dni. Mógł w tym czasie zostawić kolejne furtki w bazie danych, w motywie albo w innych stronach na koncie. Przejdź do pełnej procedury z artykułu Wirus na stronie WordPress – jak go usunąć krok po kroku: zmiana wszystkich haseł z czystego komputera, nowe klucze salt, podmiana rdzenia, wtyczek i motywów, przegląd bazy danych.
Strona firmowa zbudowana przez agencję dwa lata temu na Bricks Builderze z Bricksforge. Licencja na dodatek wygasła po roku, więc wtyczka utknęła na starej wersji. Właściciel czyta wiadomość o luce i loguje się do panelu: wszystko wygląda normalnie. Dopiero w katalogu wp-content/uploads/bricksforge/tmp/ widać plik PHP o losowej nazwie z datą sprzed kilku dni, a w Użytkownikach konto „wpsupport” z adresem w obcej domenie. Aktualizacja zamknęłaby lukę, ale konto i plik zostałyby na miejscu.
Dlaczego sama aktualizacja nie wystarczy
Aktualizacja usuwa błąd w kodzie wtyczki. Nie usuwa niczego, co atakujący zdążył dopisać do serwera. Jeśli boty trafiły na Twoją stronę między 7 października a dniem aktualizacji, mogły zostawić trzy rodzaje śladów:
- Webshell w katalogu uploads albo w podkatalogu wtyczki. Działa niezależnie od tego, czy luka jest załatana.
- Konto administratora, które pozwala wrócić przez normalny ekran logowania.
- Kod w innych plikach lub w bazie danych: przekierowania, spam w Google, a czasem skrypt pokazujący odwiedzającym fałszywą weryfikację. Taki atak opisuję w artykule Fałszywa CAPTCHA na mojej stronie.
Jeśli czytasz to przy innej luce
Za kilka miesięcy podobny komunikat pojawi się przy innej wtyczce. Procedura jest ta sama, zmieniają się tylko szczegóły.
- Ustal wersje. Sprawdź w komunikacie, które wersje są podatne, a która ma poprawkę. Szukaj u źródeł: w bazach Patchstack, Wordfence albo na stronie producenta wtyczki.
- Ustal datę pierwszych ataków. Od niej zaczynasz przeglądać logi i pliki. Dodaj kilka dni zapasu, bo pierwsze wykrycie nie musi oznaczać pierwszego ataku.
- Kopia, potem aktualizacja albo wyłączenie. W tej kolejności, bez czekania na „spokojniejszy dzień”.
- Szukaj wskaźników z komunikatu. Każda porządna analiza podaje adresy żądań, nazwy parametrów i katalogi, w których lądują pliki. To są frazy do
grepw logach i ścieżki do sprawdzenia. - Zawsze sprawdź trzy miejsca niezależnie od luki: pliki PHP w uploads, listę administratorów i wtyczki Must-Use.
- Obserwuj przez dwa tygodnie. Nowe pliki, nowe konta, zmiany w
.htaccess, ostrzeżenia w Google Search Console.
Pełną listę sygnałów, po których rozpoznasz przejętą stronę, znajdziesz w artykule Jak sprawdzić, czy strona została zhakowana.
Jak się zabezpieczyć na przyszłość
Od ogłoszenia luki do pierwszych ataków mijają dziś godziny, nie tygodnie. Ręczne aktualizacje „raz w miesiącu” przestają wystarczać.
- Automatyczne aktualizacje wtyczek. Włączysz je na liście wtyczek, w kolumnie automatycznych aktualizacji. Przy wtyczkach płatnych działają tylko z aktywną licencją, więc pilnuj jej odnawiania albo zrezygnuj z dodatku. Od WordPressa 6.6 nieudana automatyczna aktualizacja wtyczki, która powoduje błąd krytyczny, jest cofana automatycznie.
- Mniej wtyczek. Usuń te, których nie używasz, także nieaktywne.
- Zapora aplikacyjna (WAF). Filtr ruchu przed WordPressem, który potrafi blokować znane ataki, zanim zdążysz zaktualizować wtyczkę. Oferują ją niektóre wtyczki bezpieczeństwa, usługi CDN i część hostingów.
- Blokada PHP w uploads na stałe, jak w kroku 3.
- Monitoring zmian plików. Alarm, gdy na serwerze pojawi się nowy plik PHP, skraca czas od włamania do reakcji z tygodni do godzin.
- Wyłączona edycja plików w panelu. Linia
define('DISALLOW_FILE_EDIT', true);wwp-config.phpodbiera edytor kodu każdemu, kto przejmie konto administratora. Opis tej i innych zasad jest w dokumentacji Hardening WordPress.
Kiedy nie robić tego samemu
Aktualizację wtyczki i sprawdzenie listy administratorów zrobi każdy właściciel strony. Przegląd logów i czyszczenie po włamaniu wymagają już wprawy. Oddaj to specjaliście, gdy:
- znalazłeś plik PHP w uploads, obce konto albo nieznaną wtyczkę Must-Use,
- strona to sklep z danymi klientów i nie wiesz, czy atakujący miał do nich dostęp,
- nie masz dostępu do licencji Bricksforge ani kontaktu z wykonawcą strony,
- hosting zablokował konto albo przysłał ostrzeżenie o złośliwych plikach (zobacz co zrobić, gdy hosting zablokował stronę).
Koszty takich prac opisuję w artykule Ile kosztuje usunięcie wirusa ze strony.
Chcesz, żebym sprawdził stronę za Ciebie?
Aktualizuję wtyczkę, sprawdzam logi, pliki i bazę pod kątem śladów tego ataku, a jeśli strona została przejęta, czyszczę ją i zamykam drogę powrotu. Odwirusowanie kosztuje 499 zł netto, przyjmuję zgłoszenia 24/7 i daję 30 dni gwarancji czystości.
Najczęstsze pytania
Czy po aktualizacji Bricksforge moja strona jest już bezpieczna?
Aktualizacja zamyka drzwi, ale nie wyrzuca nikogo, kto wszedł wcześniej. Jeśli atakujący zdążył wgrać plik PHP albo założyć konto administratora, po aktualizacji nadal ma dostęp. Dlatego po aktualizacji trzeba jeszcze sprawdzić katalog uploads, listę administratorów, wtyczki Must-Use i logi serwera.
Mam stronę na Bricks Builderze, ale bez Bricksforge. Czy ta luka mnie dotyczy?
Nie. CVE-2026-85097 dotyczy dodatku Bricksforge, a nie samego Bricks Buildera. Warto jednak przy okazji sprawdzić, czy Bricks i pozostałe dodatki są aktualne, bo strony budowane przez agencje często mają po kilka płatnych dodatków z wygasłą licencją.
Licencja Bricksforge wygasła i nie mogę zaktualizować wtyczki. Co zrobić?
Najpierw dezaktywuj wtyczkę, nawet jeśli części elementów strony zabraknie. Potem odnów licencję albo poproś wykonawcę strony o aktualizację. Nie pobieraj nowej wersji z serwisów oferujących płatne wtyczki za darmo: takie paczki bywają zainfekowane i same stają się furtką.
Nie mam dostępu do logów serwera. Jak sprawdzić, czy ktoś próbował ataku?
Poproś hosting o logi dostępu (access log) od 7 października 2026 albo o sprawdzenie, czy były żądania do adresu /wp-json/bricksforge/v1/form_submit. Nawet bez logów możesz sprawdzić skutki: pliki PHP w katalogu wp-content/uploads, nowych administratorów i nieznane wtyczki Must-Use.
Czy po włamaniu przez tę lukę muszę kogoś powiadomić?
Jeśli na stronie są dane osobowe klientów, na przykład zamówienia w sklepie, a atakujący mógł mieć do nich dostęp, RODO może wymagać zgłoszenia naruszenia do Prezesa UODO w ciągu 72 godzin od jego stwierdzenia. Czy zgłoszenie jest potrzebne w Twoim przypadku, oceń z prawnikiem lub inspektorem ochrony danych.