Luka w popularnym systemie CMS otrzymała ocenę 7.2 w dziesięciostopniowej skali CVSS (Common Vulnerability Scoring System — skala 0-10 oceniająca powagę luki) [cve]. Zaobserwowaliśmy nową podatność typu RCE (Remote Code Execution — zdalne wykonanie kodu na komputerze ofiary) w Craft CMS, zidentyfikowaną jako CVE-2026-56382 [cve]. Problem dotyczy szerokiego zakresu wersji, od 5.5.0 do 5.9.13 1. Luka pozwala uwierzytelnionemu użytkownikowi z uprawnieniami administratora na wykonanie dowolnego kodu PHP na serwerze 2.
Chociaż wektor wymaga uwierzytelnienia, jego konsekwencje są poważne. Obejmują pełne przejęcie serwisu i potencjalny wyciek wrażliwych danych, w tym kluczy do bazy danych 3. Dla polskich firm i agencji interaktywnych, które często używają tego systemu do budowy stron dla klientów, oznacza to bezpośrednie ryzyko naruszenia danych i niezgodności z RODO (Rozporządzenie o Ochronie Danych Osobowych). Problem został już naprawiony przez producenta 4.
TL;DR
- Produkt: Craft CMS, pakiet
craftcms/cmsw wersjach od 5.5.0 do 5.9.13 1. - Wektor: Uwierzytelniony użytkownik z uprawnieniami administratora może wysłać spreparowane żądanie POST, aby wykonać dowolny kod PHP 5 2.
- Identyfikator: CVE-2026-56382 [cve].
- Wpływ: Zdalne wykonanie kodu, ujawnienie zmiennych środowiskowych, w tym danych logowania do bazy danych i klucza
CRAFT_SECURITY_KEY3. - Kogo dotyczy: Wszystkie organizacje używające podatnych wersji Craft CMS, w tym polskie agencje marketingowe, firmy deweloperskie i ich klienci z sektora MŚP oraz administracji publicznej.
- Pierwszy ruch: Natychmiastowa aktualizacja do wersji 5.9.14 lub nowszej 4.
Wektor ataku
Analiza techniczna wskazuje, że źródło luki znajduje się w metodzie FieldsController::actionRenderCardPreview() 6. Metoda ta jest odpowiedzialna za generowanie podglądu kart w panelu administracyjnym. Problem polega na tym, że parametr fieldLayoutConfig z żądania POST jest przekazywany bezpośrednio do funkcji Fields::createLayout() 7. Kluczowe jest tu pominięcie funkcji Component::cleanseConfig(), która odpowiada za sanitację i oczyszczenie konfiguracji z potencjalnie szkodliwych elementów 7.
Brak tej walidacji otwiera drogę do ataku. Uwierzytelniony administrator może wstrzyknąć do parametru fieldLayoutConfig specjalnie spreparowane handlery zdarzeń frameworka Yii2, na którym bazuje Craft CMS 5. Przykładem takiego handlera jest klucz 'on init'. Gdy system próbuje przetworzyć taką konfigurację, wykonuje kod PHP zdefiniowany w handlerze 2.
Konsekwencje są dwojakie. Po pierwsze, atakujący zyskuje możliwość zdalnego wykonania dowolnego kodu PHP na serwerze, co w praktyce oznacza pełną kontrolę nad aplikacją. Może instalować backdoory, modyfikować treść strony lub eskalować atak na inne systemy w sieci. Po drugie, luka może umożliwiać bezpośrednie ujawnienie wrażliwych informacji 3. Atakujący może odczytać zmienne środowiskowe serwera, w których często przechowywane są krytyczne dane, takie jak dane uwierzytelniające do bazy danych czy klucz CRAFT_SECURITY_KEY 3. Przejęcie tego klucza może pozwolić na deszyfrację wrażliwych danych przechowywanych przez CMS.
Wskaźniki kompromitacji
Ponieważ jest to luka w oprogramowaniu, a nie kampania z użyciem złośliwego oprogramowania, nie ma tu klasycznych wskaźników kompromitacji (IoC — Indicators of Compromise) takich jak hashe plików czy adresy IP serwerów C2 (Command and Control — serwer kontrolujący zainfekowane maszyny). Głównym wskaźnikiem jest sama obecność podatnej wersji Craft CMS.
Zalecamy jednak przegląd logów serwera WWW pod kątem nietypowych żądań POST do punktu końcowego powiązanego z FieldsController::actionRenderCardPreview(). Należy zwrócić szczególną uwagę na żądania pochodzące z kont administracyjnych, które zawierają nietypowe lub złożone struktury w parametrze fieldLayoutConfig.
Przykładowe wzorce do wyszukania w logach (mogą wymagać dostosowania):
POST /index.php?p=admin/actions/fields/render-card-preview
Analiza zawartości tych zapytań pod kątem obecności kluczy takich jak on init lub innych handlerów zdarzeń Yii2 może wskazać na próbę wykorzystania luki.
Co zrobić w 24-48h
Kroki należy podjąć natychmiast, zwłaszcza w kontekście polskich regulacji dotyczących ochrony danych.
- Identyfikacja i aktualizacja (priorytet 1):
- Sprawdź wersję wszystkich swoich instalacji Craft CMS. Można to zrobić w panelu administracyjnym lub przez Composer (
composer show craftcms/cms). - Jeśli wersja mieści się w zakresie od 5.5.0 do 5.9.13 1, należy natychmiast zaktualizować system do wersji 5.9.14 lub nowszej 4. Jest to najskuteczniejszy sposób na usunięcie zagrożenia.
- Sprawdź wersję wszystkich swoich instalacji Craft CMS. Można to zrobić w panelu administracyjnym lub przez Composer (
2.Ograniczenie dostępu (jeśli aktualizacja jest niemożliwa):
* Jeśli natychmiastowa aktualizacja nie jest możliwa, należy maksymalnie ograniczyć ryzyko. Zablokuj dostęp do panelu administracyjnego (/admin) dla wszystkich adresów IP poza zaufanymi (np. biuro, VPN). To tymczasowe rozwiązanie, które nie zastępuje aktualizacji.
* Przeprowadź audyt kont z uprawnieniami administratora. Usuń nieaktywne konta i zweryfikuj, czy wszystkie aktywne są niezbędne i należą do zaufanych osób.
-
Analiza post-factum (po aktualizacji):
- Przejrzyj logi serwera w poszukiwaniu śladów wykorzystania luki, zgodnie z sugestiami z sekcji „Wskaźniki kompromitacji”.
- Załóż, że jeśli system był podatny, mogło dojść do wycieku zmiennych środowiskowych. Należy natychmiast zmienić wszystkie dane uwierzytelniające (hasła do bazy danych, klucze API) oraz
CRAFT_SECURITY_KEY. - W kontekście polskiego prawa, wyciek danych dostępowych do bazy danych z danymi osobowymi stanowi naruszenie ochrony danych w rozumieniu RODO. Taki incydent może wymagać zgłoszenia do Urzędu Ochrony Danych Osobowych (UODO) w ciągu 72 godzin od jego wykrycia.
-
Komunikacja z klientami (dla agencji):
- Polskie agencje interaktywne, które zarządzają stronami klientów na Craft CMS, powinny proaktywnie poinformować ich o zagrożeniu i przeprowadzić aktualizację w ich imieniu. Przejrzysta komunikacja buduje zaufanie.
Źródła
Zobacz też
- CVE-2024-24909: RCE w integracji Dell z Windows Admin Center
- Krytyczna luka SQL Injection w GeekyBot (CVE-2026-57679)
- Krytyczna luka w Kids Online Store: RCE przez upload plików (CVE-2026-40750)
- Luka w SSO Vaultwarden pozwala na przejęcie sesji
Przypisy
-
Wersje Craft CMS (pakiet composer craftcms/cms) od 5.5.0 do 5.9.13 zawierają lukę typu Remote Code Execution (RCE). — nvd.nist.gov › CVE 2026 56382 ↩ ↩2 ↩3
-
Wstrzyknięcie handlerów zdarzeń Yii2 pozwala na wykonanie dowolnego kodu PHP. — nvd.nist.gov › CVE 2026 56382 ↩ ↩2 ↩3
-
Luka umożliwia ujawnienie wrażliwych informacji, takich jak zmienne środowiskowe zawierające dane uwierzytelniające do bazy danych i CRAFT_SECURITY_KEY. — nvd.nist.gov › CVE 2026 56382 ↩ ↩2 ↩3 ↩4
-
Problem został naprawiony w wersji 5.9.14 Craft CMS. — nvd.nist.gov › CVE 2026 56382 ↩ ↩2 ↩3
-
Uwierzytelniony użytkownik z uprawnieniami administratora może wstrzyknąć handlery zdarzeń Yii2 (np. klucze ‘on init’) poprzez parametr fieldLayoutConfig. — nvd.nist.gov › CVE 2026 56382 ↩ ↩2
-
Luka RCE znajduje się w metodzie FieldsController::actionRenderCardPreview(). — nvd.nist.gov › CVE 2026 56382 ↩
-
Metoda FieldsController::actionRenderCardPreview() przekazuje parametr POST fieldLayoutConfig bezpośrednio do Fields::createLayout() bez wywołania Component::cleanseConfig(). — nvd.nist.gov › CVE 2026 56382 ↩ ↩2
// Komentarze ...
Dodaj komentarz