Blog 24/7

zdalne wykonanie kodu (RCE)

TAB. 1Hasłoobie formy
Po angielskuremote code execution (RCE)
Którą formą pisaćobie formy Obie formy są w obiegu. Przy pierwszym wystąpieniu pisz „polski termin (english term)”, dalej sam polski.
Inne formyRCE · zdalne wykonywanie kodu
KategoriaPodatności i klasy błędów

Zdalne wykonanie kodu (RCE, remote code execution) to podatność, która pozwala atakującemu uruchomić własny kod na cudzym systemie bez wcześniejszego dostępu do tej maszyny. Może chodzić o serwer, na którym działa strona, albo o komputer użytkownika, który otworzył spreparowany plik w podatnej aplikacji [7]. RCE nie jest jedną słabością, tylko skutkiem: prowadzi do niego wiele różnych błędów. W katalogu CWE najbliższa mu jest słabość CWE-94, czyli wstrzyknięcie kodu, której skutkiem MITRE nazywa między innymi wykonanie dowolnego kodu [1].

Jak działa

Każda droga do RCE kończy się tym samym: dane od atakującego zostają potraktowane jak kod albo jak polecenie. MITRE opisuje CWE-94 jako sytuację, w której produkt buduje fragment kodu z danych pochodzących z zewnątrz i nie neutralizuje elementów, które mogą zmienić jego składnię lub działanie [1]. W PHP klasycznym przykładem jest konstrukcja eval(). Podręcznik PHP ostrzega, że jest bardzo niebezpieczna, bo pozwala wykonać dowolny kod PHP, odradza jej używanie i zaznacza, by nie przekazywać do niej danych od użytkownika bez uprzedniej walidacji [3].

Na serwerze WWW typowy przebieg ataku wygląda jak na schemacie poniżej.

RYS. 1RCE przez przesłanie pliku

Odmiany

Do zdalnego wykonania kodu prowadzą różne klasy błędów. Tabela zestawia najczęstsze w aplikacjach PHP.

Klasa błęduCo trafia do wykonania
wstrzyknięcie kodu (CWE-94)fragment kodu zbudowany z danych wejściowych [1]
wstrzyknięcie poleceń (command injection)polecenie powłoki systemu
wgranie dowolnego pliku (arbitrary file upload)przesłany plik z kodem PHP
deserializacja niezaufanych danych (insecure deserialization)kod ładowany przy tworzeniu obiektów [4]
LFI (Local File Inclusion) i RFI (Remote File Inclusion)plik dołączony do skryptu
SSTIwyrażenie w szablonie
błąd pamięci w aplikacji klienckiejkod ze spreparowanego pliku [7]

Deserializacja zasługuje na osobną uwagę. Podręcznik PHP ostrzega, by nie przekazywać danych od użytkownika do unserialize() niezależnie od opcji allowed_classes, bo odtwarzanie obiektów może załadować i wykonać kod [4]. Zaleca zamiast tego format JSON [4]. W WordPressie ten mechanizm znany jest jako PHP object injection.

RCE bywa też skutkiem łańcucha błędów. Race condition w obsłudze pliku tymczasowego może dać atakującemu chwilę na uruchomienie skryptu, zanim aplikacja go usunie [6]; zob. race condition.

W WordPressie

W WordPressie większość luk prowadzących do RCE dotyczy wtyczek i motywów; zob. podatność we wtyczce. Najgroźniejsze są te, które atakujący wykorzysta bez logowania, czyli podatność wykorzystywana bez uwierzytelnienia. Częsty wzorzec to formularz albo punkt końcowy przyjmujący pliki bez sprawdzenia typu: przesłany skrypt PHP staje się webshellem.

RCE może też wynikać z przejęcia konta administratora. Dokumentacja WordPressa zwraca uwagę, że kokpit domyślnie pozwala administratorom edytować pliki PHP wtyczek i motywów, i że jest to często pierwsze narzędzie, po które sięga atakujący po zalogowaniu, bo pozwala wykonać kod [5]. Dlatego edytor plików motywów i wtyczek warto wyłączyć stałą w pliku wp-config.php [5].

