CVE-2026-39393
WysokieCVSS 8.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 35 - wyżej niż 35% wszystkich znanych CVE
Streszczenie
CI4MS przed wersją 0.31.4.0 zawiera lukę w guardzie trasy instalacyjnej, która opiera się wyłącznie na ulotnym sprawdzeniu cache (cache('settings')) i istnieniu pliku .env. Gdy baza danych jest tymczasowo niedostępna (np. po wygaśnięciu TTL lub wyczyszczeniu cache), guard przepuszcza żądanie, umożliwiając nieuwierzytelnionemu atakującemu nadpisanie pliku .env własnymi danymi uwierzytelniającymi do bazy.
Ocena ryzyka
Udane wykorzystanie prowadzi do pełnego przejęcia aplikacji – atakujący może kontrolować bazę danych i całą instancję CI4MS.
Rekomendacja
Zaleca się natychmiastową aktualizację do wersji 0.31.4.0. Dodatkowo warto rozważyć dodanie dodatkowych mechanizmów uwierzytelniania dla procesu instalacji.
Inne podatności w CI4MS
Zobacz wszystkie- CVE-2026-41203Krytyczne
CI4MS to szkielet CMS oparty na CodeIgniter 4, który przed wersją 0.31.5.0 miał lukę w funkcji Theme::upload. Umożliwia ona uwierzytelnionemu użytkownikowi backendowemu z uprawnieniami do tworzenia motywów przesyłanie plików ZIP bez walidacji nazw wpisów, co prowadzi do możliwości wykonania zdalnego kodu.
- CVE-2026-41202Krytyczne
W wersjach przed 0.31.5.0, funkcja Backup::restore w CI4MS nie weryfikuje nazw plików w przesyłanych archiwach ZIP, co pozwala uwierzytelnionemu użytkownikowi na zapis plików w dowolnych lokalizacjach systemu plików, co może prowadzić do zdalnego wykonania kodu.
- CVE-2026-45270Wysokie
W CI4MS (wersje przed 0.31.9.0) moduł Pages nie oczyszcza treści strony przed zapisem do bazy, a widok renderuje ją bez escapingu, co prowadzi do trwałego XSS. Atak dotyczy każdego odwiedzającego stronę, w tym administratorów.
- CVE-2026-45139Średnie
Podatność w CI4MS przed wersją 0.31.9.0. Moduł Fileeditor nie sprawdza rozszerzenia plików źródłowych w operacjach usuwania i zmiany nazwy, co pozwala użytkownikowi backendu z uprawnieniami edytora plików na usunięcie lub zmianę nazwy dowolnego pliku w katalogu głównym projektu, w tym krytycznych plików konfiguracyjnych (np. Routes.php, App.php, Database.php). Prowadzi to do trwałej odmowy usługi.
- CVE-2026-45138Średnie
CI4MS przed wersją 0.31.9.0 zawiera podatność na trwałe XSS. Niestandardowa reguła walidacji `html_purify` używa mutacji przez referencję, ale CodeIgniter 4 przekazuje lokalną kopię wartości, więc oczyszczony tekst jest odrzucany. Blog zapisuje niesanitizowaną treść, która jest wyświetlana bez kodowania, umożliwiając wykonanie skryptów w przeglądarce ofiary.
- CVE-2026-39394Wysokie
CI4MS przed wersją 0.31.4.0 zawiera podatność w kontrolerze Install::index(), który odczytuje parametr POST 'host' bez walidacji i przekazuje go do updateEnvSettings(), gdzie jest zapisywany do pliku .env przez preg_replace(). Ponieważ znaki nowej linii nie są usuwane, atakujący może wstrzyknąć dowolne dyrektywy konfiguracyjne do pliku .env. Trasy instalacyjne mają wyłączoną ochronę CSRF, a InstallFilter może zostać ominięty, gdy cache('settings') jest pusty.
- CVE-2026-39392Średnie
W CI4MS (szkielet CMS oparty na CodeIgniter 4) przed wersją 0.31.4.0 moduł Pages nie stosuje reguły walidacji html_purify dla pól treści podczas operacji tworzenia i aktualizacji. Treść strony jest przechowywana niesanitizowana w bazie danych i renderowana jako surowy HTML na publicznym froncie. Uwierzytelniony administrator z uprawnieniami edycji stron może wstrzyknąć dowolny JavaScript, który wykona się w przeglądarce każdego odwiedzającego.
- CVE-2026-39391Średnie
W CI4MS przed wersją 0.31.4.0 parametr notatki w funkcji blokowania użytkowników nie był oczyszczany przed zapisem do bazy danych ani przed renderowaniem w atrybucie HTML data-note. Administrator z uprawnieniami do blokowania może wstrzyknąć dowolny kod JavaScript, który wykona się w przeglądarce innego administratora przeglądającego stronę zarządzania użytkownikami.
- CVE-2026-39390Średnie
CI4MS, szkielet CMS oparty na CodeIgniter 4, zawiera lukę w polu ustawień map Google Maps (cMap) w funkcji compInfosPost(). Mimo użycia strip_tags() i filtrowania zdarzeń on\w+, atrybut srcdoc w elemencie <iframe> nie jest blokowany. Osoba atakująca z dostępem do ustawień administracyjnych może wstrzyknąć złośliwy kod JavaScript w atrybucie srcdoc, który wykona się w kontekście strony nadrzędnej dla niezalogowanych odwiedzających.
- CVE-2026-39389Średnie
CI4MS, szkielet CMS oparty na CodeIgniter 4, zawiera podatność naprawioną w wersji 0.31.4.0. Szczegóły podatności nie są dostępne w opisie.
Oryginalny opis (angielski, źródło NVD)
CI4MS is a CodeIgniter 4-based CMS skeleton that delivers a production-ready, modular architecture with RBAC authorization and theme support. Prior to 0.31.4.0, the install route guard in ci4ms relies solely on a volatile cache check (cache('settings')) combined with .env file existence to block post-installation access to the setup wizard. When the database is temporarily unreachable during a cache miss (TTL expiry or admin-triggered cache clear), the guard fails open, allowing an unauthenticated attacker to overwrite the .env file with attacker-controlled database credentials, achieving full application takeover. This vulnerability is fixed in 0.31.4.0.

