Blog 24/7

cross-site contamination

TAB. 1Hasłopo angielsku
Po angielskucross-site contamination
Którą formą pisaćpo angielsku Polski odpowiednik istnieje, ale w praktyce nikt tak nie pisze. Zostaw angielski, polski trzymaj jako synonim.
Inne formyzakażenie krzyżowe na wspólnym hostingu · infekcja przenosząca się między stronami na jednym koncie
KategoriaStrony WWW, WordPress i hosting

Cross-site contamination (zakażenie krzyżowe) to przeniesienie infekcji z jednej witryny na inne strony w tym samym koncie hostingowym albo na tym samym serwerze. Sucuri definiuje je jako sytuację, w której strona zostaje zainfekowana przez sąsiednie witryny w tym samym środowisku z powodu słabej izolacji na serwerze albo w konfiguracji konta [2]. Skutek praktyczny jest prosty: wyczyszczenie jednej strony nie kończy problemu, bo infekcja wraca z sąsiedniej. Sucuri wskazuje zakażenie krzyżowe jako jeden z czynników ciągłych reinfekcji wielu aktualnych i utwardzonych stron [1].

Jak działa

Zakażenie krzyżowe jest odmianą zjawiska lateral movement, czyli przemieszczania się napastnika po środowisku. W kontekście stron internetowych oznacza to według Sucuri zdobycie dostępu do jednej witryny i użycie jej jako przyczółka do infekowania innych stron w tym samym środowisku [2].

Warunkiem jest wspólny zapis. Strony w jednym koncie cPanel należą domyślnie do tego samego właściciela i grupy co strona główna w katalogu public_html, a proces PHP działa jako ten sam użytkownik [2]. Pliki jednej strony mogą więc czytać i zapisywać pliki drugiej [2]. W zwykłej pracy to nie przeszkadza, ale gdy na koncie pojawi się złośliwe oprogramowanie (malware), rozchodzi się ono po wszystkich stronach.

Przebieg infekcji między dwiema stronami na jednym koncie pokazuje schemat poniżej.

RYS. 1Zakażenie krzyżowe na jednym koncie

Odmiany

ŚrodowiskoŹródło problemuCo pomaga
jedno konto cPanel z domenami dodatkowymiwspólny właściciel plików i proces PHP [2]osobne konto cPanel na stronę [2]
VPS złożony w pośpiechuwszystkie strony należą do www-data [2]osobny użytkownik i pula PHP-FPM [2]
serwer współdzielony z obcymi stronamidane z wp-config.php sąsiada [1]osobny serwer albo pełne łatanie [1]
wspólny serwer baz danychpołączenia dozwolone z całej podsieci [1]ograniczenie dostępu do bazy

Sucuri zwraca uwagę na VPS, na którym administrator, żeby pozbyć się błędów „permission denied” przy aktualizacjach, przekazuje wszystkie pliki użytkownikowi serwera WWW [2]. Jeśli w katalogu jest kilka stron, każda może wtedy zapisywać pliki pozostałych [2].

W WordPressie

Dokumentacja WordPressa ostrzega wprost: jeśli strona jest na hostingu współdzielonym i inna witryna na tym samym serwerze zostanie przejęta, twoja strona także może zostać przejęta [3]. Zaleca też, by kilka blogów na jednym serwerze trzymać w osobnych bazach danych, zarządzanych przez różnych użytkowników [3].

Kluczowy jest plik wp-config.php, który zawiera dane logowania do bazy. Sucuri w 2016 roku opisał atak, w którym napastnik, mając już jedną przejętą stronę na serwerze, wyszukiwał inne witryny WordPress pod tym samym adresem IP [1]. Na każdej próbował przez lukę pobierania dowolnych plików odczytać wp-config.php, a potem łączył się z bazą danych z przejętej strony [1]. Ponieważ połączenie szło z tego samego serwera, nie blokowała go reguła dopuszczająca tylko lokalne połączenia [1]. Uprawnienia 400 na pliku też nie pomagały, bo odczytu dokonywał proces serwera WWW, który musi ten plik czytać [1]. Mechanizm odczytu opisuje hasło path traversal, a ochronę pliku utwardzanie pliku wp-config.php.