// wp-config.php: wyłącza edytor plików w kokpicie
define( 'DISALLOW_FILE_EDIT', true );

Dokumentacja ostrzega też, że prawo zapisu do plików jest potencjalnie niebezpieczne, zwłaszcza na hostingu współdzielonym, i zaleca możliwie ścisłe uprawnienia plików [5].

Zagrożenia i skutki

RCE to zwykle najcięższy możliwy skutek podatności, bo kod atakującego działa z uprawnieniami aplikacji. MITRE wymienia wśród skutków wstrzyknięcia kodu obejście mechanizmów ochrony, przejęcie uprawnień lub tożsamości, wykonanie dowolnego kodu i ukrywanie działań przed logami [1]. Na przejętym serwerze WordPressa atakujący może:

Jak się bronić

Podstawą jest usuwanie przyczyn. MITRE zaleca przebudowę kodu tak, by nie generował kodu dynamicznie, ścisłą walidację wejścia z listą dozwolonych wartości, uruchamianie kodu w izolowanym środowisku i testy dynamiczne [1]. W PHP oznacza to rezygnację z eval() [3] i z unserialize() na danych od użytkownika [4].

RYS. 2Warstwy obrony przed RCE

Na poziomie strony liczą się:

  1. szybka łatka (patch) po publikacji informacji o luce; dokumentacja WordPressa zaleca aktualizację rdzenia, oprogramowania serwera i usuwanie nieużywanych wtyczek [5];
  2. blokada wykonywania PHP w katalogu uploads;
  3. zasada najmniejszych uprawnień dla użytkownika bazy, procesu serwera i kont w panelu;
  4. WAF i wirtualne patchowanie (virtual patching) jako warstwa na czas przed wydaniem poprawki.

Historia i przykłady

W zestawieniu CWE Top 25 za 2024 rok wstrzyknięcie kodu (CWE-94) zajęło 11. miejsce, awansując o 12 pozycji z 23. miejsca rok wcześniej [2]. Dziesiąte miejsce zajęło nieograniczone przesyłanie plików niebezpiecznego typu (CWE-434), a siódme wstrzyknięcie poleceń systemu operacyjnego (CWE-78) [2].

CERT Polska 19 maja 2026 roku opisał CVE-2026-42099 w serwerze Pro Cloud Server firmy Sparx Systems: aplikacja zapisywała tymczasowo plik na dysku, a atakujący mógł drugim żądaniem uruchomić złośliwy plik PHP przed jego usunięciem, co prowadziło do zdalnego wykonania kodu [6].

RCE dotyczy też programów na komputerach użytkowników. Sekurak w lipcu 2026 roku opisał CVE-2026-14266, przepełnienie bufora na stosie w obsłudze archiwów xz w programie 7-Zip [7]. Skuteczne wykorzystanie może prowadzić do zdalnego wykonania kodu, a do ataku wystarczy, że ofiara otworzy spreparowane archiwum [7]. Sekurak zalecał natychmiastową aktualizację do wersji 26.02 [7].

TAB. 2

Przypisy

7
  1. [1] CWE-94: Improper Control of Generation of Code ('Code Injection') · MITRE
  2. [2] 2024 CWE Top 25 Most Dangerous Software Weaknesses · MITRE
  3. [3] eval — PHP Manual · The PHP Group
  4. [4] unserialize — PHP Manual · The PHP Group
  5. [5] Hardening WordPress · WordPress.org
  6. [6] Podatności w produktach firmy Sparx Systems (CVE-2026-42096 – CVE-2026-42100) · CERT Polska
  7. [7] Błąd w 7-Zip umożliwia zdalne wykonanie kodu (RCE) · Sekurak
TAB. 3

Hasła w tym artykule

27
TAB. 4

Linkują tutaj

52

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