zabezpieczenia

Autor: Cezary Weżgowiec8 grudnia 2025

Strony internetowePoradnikProgramowanie

Krytyczna luka RCE w React Server Components. Czy Twój serwer jest bezpieczny?

Jeśli używasz React 19, Next.js 15/16 lub eksperymentujesz z React Server Components (RSC), musisz to przeczytać. Kilka dni temu światem frontendowym wstrząsnęła informacja o luce z najwyższym możliwym priorytetem zagrożenia (CVSS 10.0).

W tym poście wyjaśnię, na czym polega problem, kto jest zagrożony i jak natychmiast zabezpieczyć swoją aplikację.

Co się stało?

Na początku grudnia 2025 roku zespół React oraz Vercel ujawnili krytyczną podatność oznaczoną jako CVE-2025-55182 (często nazywaną "React2Shell").

  • Typ błędu: Unauthenticated Remote Code Execution (RCE) – zdalne wykonanie kodu bez uwierzytelniania.
  • Wynik CVSS: 10.0 / 10.0 (Krytyczny).
  • Gdzie leży problem: W protokole "Flight", którego React używa do przesyłania danych między serwerem a klientem w architekturze React Server Components.

Mówiąc prościej: atakujący może wysłać do Twojego serwera specjalnie spreparowane żądanie HTTP, które zmusi serwer do wykonania dowolnego złośliwego kodu. Nie potrzebuje do tego loginu ani hasła.

Techniczne szczegóły (w skrócie)

Problem wynika z niebezpiecznej deserializacji danych. Kiedy korzystasz z Server Components, React serializuje drzewo komponentów na serwerze i przesyła je do klienta. Podatność pozwala na wstrzyknięcie złośliwego payloadu w procesie odwrotnym (gdy klient komunikuje się z "Server Functions" lub actions), co prowadzi do przejęcia kontroli nad procesem Node.js obsługującym Twoją aplikację.

Czy jesteś zagrożony?

Twoja aplikacja jest podatna na atak, jeśli spełniasz poniższe warunki:

  1. Używasz React Server Components (RSC).
  2. Korzystasz z React w wersji 19.0.x, 19.1.x lub 19.2.0.
  3. Używasz frameworków takich jak Next.js (wersje 15.x, 16.x) w konfiguracji domyślnej (App Router).

Dobra wiadomość: Jeśli Twoja aplikacja to klasyczne SPA (Single Page Application) renderowane tylko po stronie klienta (Client-Side Rendering), nie jesteś zagrożony. Problem dotyczy warstwy serwerowej Reacta.

Jak naprawić problem? (Natychmiast!)

Zespoły React i Next.js zareagowały błyskawicznie. Poprawki są już dostępne.

1. Dla użytkowników Next.js

Musisz zaktualizować Next.js do najnowszej wersji patcha. Wykonaj w terminalu:

npm install next@latest react@latest react-dom@latest
# lub
yarn upgrade next react react-dom
# lub
pnpm update next react react-dom

Upewnij się, że masz wersję wyższą niż te podatne (np. dla Next.js 15 celuj w 15.0.5+ lub odpowiedni patch dla Twojej gałęzi).

2. Sprawdź wersje paczek react-server-dom-*

Jeśli używasz niestandardowej konfiguracji (np. z webpackiem lub parcel), sprawdź wersje paczek takich jak react-server-dom-webpack. Muszą one być zaktualizowane do wersji:

  • 19.0.1
  • 19.1.2
  • 19.2.1

Co dalej?

Ta sytuacja to brutalne przypomnienie, że nowoczesny frontend to już nie tylko "wyświetlanie HTML-a". Wraz z adopcją komponentów serwerowych (RSC), frontendowcy stają się de facto full-stackowcami odpowiedzialnymi za bezpieczeństwo serwera.

Moje rekomendacje na przyszłość:

  • Traktuj aktualizacje i next jako priorytetowe, zwłaszcza w architekturze RSC.
  • Zainstaluj narzędzia do skanowania zależności (np. npm audit, Snyk lub Dependabot).
  • Śledź oficjalny blog Reacta i Next.js.

Rozpocznij swój sukces w internecie - bezpłatna konsultacja bez zobowiązań

Otrzymaj wycenę dostosowaną do Twoich potrzeb biznesowych. Podczas 30-minutowej konsultacji poznamy Twoje cele, zaproponujemy optymalne rozwiązania technologiczne i przedstawimy przejrzysty plan działania.

Używamy ciasteczek

Używamy ciasteczek, aby zapewnić najlepsze doświadczenia na naszej stronie. Aby uzyskać więcej informacji o tym, jak używamy ciasteczek, zapoznaj się z naszą polityką ciasteczek.

Klikając "Akceptuj", zgadzasz się na nasze wykorzystanie ciasteczek.
Dowiedz się więcej

Krytyczna luka RCE w React. Czy Twój serwer jest bezpieczny?