Pomoc zdalna
alerty bezpieczeństwa

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ć.

  • Tomasz Kaczmarek
Tomasz Kaczmarek
11 września 2026 11 min czytania
Joomla logo

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

Ransomware wg CISA

Nieznane (flaga knownRansomwareCampaignUse: Unknown)

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

Tomasz Kaczmarek
Tomasz Kaczmarek

Mogę Ci jakoś pomóc?

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

Minuty od przejęcia

10 000 - 100 000 PLN (analiza, powiadomienia, doradztwo)

Finansowy

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):

Tomasz Kaczmarek
Tomasz Kaczmarek

Mogę Ci jakoś pomóc?

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

Około 100% dla tej luki

Średnia (zmienia pracę redaktorów)

Reguła WAF blokująca anonimowe żądania task=profiles.import

Około 80-90%, zależnie od konfiguracji

Średnia

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

Tomasz Kaczmarek
Tomasz Kaczmarek

Mogę Ci jakoś pomóc?

✓

Zadanie

Kto

Deadline

☐

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.

Masz to samo u siebie?

Możemy się tym zająć

Krótka rozmowa wystarczy, żeby ocenić zakres prac i podać widełki kosztu. Bez zobowiązań.