Sajber bezbednost
React2Shell (CVE-2025-55182): Kritičan RCE u React Server Components — ko je ugrožen i kako se patchuje

U decembru 2025, React ekosistem je dobio alarm najvišeg nivoa: kritična CVSS 10.0 ranjivost u React Server Components (RSC), poznata kao “React2Shell” (CVE-2025-55182). Ovo nije klasičan front-end problem tipa XSS. Radi se o server-side obradi RSC zahteva, a u izloženim sistemima može dovesti do remote code execution (RCE).
Zašto je ovo važno: moderni stack-ovi (posebno Next.js App Router) široko koriste RSC, često i podrazumevano. To znači da je server attack surface potencijalno veći nego što timovi očekuju. Ako je aplikacija javno dostupna i koristi RSC i/ili Server Actions, tretiraj ovo kao incident: patch odmah.
Šta je CVE-2025-55182 (React2Shell)?
CVE-2025-55182 je kritična ranjivost u RSC server paketima (tzv. “Flight” protokol / server-side renderovanje server komponenti). U pogođenim verzijama, nedovoljna validacija payload-a omogućava napadaču da napravi specijalno kreirane zahteve koji pokreću nebezbednu obradu na serveru — potencijalno i RCE, u zavisnosti od okruženja.
Ko je ugrožen?
Rizik je najveći ako je ispunjeno nešto od sledećeg:
- U produkciji koristiš Next.js App Router (RSC je često default)
- Koristiš Server Actions / server function endpoint-e (ili slične server-side endpoint-e vezane za RSC)
- U deployment-u imaš react-server-dom-* pakete koji se koriste za RSC
- RSC endpoint-i su javno dostupni i nemaš strogu filtraciju/rate-limit/WAF
Bitna napomena: čak i ako ti ne misliš da “izlažeš server function endpoint-e”, možeš biti ranjiv ako tvoja aplikacija podržava React Server Components. Zato se ovaj problem posmatra kao širi ekosistem rizik.
Šta napadač može da uradi?
U najgorem scenariju, eksploatacija može dovesti do izvršavanja koda na aplikacionom serveru. U praksi to često znači:
- Čitanje secrets i env var-ova (API ključevi, tokeni, DB kredencijali)
- Ubacivanje backdoor-a ili persistencije (u zavisnosti od permisija)
- Lateralno kretanje ka internim servisima ako je mreža otvorena
- Uticaj na dostupnost i kontinuitet poslovanja
Povezani problemi: CVE-2025-55183 i CVE-2025-55184 (i dodatak CVE-2025-67779)
Nakon React2Shell objave, izašli su i prateći RSC problemi: source code exposure (CVE-2025-55183) i denial of service (CVE-2025-55184). Kasnije je u nekim advisory-ima pojašnjeno da je inicijalni DoS fix bio nepotpun i da je kompletan fix izašao pod CVE-2025-67779. Zaključak: nemoj stati na “prvoj patch verziji” — idi na poslednje preporučene fix verzije.
Hitna sanacija (patch brzo, pa verifikuj)
Ovo tretiraj kao incident response zadatak. Cilj nije samo “upgrade dependency”, nego i da potvrdiš da produkcija stvarno radi patchovani build.
- Inventory: potvrdi da li koristiš RSC/App Router/Server Actions
- Patch: upgrade React RSC server pakete i framework verzije na patchovane release-ove
- Rebuild i redeploy: obavezno ažuriraj lockfile i build output (ne oslanjaj se na cache)
- Verifikuj: proveri da je patchovana verzija u deployed artefaktu (image/container/build output)
- Monitoriši: pogledaj logove za spike-ove prema RSC endpoint-ima i 5xx burst
- Rotiraj secrets ako sumnjaš da je aplikacija bila izložena dok je bila ranjiva
Ako koristiš Next.js: najbrži bezbedan fix
Next.js je objavio security advisory i ima fix tool koji može deterministički da podigne verzije i smanji greške pri upgrade-u (korisno ako imaš više aplikacija).
- Prati Next.js advisory i upgrade na preporučene patch verzije
- Pokreni zvanični fix tool (pomaže da ne promašiš verzije)
- Po potrebi invalidiraj build cache i redeploy
- Potvrdi verzije u produkciji (ne samo lokalno)
Kako da potvrdiš da je produkcija stvarno patchovana
Najčešća greška je: “upgradeovali smo lokalno” a produkcija i dalje radi na starom image-u ili cached build-u. Verifikacija je obavezna.
- Proveri deployed verzije react-server-dom-webpack / react-server-dom-parcel / react-server-dom-turbopack (zavisno šta koristiš)
- Potvrdi da Next.js/React verzije u produkciji odgovaraju advisory preporukama
- Pregledaj reverse proxy/WAF logove za sumnjive pattern-e (neobične veličine payload-a, ponavljani error-i)
- Dodaj kratkoročne alarme za nagli rast 5xx (korisno za DoS pokušaje)
Hardening posle patch-a (smanji blast radius)
Patch je prvi korak. Hardening smanjuje posledice budućih 0-day problema.
- Least privilege za aplikaciju i bazu (minimalne permisije)
- Ograniči outbound (egress) sa app kontejnera gde ima smisla
- Rate-limit i filtracija rizičnih endpoint-a na edge/proxy nivou
- CI/CD tokeni i secrets moraju biti strogo scope-ovani i rotirani
- Gde može, koristi kratkoročne kredencijale
Bonus: Vite dev server (CVE-2025-30208) — nikad ne izlaži dev internetu
Odvojeno od React2Shell-a, Vite dev server je imao kritičnu ranjivost za arbitrary file read (CVE-2025-30208). Problem postaje ozbiljan ako je dev server izložen mreži/internetu (npr. --host) u nebezbednom okruženju.
- Ne izlaži Vite dev server javno
- Upgrade Vite na patch verzije i interno
- Dev alati iza VPN-a / IP allowlist-a
- Ako je dev server bio izložen, tretiraj secrets kao potencijalno kompromitovane
Reference (zvanični izvori)
- React advisory (CVE-2025-55182): https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
- React follow-up (CVE-2025-55183/55184): https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components
- Next.js advisory + fix tool: https://nextjs.org/blog/CVE-2025-66478
- Fix tool repo: https://github.com/vercel-labs/fix-react2shell-next
- Vercel bulletin: https://vercel.com/react2shell
- Microsoft analysis: https://www.microsoft.com/en-us/security/blog/2025/12/15/defending-against-the-cve-2025-55182-react2shell-vulnerability-in-react-server-components/
- Vite dev server GHSA example: https://github.com/advisories/GHSA-x574-m823-4x7w
- CVE-2025-30208 explainer: https://www.offsec.com/blog/cve-2025-30208/
Zaključak
React2Shell je podsetnik da moderni web feature-i mogu otvoriti nove server-side napadne površine. Najbolji odgovor je disciplina: patch brzo, rebuild/redeploy, verifikuj produkciju, monitoriši signale napada i hardenuj okruženje. Ako koristiš Next.js App Router sa RSC/Server Actions, ovo je prioritet #1.

