Уязвимост с висока степен на критичност за отказ от обслужване (CVE-2026-23870) в React Server Components може да позволи на отдалечен атакуващ да замрази уязвими Next.js сървъри, като изпрати специално конфигурирана POST заявка към крайна точка на Server Function.

Проблемът е с CVSS оценка 7.5 и засяга пакетите React Server Components, използвани от приложения с React 19.x, включително много внедрявания на Next.js, използващи Server Actions.

Уязвимостта произтича от начина, по който React възстановява изпратените данни от форми, преди да се изпълни Server Action. Не е необходимо атакуващият да пробива в приложението или да получава достъп до защитени данни.

Вместо това той може да принуди сървъра да изпълни множество повторни проверки, да консумира ресурс на процесора (CPU) и да спре да отговаря на легитимните посетители.

React отстранява уязвимостта във версии 19.0.6, 19.1.7 и 19.2.6. Организациите, използващи по-стари версии, трябва да инсталират корекции за сигурност възможно най-скоро.

Съвременните React приложения използват Server Actions, за да позволят на изпратените форми да извикват директно бекенд функции, което изисква React да анализира HTTP заявките и да реконструира изпратените полета на формата преди изпълнението.

Уязвимият код обработва специални референции във форматираните данни от форми на React. Един тип референция, маркиран с $K, указва на React, че вложената структура на формата трябва да бъде възстановена. За да разреши всяка референция $K, React създава списък с всяко поле в изпратената заявка и след това проверява пълния списък за съвпадащи записи.

Тази логика става ресурсоемка, когато заявката съдържа голям брой референции и голям брой обикновени полета. Всяка референция $K задейства ново пълно сканиране на изпратения списък с полета. Например POST заявка, съдържаща 10 000 референции и 10 000 полета във формата, може да причини приблизително 100 милиона сравнения на низове.

Уязвимост в React Server Components

Концептуално доказателство (proof-of-concept), споделено от изследователя Саймън Кьок (Simon Koeck), показва, че заявка от около 900 KB може да задейства това натоварване. Проблемът не е в самия размер на заявката, а в повторната обработка, която React извършва при справянето с изпратената структура от данни.

Много Next.js среди работят върху Node.js, където синхронната обработка с високо натоварване на процесора може да блокира събитийния цикъл (event loop). Докато React сканира контролираните от атакуващия полета на формата, сървърът може да се окаже неспособен да обработи своевременно други входящи заявки.

В резултат на това легитимните потребители могат да изпитат бавно зареждане на страници, изтичане на времето за заявки (timeouts) или грешки HTTP 503. Повторните злонамерени POST заявки биха могли да поддържат екземпляр на приложението недостъпен достатъчно дълго, за да може проверките за състояние (health checks) или балансьорите на натоварването да го маркират като неизправен и да го премахнат от обслужване.

Уязвимостта е съществена, тъй като анализът се извършва преди да се изпълни логиката на Server Action на приложението. На практика защитите, внедрени в самата действие (action), не предотвратяват ресурсоемкия анализ на заявката.

Публично достъпните Server Actions са най-уязвими, но удостоверените приложения също могат да бъдат засегнати, когато всеки нормален потребител има достъп до уязвимата крайна точка.

В бюлетина за сигурност на React се казва, че специално конфигурирани HTTP заявки към крайни точки на сървърни функции могат да доведат до прекомерна консумация на процесорно време, изчерпване на оперативната памет или срив на сървъра. NIST класифицира проблема като CWE-400 (неконтролирана консумация на ресурси).

CVE-2026-23870 засяга следните пакети от React Server Components:

react-server-dom-webpack, react-server-dom-turbopack и react-server-dom-parcel.

Диапазоните от уязвими версии са React от 19.0.0 до 19.0.5, React от 19.1.0 до 19.1.6 и React от 19.2.0 до 19.2.5. Версиите с инсталирана корекция са 19.0.6, 19.1.7 и 19.2.6.

Потребителите на Next.js трябва да проверят дървото на разрешените зависимости (resolved dependency tree), вместо да разчитат само на топ-ниво версията на Next.js. Приложенията, използващи App Router, React Server Components или Server Actions, могат да включват един от засегнатите React server-dom пакети чрез своите фреймуърк зависимости.

От Cyber Security News по-рано съобщиха, че по-широкият набор от проблеми в React и Next.js засяга среди с App Router и крайни точки на Server Function, което прави проверката на зависимостите важна за екипите по разработка и поддръжка.

React промени засегнатия път за обработка на данни от форми, така че полетата да се сканират веднъж и да се обработват последователно, вместо да се извършва повторно сканиране на целия списък за всяка вложена референция. Това премахва условието за излишна повторна работа, стоящо зад изчерпването на процесорните ресурси.

Екипите трябва да актуализират React и съответните пакети на React Server Components до коригираната версия в поддържания от тях клон, да прекомпилират артефактите на приложението и да внедрят отново промените във всички засегнати среди.

Трябва също така да се прегледат контролите на периферните среди (edge) и обратните проксита (reverse-proxy), включително ограниченията за размер на тялото на POST заявките, контрола на честотата на заявките (rate limiting) и таймаутите. Тези мерки могат да намалят риска, но актуализацията на React остава основната корекция за сигурност, тъй като уязвимостта се намира в логиката за обработка на заявки в самия React.

Администраторите трябва да следят за необичайна POST активност към страници, които излагат Server Actions, особено за пикове от multipart form-data заявки, високо използване на процесора без съответстващ потребителски трафик, растеж на опашката със заявки и повторни провали на проверките за състояние (health checks).