
Wprowadzenie do problemu / definicja luki
Zespół Reacta opublikował poprawki dla dwóch nowych klas podatności w React Server Components (RSC), które umożliwiają atak typu Denial-of-Service (DoS) oraz ujawnienie skompilowanego kodu źródłowego funkcji serwerowych. Wydanie tych łatek nastąpiło po ubiegłotygodniowej łatce krytycznej luki RCE „React2Shell” (CVE-2025-55182). Poprzednie wersje poprawek okazały się częściowo niepełne, stąd konieczna jest ponowna aktualizacja do najnowszych wydań RSC.
W skrócie
- Nowe CVE:
- CVE-2025-55184 (DoS, CVSS 7.5) – niekompletna poprawka; uzupełniona jako CVE-2025-67779.
- CVE-2025-67779 (DoS, CVSS 7.5) – finalizuje fix na DoS.
- CVE-2025-55183 (wyciek kodu, CVSS 5.3).
- Dotyczy pakietów: react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack w liniach 19.0.x, 19.1.x, 19.2.x do wersji wskazanych niżej. Zalecane wersje: 19.0.3, 19.1.4, 19.2.3.
- Frameworki zależne (m.in. Next.js App Router) wymagają aktualizacji do wersji ogłoszonych przez vendorów (tabela niżej).
- Te dwie nowe luki nie umożliwiają RCE – łatka na React2Shell pozostaje skuteczna.
Kontekst / historia / powiązania
3 grudnia 2025 r. zespół Reacta ujawnił krytyczną lukę CVE-2025-55182 (CVSS 10.0) pozwalającą na nieautoryzowane RCE przez błędną deserializację ładunków RSC. gwałtownie wypuszczone patche zostały przyjęte przez ekosystem (np. Next.js), ale jak to często bywa po głośnym CVE, badacze znaleźli warianty – tym razem skutkujące DoS i wyciekiem kodu.
The Hacker News potwierdza, iż nowe luki zidentyfikowano podczas prób obejścia wcześniejszych poprawek, a wykorzystanie oryginalnego RCE w środowiskach produkcyjnych zostało już odnotowane, co dodatkowo podnosi priorytet aktualizacji.
Analiza techniczna / szczegóły luki
1) DoS przez deserializację ładunku RSC – CVE-2025-55184 oraz CVE-2025-67779
- Wektor: specjalnie przygotowane żądanie HTTP do dowolnego endpointu Server Functions w aplikacji obsługującej RSC.
- Skutek: nieskończona pętla podczas deserializacji po stronie serwera → zawieszenie procesu i blokada dalszych żądań (wyczerpanie CPU / workerów).
- Status poprawek: pierwotna łatka dla CVE-2025-55184 okazała się niepełna, dlatego opublikowano CVE-2025-67779 z uzupełnieniem fixu. Wersje bezpieczne: 19.0.3 / 19.1.4 / 19.2.3.
2) Ujawnienie skompilowanego kodu funkcji serwerowych – CVE-2025-55183
- Wektor: spreparowane żądanie HTTP do podatnej Server Function, która jawnie lub niejawnie „stringifikuje” argument.
- Skutek: odpowiedź może zawierać skompilowany kod źródłowy innej Server Function – w tym potencjalnie tajne wartości zakodowane w kodzie (np. „sekret” w łańcuchu przekazywanym do klienta lub inlined przez bundler). Zespół podkreśla, iż zmienne środowiskowe w runtime (np. process.env.SECRET) nie są bezpośrednio dotknięte – ryzyko dotyczy treści, które realnie trafiają do bundla/łańcucha znaków.
Wersje dotknięte i zależności
- Dotknięte wersje pakietów: dla DoS i wycieku – 19.0.0–19.2.2 z wyjątkami opisanymi przez zespół; finalne poprawki w 19.0.3 / 19.1.4 / 19.2.3.
- Dotknięte frameworki/bundlery: Next.js (App Router), React Router (RSC), Waku, Parcel RSC, @vite/plugin-rsc, Redwood SDK i inne korzystające z RSC.
Praktyczne konsekwencje / ryzyko
- Dostępność: DoS może skutecznie „wyłączyć” usługę HTTP (zawieszenie procesu serwera). W środowiskach „serverless” może to windować koszty (piki CPU / cold starty).
- Poufność/IP: wyciek skompilowanego kodu Server Functions może ujawnić reguły biznesowe lub sekrety twardo osadzone w kodzie (np. klucze testowe), jeżeli zostały w niego wbudowane.
- Łańcuch supply-chain: podatność jest „upstreamowa” (w samym React RSC), więc „rozlewa się” na frameworki. Wymagana jest koordynowana aktualizacja zarówno pakietów RSC, jak i frameworków (np. Next.js).
Rekomendacje operacyjne / co zrobić teraz
1) Natychmiastowe aktualizacje pakietów RSC
Zaktualizuj do 19.0.3 / 19.1.4 / 19.2.3 odpowiednio dla Twojej linii wersyjnej:
# przykład npm install react-server-dom-webpack@19.2.3 react@latest react-dom@latest npm install react-server-dom-parcel@19.2.3 npm install react-server-dom-turbopack@19.2.3(W razie monorepo/React Native – aktualizuj wyłącznie pakiety RSC, bez podbijania react/react-dom.)
2) Next.js (App Router) – wersje „fixed”
Zespół Next.js publikuje precyzyjne docelowe wersje (dla poszczególnych linii), np. 14.2.35, 15.0.7, 15.1.11, 15.2.8, 15.3.8, 15.4.10, 15.5.9, 16.0.10, a dla canary odpowiednio 15.6.0-canary.60 / 16.1.0-canary.19. Zalecane jest użycie narzędzia:
npx fix-react2shell-nextktóre automatycznie podniesie wersje według matrycy bezpieczeństwa. Uwaga: Pages Router nie jest podatny, ale aktualizacja przez cały czas jest rekomendowana.
3) Twarde zasady bezpieczeństwa kodu
- Nie osadzaj sekretów w kodzie źródłowym (dotyczy zwłaszcza funkcji serwerowych); używaj zmiennych środowiskowych i sejfów sekretów.
- Przejrzyj miejsca, gdzie argumenty funkcji są stringifikowane lub mogą trafić do odpowiedzi – minimalizuj echo danych użytkownika.
- Weryfikuj build produkcyjny (tree-shaking/inlining bundlera może nieoczekiwanie włączyć wartości do artefaktów).
4) Ochrony doraźne (do czasu wdrożenia poprawek)
- Rate-limiting / circuit-breaking na endpointach Server Functions.
- WAF/filtry żądań pod kątem anomalii w ładunkach RSC (niestandardowe typy/pola).
- Monitoruj CPU/worker saturation i HTTP 5xx/timeouty jako wczesny sygnał DoS.
(React współpracował z dostawcami hostingu nad tymczasowymi mitigacjami, ale to nie zastępuje aktualizacji).
5) Walidacja po aktualizacji – szybka checklista
- npm ls react-server-dom-* → potwierdź 19.0.3/19.1.4/19.2.3.
- Dla Next.js: npx fix-react2shell-next → sprawdź zgodność z tabelą wersji.
- Testy smoke dla:
- obsługi błędnych ładunków RSC (brak wieszania procesu),
- odpowiedzi Server Functions (czy nie zwracają fragmentów kodu).
Różnice / porównania z innymi przypadkami (jeśli dotyczy)
- RCE (CVE-2025-55182) vs DoS/Leak (CVE-2025-55184/67779/55183):
- RCE dawało pełne wykonanie kodu po stronie serwera bez autoryzacji.
- DoS „tylko” unieruchamia proces;
- Leak może ujawnić logikę biznesową lub twardo osadzone tajne wartości – to ryzyko reputacyjne i compliance, ale nie jest to pełne przejęcie jak w RCE.
- Łatka na RCE pozostaje skuteczna, jednak musisz zaktualizować ponownie z powodu niekompletnego fixu DoS.
Podsumowanie / najważniejsze wnioski
- Dwie nowe luki w React Server Components umożliwiają DoS oraz wyciek skompilowanego kodu.
- Zaktualizuj teraz do 19.0.3 / 19.1.4 / 19.2.3 oraz do zalecanych wersji Next.js (App Router).
- Nie trzymaj sekretów w kodzie; sprawdź, czy bundler nie wstrzykuje wartości do odpowiedzi.
- Traktuj to jako kolejny etap cyklu po-incydentowego po React2Shell – to normalne, iż po dużym CVE pojawiają się warianty.
Źródła / bibliografia
- React Blog – Denial of Service and Source Code Exposure in React Server Components (11 grudnia 2025) – oficjalne omówienie luk, wersje fixed i timeline. (React)
- React Blog – Critical Security Vulnerability in React Server Components (3 grudnia 2025) – opis i wytyczne dot. RCE (CVE-2025-55182) oraz sekcja zaktualizowana o nowe CVE. (React)
- Next.js Blog – Next.js Security Update: December 11, 2025 – matryca wersji App Router, narzędzie npx fix-react2shell-next, informacja o niekompletnym fixie i CVE-2025-67779. (Next.js)
- The Hacker News – New React RSC Vulnerabilities Enable DoS and Source Code Exposure (12 grudnia 2025) – przegląd i kontekst eksploitacji w świecie rzeczywistym. (The Hacker News)




