CVE-2026-45138
ŚrednieCVSS 5.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 4 - wyżej niż 4% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może wstrzyknąć złośliwy skrypt, który wykona się w przeglądarce każdego odwiedzającego, w tym superadmina podczas podglądu lub edycji postów, co może prowadzić do kradzieży sesji lub danych.
Rekomendacja
Zaktualizuj CI4MS do wersji 0.31.9.0 lub nowszej, która zawiera poprawkę.
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-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-39393Wysokie
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.
- 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 content management system skeleton. Prior to version 0.31.9.0, the custom `html_purify` validation rule used to sanitize blog post bodies relies on by-reference mutation (`?string &$str`), but CodeIgniter 4's validator passes a local copy of the value, so the sanitized text is silently discarded. The Blog controller writes `$lanData['content']` directly into `blog_langs.content`, and the public template echoes it without escaping — yielding stored XSS executable in any visitor's browser, including the superadmin when previewing or editing posts. Version 0.31.9.0 patches the issue.