Na zakażenie krzyżowe szczególnie narażone są strony „zapomniane”. Sucuri zauważa, że poza jedną lub dwiema głównymi stronami administratorzy często mają kilka innych, które nie dostają aktualizacji wtyczek i motywów na czas [2]. Taka porzucona wtyczka na pobocznej stronie staje się wejściem do całego konta.

Zagrożenia i skutki

  • Reinfekcja. Czyszczenie jednej strony nie pomaga, dopóki zainfekowana jest sąsiednia [1].
  • Nowi administratorzy i podmiana treści. Z danymi bazy napastnik może utworzyć nieautoryzowane konto administratora na każdej podatnej stronie albo zmienić jej tytuł, czyli dokonać podmiany treści strony [1].
  • Zarażanie odwiedzających. Złośliwe oprogramowanie SocGholish z fałszywymi aktualizacjami przeglądarki wstrzykuje się do każdego pliku JavaScript, do którego ma prawo zapisu [2]. Ofiary fałszywych aktualizacji mogą później stać się celem ransomware [2]; zob. też drive-by download.
  • Blokady. Jedna przejęta strona albo jedna pominięta aktualizacja może sprawić, że cała grupa stron zacznie rozsyłać złośliwy kod i trafi na listy blokowanych w wyszukiwarkach i programach antywirusowych [2]; zob. wpis na czarną listę (blacklisting).

Jak się bronić

Podstawą jest izolacja, zgodna z zasadą najmniejszych uprawnień. Sucuri zaleca osobne konto cPanel dla każdej strony, a na VPS rozdzielenie stron przez PHP-FPM [2]:

  1. Każda strona we własnym katalogu domowym [2].
  2. Pliki i katalogi strony należą do jej własnego użytkownika [2].
  3. Proces PHP strony działa jako ten sam użytkownik [2].

Przy kilku kontach cPanel Sucuri zaleca też włączenie ochrony przed dowiązaniami symbolicznymi w ustawieniach Apache i użycie dyrektywy open_basedir [2]. Dokumentacja PHP wyjaśnia, że open_basedir ogranicza pliki dostępne dla PHP do wskazanego drzewa katalogów, a dowiązania symboliczne są rozwiązywane, więc nie da się jej nimi obejść [4]. Ta sama dokumentacja ostrzega, że to tylko dodatkowa siatka bezpieczeństwa, która nie jest kompletna i nie może być jedyną ochroną [4].

Pozostałe środki:

Przy infekcji trzeba czyścić wszystkie strony na koncie naraz i zmienić wszystkie hasła, także do baz danych; opisuje to hasło czyszczenie przejętej strony.

Historia i przykłady

We wrześniu 2016 roku Sucuri opisał masowe przejmowanie stron WordPress na serwerach współdzielonych przez odczyt wp-config.php sąsiednich witryn [1]. Jako najgłośniejszy przykład luki pobierania plików wskazał starą wersję wtyczki RevSlider, która od ujawnienia w 2014 roku doprowadziła do przejęcia setek tysięcy stron [1]. W styczniu 2024 roku Sucuri wskazał kampanię Balada Injector, której kod szuka innych stron do zainfekowania jak najwyżej w strukturze katalogów [2].

TAB. 2

Przypisy

4
  1. [1] Hacking WordPress Sites on Shared Servers · Sucuri
  2. [2] The Dangers of Lateral Movement & Website Cross Contamination · Sucuri
  3. [3] Hardening WordPress — Advanced Administration Handbook · WordPress.org
  4. [4] Description of core php.ini directives: open_basedir · The PHP Group
TAB. 3

Hasła w tym artykule

17
TAB. 4

Linkują tutaj

5

Wszystkie kategorie → · Hasło w słowniku →

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com