День 29 нояб­ря 2025 года стал кош­марным для всех вла­дель­цев веб‑при­ложе­ний на React Server Components. ИБ‑иссле­дова­тель нашел воз­можность одним POST-зап­росом без авто­риза­ции исполнять коман­ды на сер­вере. Опас­ность по CVSS — 10 из 10. Сегод­ня раз­берем, как работа­ет эта уяз­вимость, и срав­ним фей­ковый PoC с реаль­ной экс­плу­ата­цией.

warning

Статья име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности, про­водя­щих тес­тирова­ние в рам­ках кон­трак­та. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Рас­простра­нение вре­донос­ных прог­рамм, наруше­ние работы сис­тем и наруше­ние тай­ны перепис­ки прес­леду­ются по закону.

Ис­сле­дова­тель Лах­лан Дэвид­сон сооб­щил о кри­тичес­кой проб­леме в про­токо­ле React Flight Protocol, с которым работа­ют ком­понен­ты React. Информа­цию об уяз­вимос­ти опуб­ликова­ли 3 декаб­ря под номером CVE-2025-55182.

В этот же день выш­ли пат­чи и рекомен­дации по защите. Но, как ты зна­ешь, не все обра­щают вни­мание на необ­ходимость про­пат­чить­ся, а это отличный шанс для пен­тесте­ров и охот­ников за баг­баун­ти!

В боль­шей сте­пени под угро­зой ока­зались про­екты на Next.js, фрей­мворк по умол­чанию исполь­зует RSC в App Router. Но есть смысл про­верять все, что кру­тит­ся на эко­сис­теме React: в нед­рах может работать неп­ропат­ченный RSC.

Ес­ли ты уже пытал­ся разоб­рать­ся с этой CVE, у тебя мог­ла воз­никнуть в голове путани­ца из‑за раз­ных под­ходов и раз­ных цепочек экс­плу­ата­ции. Изна­чаль­но уяз­вимос­тей было две: CVE-2025-55182 в RSC и CVE-2025-66478 в Next.js. Потом вто­рую помети­ли как дуб­ликат.

Дру­гая при­чина путани­цы в том, что пос­ле появ­ления информа­ции о CVE на GitHub выложи­ли мно­го PoC. Боль­шинс­тво из них ими­тиру­ет уяз­вимость и экс­плу­ата­цию, исполь­зуя лишь часть механиз­мов. Всё ради хай­па и звез­дочек!

 

Базовые понятия

React Server Components (RSC) — это часть эко­сис­темы React: ком­понен­ты, которые рен­дерят­ся на сер­вере. Код ком­понен­тов недос­тупен кли­енту. Ком­понен­ты воз­вра­щают в бра­узер дан­ные в спе­циали­зиро­ван­ном фор­мате Flight Protocol.

Flight Protocol — это внут­ренний про­токол сери­али­зации для обме­на дан­ными меж­ду кли­ентом и сер­вером. Он спо­собен обра­баты­вать раз­ные типы дан­ных, вклю­чая сери­али­зован­ное дерево ком­понен­тов React, импорты кли­ент­ско­го кода, проп­сы, фун­кции и сами дан­ные. Под­держи­вает потоко­вую переда­чу дан­ных, раз­бивая дан­ные на отдель­ные чан­ки и прис­ваивая каж­дому свой номер. Каж­дый чанк— это пол­ноцен­ный объ­ект с дан­ными.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии