
Wprowadzenie do problemu / definicja
CVE-2023-33177 to podatność bezpieczeństwa w Xibo CMS związana z nieprawidłową walidacją ścieżek plików podczas importu layoutów. Problem ma charakter path traversal w wariancie Zip Slip, co oznacza, że specjalnie przygotowane archiwum ZIP może doprowadzić do zapisania plików poza dozwolonym katalogiem roboczym aplikacji.
W praktyce taki błąd stwarza warunki do umieszczenia pliku wykonywalnego w lokalizacji obsługiwanej przez serwer WWW. Jeśli napastnik zapisze tam skrypt PHP, może doprowadzić do zdalnego wykonania kodu na serwerze i przejęcia kontroli nad środowiskiem aplikacji.
W skrócie
Podatność dotyczy mechanizmu importu layoutów i wymaga uwierzytelnionego dostępu do systemu oraz uprawnienia do importowania zasobów. Atak polega na przesłaniu spreparowanego archiwum ZIP zawierającego wpisy z odwołaniami do ścieżek wykraczających poza katalog biblioteki aplikacji.
- Zagrożone były wersje od 1.8.0 do 2.3.16 oraz od 3.0.0 do 3.3.4.
- Poprawki wprowadzono w wersjach 2.3.17 oraz 3.3.5.
- Skutkiem może być zapisanie webshella i zdalne wykonanie kodu.
- Publiczna ocena CVSS 3.1 wynosi 8.8, co klasyfikuje problem jako wysokiego ryzyka.
Kontekst / historia
Informacje o CVE-2023-33177 zostały upublicznione 30 maja 2023 roku. Luka została sklasyfikowana jako CWE-22, czyli niewłaściwe ograniczenie ścieżki do oczekiwanego katalogu, co dobrze oddaje naturę błędu obecnego w procesie importu archiwów.
Publicznie dostępne materiały wskazują, że odkrycie przypisano badaczowi Noamowi Moshe. W obiegu pojawiły się zarówno wpisy advisory, jak i kod proof-of-concept pokazujący, jak przygotować archiwum ZIP z sekwencjami typu ../../ w celu wyjścia poza katalog docelowy i zapisania pliku w nieautoryzowanej lokalizacji.
Analiza techniczna
Mechanizm importu layoutów w Xibo CMS przetwarza archiwum ZIP zawierające strukturę projektu oraz dane opisujące położenie plików. Jeżeli aplikacja buduje docelową ścieżkę zapisu na podstawie danych kontrolowanych przez użytkownika i nie wykonuje poprawnej kanonizacji ścieżek, atakujący może wykorzystać klasyczny Zip Slip.
Scenariusz ataku polega na przygotowaniu prawidłowo wyglądającego pakietu importu, w którym jeden z wpisów odwołuje się do ścieżki wychodzącej poza katalog biblioteki, na przykład przy użyciu sekwencji ../../. W rezultacie plik może zostać zapisany w katalogu publikowanym przez serwer WWW. Jeśli będzie to plik PHP, samo wywołanie go przez HTTP może uruchomić polecenia systemowe po stronie serwera.
Technicznie luka opiera się na połączeniu kilku błędów projektowych:
- zaufania do metadanych pochodzących z archiwum ZIP,
- braku skutecznej normalizacji i walidacji ścieżki,
- możliwości zapisu do lokalizacji interpretowanej przez stos aplikacyjny lub serwer WWW.
Taki łańcuch sprawia, że eksploatacja jest relatywnie prosta i nie wymaga interakcji użytkownika końcowego. Wystarczy konto z odpowiednimi uprawnieniami do importu oraz możliwość przesłania spreparowanego archiwum.
Konsekwencje / ryzyko
Najpoważniejszym skutkiem CVE-2023-33177 jest zdalne wykonanie kodu z uprawnieniami użytkownika, pod którym działa serwer WWW lub aplikacja. To z kolei może prowadzić do pełnego kompromisu systemu Xibo CMS oraz danych, do których ma on dostęp.
Potencjalne konsekwencje obejmują:
- kradzież danych konfiguracyjnych i poświadczeń do bazy danych,
- modyfikację treści wyświetlanych przez system digital signage,
- wdrożenie trwałego webshella do dalszej kontroli nad serwerem,
- wykorzystanie przejętego hosta do ruchu lateralnego w sieci organizacji,
- utrudnione wykrycie incydentu przy braku monitorowania integralności plików.
Choć luka wymaga uwierzytelnienia, nie obniża to znacząco poziomu ryzyka w środowiskach, gdzie konto o ograniczonych uprawnieniach nadal może importować layouty. Dodatkowym czynnikiem ryzyka są słabe hasła, brak MFA oraz niski poziom kontroli nad uprawnieniami użytkowników.
Rekomendacje
Najważniejszym działaniem naprawczym jest aktualizacja Xibo CMS do wersji zawierających poprawki, czyli co najmniej 2.3.17 w linii 2.x lub 3.3.5 w linii 3.x. W przypadku starszych, niewspieranych wdrożeń migracja powinna być potraktowana jako pilny priorytet bezpieczeństwa.
Poza aktualizacją warto wdrożyć dodatkowe środki ochrony:
- ograniczyć możliwość importu layoutów wyłącznie do zaufanych administratorów,
- wymusić silne hasła i MFA dla kont uprzywilejowanych,
- monitorować katalogi aplikacji pod kątem nowych plików wykonywalnych, szczególnie PHP w web root,
- audytować logi importu i nietypowe operacje zapisu plików,
- uruchamiać aplikację z minimalnymi uprawnieniami systemowymi,
- ograniczyć możliwość zapisu do katalogów publikowanych przez serwer WWW,
- przeanalizować mechanizmy rozpakowywania archiwów pod kątem poprawnej kanonizacji ścieżek.
Jeżeli istnieje podejrzenie kompromitacji, organizacja powinna sprawdzić integralność plików, poszukać artefaktów typowych dla webshelli, zresetować poświadczenia używane przez CMS oraz przejrzeć historię wykonywanych procesów i żądań HTTP.
Podsumowanie
CVE-2023-33177 pokazuje, że nawet pomocnicza funkcja importu może stać się krytycznym wektorem ataku, jeśli aplikacja nie waliduje poprawnie ścieżek plików pochodzących z archiwum. W przypadku Xibo CMS luka Zip Slip umożliwiała zapis plików poza katalogiem biblioteki, co w sprzyjających warunkach prowadziło do wdrożenia webshella i przejęcia kontroli nad serwerem.
Dla administratorów najważniejsze są szybka aktualizacja, ścisłe ograniczenie uprawnień importu oraz monitoring integralności plików i aktywności serwera WWW. To właśnie połączenie poprawek producenta z kontrolami obronnymi pozwala realnie ograniczyć ryzyko podobnych incydentów.
Źródła
- Exploit Database – xibocms 3.3.4 – RCE – https://www.exploit-db.com/exploits/52500
- NVD – CVE-2023-33177 Detail – https://nvd.nist.gov/vuln/detail/CVE-2023-33177
- GitHub Security Advisory – Remote Code Execution through Zip Slip in Xibo CMS – https://github.com/xibosignage/xibo-cms/security/advisories/GHSA-jj27-x85q-crqv