Edytor JCE dla Joomli pozwalał obcemu bez logowania dopisać sobie prawo wgrywania plików PHP (CVE-2026-48907)
Luka CVE-2026-48907 w edytorze JCE dla Joomli pozwala anonimowo zaimportować własny profil edytora i wgrać na serwer działający plik PHP. Ataki są zautomatyzowane, a sama aktualizacja nie usuwa śladów włamania. Sprawdź, co zrobić.
Strona firmowa na Joomli rzadko składa się z samego systemu. Dochodzą do niej dodatki, a jednym z najczęściej instalowanych jest JCE, wygodny edytor treści z paskiem formatowania i menedżerem plików. W czerwcu 2026 okazało się, że w tym dodatku osoba z zewnątrz, bez żadnego konta, mogła sama napisać sobie zasady wgrywania plików, a potem zgodnie z nimi umieścić na serwerze działający program.
Ten tekst jest dla właścicieli firm i menedżerów, którzy nie administrują stroną osobiście. Dowiesz się, co dokładnie się stało, po czym poznać, że strona mogła już zostać przejęta, i jakie jedno pytanie zadać firmie, która prowadzi Twoją witrynę.
1. Co się stało?
Amerykańska agencja CISA prowadzi katalog KEV (Known Exploited Vulnerabilities), czyli listę luk, przy których istnieje dowód, że przestępcy już ich używają. Luka CVE-2026-48907 w edytorze JCE trafiła tam 16 czerwca 2026 roku jako jedyna pozycja dodana tego dnia. Urzędy federalne w USA dostały na usunięcie problemu zaledwie trzy dni, do 19 czerwca 2026.
Element
Szczegóły
Identyfikator CVE
CVE-2026-48907
Data dodania do CISA KEV
16 czerwca 2026 (termin dla agencji federalnych: 19 czerwca 2026)
Produkt
Widget Factory Limited: JCE (Joomla Content Editor), rozszerzenie do systemu Joomla
Wersje zagrożone
Od 1.0.0 do 2.9.99.4 włącznie (według NVD i zespołu bezpieczeństwa Joomli)
Wersje bezpieczne
2.9.99.5 i nowsze; producent zaleca co najmniej 2.9.99.9, najnowsze wydanie to 2.9.99.10 z 29 lipca 2026
Typ podatności
CWE-284, niewłaściwa kontrola dostępu, prowadząca do wgrania i wykonania kodu PHP
Ocena CVSS
10,0 w CVSS 4.0 (Joomla Security) oraz 9,8 w CVSS 3.1 (NVD), obie KRYTYCZNE
Numer CVE nadał zespół bezpieczeństwa projektu Joomla, ale sam edytor tworzy i poprawia inna firma, Widget Factory. To ważne w praktyce: aktualizacja samej Joomli nie aktualizuje JCE.
Chronologia wydań edytora
Wersja JCE
Data wydania
Co zmienia w kontekście tej luki
2.9.99.4
28 maja 2026
Ostatnia podatna wersja (poprawiała dwie inne luki, dostępne tylko po zalogowaniu)
2.9.99.5
3 czerwca 2026
Zamyka CVE-2026-48907
2.9.99.6
8 czerwca 2026
Przegląd kodu i dodatkowe utwardzenie kontroli dostępu i obsługi plików
2.9.99.7
18 czerwca 2026
Utwardzenie importu profili, lista dozwolonych grup użytkowników
2.9.99.8
2 lipca 2026
Pliki wykonywalne (php, js, exe) nigdy nie są pokazywane w menedżerze plików
2.9.99.9
8 lipca 2026
Wersja zalecana przez producenta jako minimum
2.9.99.10
29 lipca 2026
Najnowsza, z kolejnymi poprawkami bezpieczeństwa
2. O co chodzi w prostych słowach?
Edytor JCE działa na podstawie profili. Profil to zestaw zasad: kto może korzystać z edytora, jakie przyciski widzi i jakie pliki wolno mu wgrać na serwer. Redaktor może na przykład wgrywać zdjęcia JPG i PNG, a autor tylko pisać tekst.
Wyobraź sobie magazyn, w którym przy bramie wisi tablica z listą rzeczy, jakie wolno wwieźć. Ochroniarz sumiennie sprawdza każdą dostawę i porównuje ją z tablicą. Usterka polegała na tym, że tablica wisiała po zewnętrznej stronie bramy, a obok leżał marker. Przyjezdny dopisywał sobie pozycję „materiały wybuchowe”, wracał do bramy i wjeżdżał zgodnie z zasadami, bo ochroniarz robił dokładnie to, co do niego należało.
W JCE tą tablicą był import profili. Niezalogowana osoba mogła zaimportować własny profil, który pozwalał wgrywać pliki PHP, czyli programy w języku, w którym działa sama strona. Następnie wgrywała taki plik i uruchamiała go na serwerze.
Słowniczek: PHP to język programowania, w którym napisana jest Joomla. Plik PHP wgrany na serwer nie jest zwykłym dokumentem, tylko programem, który serwer wykona na polecenie atakującego.
Słowniczek: Web shell to mały plik PHP dający atakującemu panel sterowania serwerem przez przeglądarkę. Działa dalej nawet po załataniu luki, przez którą trafił na serwer.
Scenariusz
Normalnie
Z podatnością
Kto tworzy profile edytora
Administrator strony po zalogowaniu
Każdy anonimowy użytkownik internetu
Jakie pliki można wgrać
Zdjęcia i dokumenty wskazane przez administratora
Dowolne, także programy PHP
Co robi serwer z wgranym plikiem
Wyświetla go jako obraz lub dokument
Wykonuje go jako program
Kto kontroluje stronę
Firma i jej wykonawca
Autor wgranego pliku
Czy potrzebna jest rejestracja na stronie
Nie dotyczy
Nie, strona bez publicznej rejestracji też jest zagrożona
Słowniczek: CVSS to skala powagi luk od 0 do 10. EPSS to prognoza prawdopodobieństwa, że luka zostanie wykorzystana w ciągu najbliższych 30 dni.
3. Jak hakerzy to wykorzystują?
To nie jest atak wymagający kliknięcia w link przez pracownika ani znajomości hasła. Według producenta i niezależnej analizy mySites.guru ataki są w pełni zautomatyzowane: sieć przejętych komputerów sprawdza kolejne strony na Joomli i na każdej wykonuje tę samą sekwencję. Działający kod exploita został opublikowany na GitHubie 9 czerwca 2026.
Timeline ataku:
Etap
Czas
Akcja hakerów
Wynik
1
T+0 s
Automat skanuje internet w poszukiwaniu stron z komponentem JCE
Strona trafia na listę celów
2
T+kilka sekund
Anonimowe żądanie POST do index.php?option=com_jce&task=profiles.import
Na stronie pojawia się obcy profil, zwykle o nazwie w stylu J940401, dopuszczający pliki php
3
T+kilka sekund
Drugie żądanie POST wgrywa plik przez ten profil
Na serwerze ląduje web shell, oba żądania kończą się kodem 200
4
T+minuty
Uruchomienie web shella, dodanie ukrytych administratorów lub zadań cyklicznych
Trwały dostęp, niezależny od późniejszej aktualizacji JCE
5
T+godziny do tygodni
Wstrzyknięcie spamu SEO, przekierowań, skimmera płatności lub pobranie bazy danych
Utrata klientów, danych i widoczności w wyszukiwarce
Etapy 1-3 trwają sekundy i nie wymagają udziału człowieka po stronie atakującego. Etapy 4-5 zależą od celów atakującego; mySites.guru wymienia wśród możliwych działań dodawanie superadministratorów, podmianę plików pod ponowne infekcje i pobieranie baz danych.
Konkretne scenariusze zagrożenia:
🔴 Scenariusz 1: sklep internetowy na Joomli dostaje na stronę płatności skrypt kopiujący dane kart. Klienci zgłaszają nieautoryzowane transakcje po kilku tygodniach, a bank wskazuje sklep jako wspólny punkt.
🔴 Scenariusz 2: restauracja z rezerwacjami online. Przeglądarki zaczynają ostrzegać gości przed stroną, wyszukiwarka oznacza witrynę jako niebezpieczną, rezerwacje spadają, a w lokalu nikt nie wie dlaczego, bo z firmowego komputera strona wygląda normalnie.
🔴 Scenariusz 3: kancelaria lub biuro rachunkowe z formularzem kontaktowym. Atakujący pobiera bazę danych z wiadomościami klientów, co oznacza incydent RODO i obowiązek zgłoszenia do UODO w ciągu 72 godzin.
Słowniczek: Skimmer to ukryty skrypt na stronie, który kopiuje dane wpisywane w formularzach, najczęściej numery kart płatniczych.
4. Dlaczego to ryzyko dla Twojej firmy?
Najgroźniejsze w tej luce jest to, że aktualizacja zamyka drzwi, ale nie wyrzuca kogoś, kto już wszedł. Producent pisze wprost, że jeśli strona została zaatakowana przed aktualizacją, sama aktualizacja nie usunie tego, co zostawił atakujący.
Obszar biznesu
Potencjalny wpływ
Czas do wystąpienia
Koszty szacunkowe
Operacyjny
Wyłączenie strony na czas czyszczenia i odtwarzania z kopii
Godziny do dni
2 000 - 15 000 PLN za pracę specjalistów
Bezpieczeństwo danych
Kradzież bazy klientów, formularzy, danych logowania
Utracona sprzedaż i rezerwacje, reklamacje transakcji
Dni do tygodni
5 000 - 50 000 PLN miesięcznie dla małej firmy
Reputacyjny
Ostrzeżenia przeglądarek, wypadnięcie z wyników wyszukiwania
Dni do tygodni
Odbudowa widoczności trwa zwykle tygodnie, czasem miesiące
Prawny
Postępowanie UODO, roszczenia klientów
Tygodnie do miesięcy
Kary RODO do 20 mln EUR lub 4% rocznego światowego obrotu
Kwoty w tabeli to szacunki poglądowe dla małej lub średniej firmy, a nie dane z konkretnego incydentu; jedynie górna granica kar RODO wynika wprost z przepisów.
Przed i po wdrożeniu poprawki
Obszar
Przed (JCE 2.9.99.4 lub starszy)
Po (JCE 2.9.99.9 lub nowszy i sprawdzona strona)
Import profili
Dostępny dla anonimowych osób
Tylko dla uprawnionych, z listą dozwolonych grup
Pliki PHP w folderach images, media, tmp
Mogą się pojawić bez wiedzy firmy
Wykryte i usunięte podczas przeglądu
Hasła administratorów i bazy
Potencjalnie znane atakującemu
Zmienione po incydencie
Wiedza o historii strony
Brak
Przejrzane logi żądań profiles.import
Macierz ryzyka (pozycja CVE-2026-48907 dla strony z niezaktualizowanym JCE):
Wpływ
5 | ■ ← CVE-2026-48907 (KRYTYCZNA)
4 | ■ ■
3 | ■ ■ ■
2 | ■ ■ ■ ■
1 | ■ ■ ■ ■ ■
+---------------------
1 2 3 4 5 Prawdopodobieństwo
Wpływ 5: pełna kontrola nad serwerem strony (CVSS 10,0 / 9,8)
Prawdopodobieństwo 5: publiczny exploit, ataki automatyczne,
EPSS 78,1% (13.09.2026), wyżej niż 99,5% znanych luk
5. Co musisz zrobić natychmiast?
Kolejność ma znaczenie. Producent zaleca najpierw zamknąć wejście, a dopiero potem sprzątać, bo niezałatana strona zostanie zainfekowana ponownie przez ten sam automat w ciągu kilku minut.
Priorytet
Działanie
Termin
Odpowiedzialny
Status
🔴 NATYCHMIAST
Aktualizacja JCE do 2.9.99.9 lub nowszej (obecnie 2.9.99.10)
Dzisiaj
Wykonawca strony lub IT Manager
☐
🔴 NATYCHMIAST
Zabezpieczenie logów serwera WWW, zanim hosting je nadpisze
Dzisiaj
IT Manager z hostingiem
☐
🔴 NATYCHMIAST
Sprawdzenie w Komponenty, JCE Editor, Editor Profiles, czy nie ma obcych profili
Dzisiaj
Administrator Joomli
☐
🟠 PILNIE
Wyszukanie plików PHP w folderach images, media i tmp (także nazwy typu foo.php.xml)
24 h
Wykonawca strony
☐
🟠 PILNIE
Po wykryciu śladów: kopia dowodów, usunięcie profili i plików, zmiana haseł administratorów, bazy i FTP
24-48 h
Incident Response lub zewnętrzny specjalista
☐
🟡 WAŻNIE
Pełny skan złośliwego oprogramowania po stronie serwera
W ciągu tygodnia
Hosting lub SOC
☐
🟡 WAŻNIE
Przegląd kont superadministratorów i zadań cyklicznych (cron)
W ciągu tygodnia
Administrator Joomli
☐
Jeśli aktualizacja nie jest dostępna:
Wersja 2.9.99.9 wymaga PHP 7.4 i Joomli 3.9 lub nowszej. Dla starszych stron producent udostępnia bezpłatną łatkę dla JCE 2.7.x, 2.8.x i 2.9.x, która zamyka lukę, ale bez dodatkowych utwardzeń z 2.9.99.6 i nowszych. Gdy nie da się ani zaktualizować, ani użyć łatki, producent zaleca odinstalowanie JCE.
Czasowa miara ochronna
Efektywność
Łatwość wdrożenia
Bezpłatna łatka producenta dla JCE 2.7.x-2.9.x
Wysoka dla tej luki, bez utwardzeń
Średnia (test na kopii strony)
Odinstalowanie JCE i powrót do edytora wbudowanego
Blokada wykonywania PHP w folderach images, media, tmp
Około 70-90%, ogranicza skutki, nie samą lukę
Średnia
Wyłączenie strony do czasu naprawy
100%
Wysoka, ale kosztowna biznesowo
Wartości efektywności to orientacyjne szacunki poglądowe, a nie wyniki testów producenta. Producent zaznacza, że wersje JCE 2.6.x w domyślnej konfiguracji najpewniej nie są podatne, ale nie zostało to niezależnie potwierdzone, a 2.6.x nie ma już wsparcia.
6. Kontekst i skala zagrożenia
Aspekt
Informacja
Czy jest wykorzystywana?
TAK: potwierdzają CISA KEV, producent i mySites.guru
Grupy przestępcze
Brak publicznie potwierdzonych danych; mySites.guru opisuje zautomatyzowany botnet
Kampanie ransomware
Brak publicznie potwierdzonych danych (CISA: Unknown)
Ocena CVSS
10,0/10 w CVSS 4.0 z dopiskiem Exploit Maturity: Attacked; 9,8/10 w CVSS 3.1
PoC dostępny publicznie?
TAK: działający exploit na GitHubie od 9 czerwca 2026 (mySites.guru)
Liczba atakowanych firm
Brak pełnej statystyki; mySites.guru raportuje setki przejętych stron z obcymi profilami i web shellami
EPSS
78,1% (pomiar z 13 września 2026), percentyl 99,55
Ocena SSVC od CISA
Wykorzystanie aktywne, możliwe do automatyzacji, wpływ techniczny całkowity
W ocenie CVSS 4.0 zespół Joomli dopisał dwie informacje, które łatwo przeoczyć. Dojrzałość wykorzystania ustawiono na „atakowane”, a pilność według dostawcy na czerwoną, najwyższą. Sama wysoka liczba mówi, co się stanie, jeśli ktoś lukę wykorzysta. Te dopiski mówią, że ktoś już to robi.
Linia czasu incydentu:
2026-05-28: JCE 2.9.99.4 - ostatnia podatna wersja
2026-06-03: JCE 2.9.99.5 zamyka CVE-2026-48907
2026-06-05: Publikacja CVE-2026-48907 w NVD
2026-06-08: JCE 2.9.99.6 - dodatkowe utwardzenie
2026-06-09: Działający exploit publicznie na GitHubie
2026-06-12: Komunikat producenta: aktywne ataki, łatka dla starszych stron
2026-06-16: Wpis do katalogu CISA KEV
2026-06-19: Termin CISA dla agencji federalnych USA
2026-07-08: JCE 2.9.99.9 - minimum zalecane przez producenta
2026-07-29: JCE 2.9.99.10 - najnowsze wydanie
2026-09-13: EPSS 78,1%
2026-09-14: TUTAJ JESTEŚMY - trzy miesiące od publicznego exploita
Trzy miesiące po publikacji exploita każda strona, która nadal ma JCE 2.9.99.4 lub starszy, powinna być traktowana jako prawdopodobnie przejęta, a nie tylko zagrożona. Automaty skanujące internet miały wystarczająco dużo czasu, żeby do niej dotrzeć.
7. Bezpośredni link do działania
Komunikat producenta z instrukcją sprawdzenia strony: https://www.joomlacontenteditor.net/news/jce-security-update-and-a-free-patch-for-older-sites
Lista zmian i numery wersji: https://www.joomlacontenteditor.net/support/changelog/editor
Pobrać JCE 2.9.99.10 lub łatkę dla starszych stron z https://www.joomlacontenteditor.net
IT Manager
DZISIAJ
☐
Zrobić kopię strony i bazy, przetestować aktualizację na kopii
Wykonawca strony
DZISIAJ
☐
Poprosić hosting o logi dostępu za okres od 1 czerwca 2026
IT Manager
DZISIAJ
☐
Zakomunikować redaktorom krótką przerwę w edycji treści
Project Manager
DZISIAJ
☐
Wdrożyć aktualizację na stronie produkcyjnej
DevOps lub wykonawca
DO JUTRA
☐
Przeszukać logi pod kątem task=profiles.import i method=upload
SOC lub wykonawca
DO JUTRA
☐
Potwierdzić brak obcych profili, plików PHP i nowych administratorów
IT Manager
DO JUTRA
☐
W razie włamania: odtworzyć stronę z kopii sprzed pierwszego wpisu w logach
Wykonawca strony
48 h
Uwaga: Kopia zapasowa wykonana po włamaniu zawiera już web shella. Odtwarzaj stronę z kopii sprzed najwcześniejszego podejrzanego żądania w logach.
8. Pytania do Twojego zespołu IT
Nie pytaj „czy strona jest bezpieczna”, bo na takie pytanie odpowiedź zawsze brzmi „tak”. Pytaj o liczby i fakty, które da się sprawdzić.
#
Pytanie
Odpowiedź
Priorytet
1
Czy którakolwiek z naszych stron na Joomli ma zainstalowany edytor JCE?
TAK / NIE
🔴
2
W jakiej wersji jest JCE i czy to co najmniej 2.9.99.9?
Numer wersji
🔴
3
Kiedy dokładnie JCE zostało zaktualizowane do 2.9.99.5 lub wyżej?
Data aktualizacji
🔴
4
Czy w logach są anonimowe żądania task=profiles.import sprzed tej daty?
TAK / NIE / logi niedostępne
🔴
5
Czy lista profili JCE zawiera tylko profile utworzone przez nas?
TAK / NIE
🟠
6
Czy aktualizujemy dodatki niezależnie od samej Joomli?
TAK / NIE
🟠
7
Czy mamy kopię strony sprzed 3 czerwca 2026 przechowywaną poza serwerem?
TAK / NIE
🟠
8
Czy nasza umowa z wykonawcą obejmuje reakcję na incydenty i przegląd dodatków?
TAK / NIE
🟡
Matryca decyzyjna dla managera
Sytuacja po odpowiedziach IT
Decyzja
Kto zatwierdza
JCE 2.9.99.9 lub nowsze, brak śladów w logach i plikach
Zamknąć temat, dodać kwartalny przegląd dodatków
Właściciel lub dyrektor
JCE zaktualizowane dopiero po 9 czerwca 2026, logi niedostępne
Zlecić pełny audyt strony i zmianę wszystkich haseł
Właściciel lub dyrektor
Znaleziony obcy profil lub plik PHP
Tryb incydentu: odtworzenie z kopii, ocena naruszenia RODO w 72 h
Zarząd z inspektorem ochrony danych
Strona na starej Joomli, bez możliwości aktualizacji
Łatka producenta teraz, budżet na migrację w tym kwartale
Zarząd
Pytania diagnostyczne dla managera:
✓ Czy wiemy, jakie dodatki działają na naszej stronie i kto odpowiada za ich aktualizację?
✓ Czy kopie zapasowe strony są przechowywane poza serwerem, na którym stoi strona?
✓ Kiedy ostatnio nasza firma przeprowadziła audyt bezpieczeństwa strony internetowej?
✓ Czy wiemy, jak szybko hosting usuwa logi i czy mamy do nich dostęp?
✓ Czy mamy procedurę zgłoszenia naruszenia danych do UODO?
Dla właściciela firmy najważniejsza jest jedna liczba: wersja JCE na stronie. Albo jest to co najmniej 2.9.99.9, albo nie. Jeśli nie, lub jeśli aktualizacja nastąpiła po 9 czerwca 2026, sama aktualizacja nie wystarczy i strona wymaga sprawdzenia pod kątem śladów włamania.
Czytaj dalej
Powiązane artykuły
Zestaw zmienia się codziennie, więc przy kolejnej wizycie zobaczysz inny wycinek bloga.
Błąd w logowaniu platformy Kestra OSS pozwala bez hasła tworzyć i uruchamiać przepływy pracy, czyli wykonywać dowolne polecenia jako root. Microsoft opisał włamanie, CISA potwierdza ataki. Zaktualizuj dziś.
Błąd w NetScaler ADC i Gateway, opisany przez producenta jako awaria, pozwala według badaczy przejąć bramę VPN bez hasła. Publiczny kod istnieje, ataki trwają. Zaktualizuj urządzenia i sprawdź ślady włamania.
CISA dodała do katalogu KEV lukę z 2015 roku w narzędziu ABRT, która daje napastnikowi uprawnienia root na serwerach RHEL 7 i CentOS 7. Zaktualizuj pakiet abrt i zaplanuj wymianę systemów bez wsparcia.
Klikając „Akceptuję”, zgadzasz się na przechowywanie plików cookie przez UXU w celu poprawy działania strony, analizy i wsparcia działań marketingowych.