Next.js пусна извънредно обновяване за сигурност на 14 октомври, което отстранява две критични уязвимости, позволяващи отдалечено изпълнение на код (RCE) без автентикация, както и уязвимост от висока степен за отказ на услуга (DoS).

Едната уязвимост за изпълнение на код е в React Server Components, а другата – в librsvg, библиотеката с отворен код, която Next.js използва чрез пакета sharp за обработка на SVG изображения.

Корекциите са включени в Next.js 16.4.1 и 15.5.28 – текущите версии с активна поддръжка и дългосрочна поддръжка (LTS).

Какво беше поправено

Обновяването обхваща три отделни проблема. Vercel, компанията разработчик на Next.js, оцени и двете уязвимости за изпълнение на код като критични, всяка с CVSS оценка 9.5. Таблицата показва версиите, засегнати от всеки проблем, и версията, която го отстранява.

ПроблемЗасегнати версииКоригиран вКой е застрашен
Изпълнение на код чрез use cache ( GHSA-673q-mjm6-r5xr )От 16.0.0 до 16.4.016.4.1Приложения с App Router и активирани Cache Components, при които функция с use cache връща повече от един типизиран масив
Изпълнение на код чрез SVG изображения (CVE-2026-96889, GHSA-2464-fhr4-w9xw )От 10.0.0 до 15.5.27 и от 16.0.0 до 16.4.016.4.1 или 15.5.28 с sharp 0.35.5 или по-нова версияПриложения, които подават предоставени от атакуващ SVG файлове към sharp на Linux системи с glibc
Отказ на услуга чрез Server Actions ( GHSA-p3m5-59mp-jv5r )От 13.0.0 до 15.5.27 и от 16.0.0 до 16.4.015.5.28, 16.4.1Приложения с App Router, използващи поне едно Server Action

Кой е засегнат

Първата уязвимост за изпълнение на код е в React Server Components – функционалността на React, която изпълнява компоненти на потребителския интерфейс на сървъра. Предупреждението на React обхваща три пакета: react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack във версии от 19.0.0 до 19.3.0. В него уязвимостта е описана като засягаща „изключително редки случаи, при които отговорите пренасят множество типизирани масиви и стойност, контролирана от атакуващ“.

В приложение на Next.js задействането става чрез функция с use cache, която връща повече от един типизиран масив, така че са застрашени само приложения от версия 16, които са активирали Cache Components – функционалността зад use cache. Vercel препоръчва да се извърши надграждане дори ако приложението ви не съдържа такава функция.

Втората уязвимост е дефект в паметта в librsvg – библиотеката за рендиране на SVG изображения, до която Next.js достига чрез вградения пакет sharp. Според бюлетина за сигурност изпълнението на код е възможно, когато Next.js работи под Linux с glibc.

По подразбиране Next.js не оптимизира SVG файлове. Сервирането им през модула за оптимизация на изображения изисква активиране на настройката dangerouslyAllowSVG. Същата библиотека рендира изображения и за next/og – функционалността, генерираща визуализации за социални мрежи, когато тя се изпълнява в Node.js среда.

Третата уязвимост е проблем с отказ на услуга. В приложения с App Router, които дефинират поне едно Server Action, специално създадени заявки могат да доведат процеса на сървъра до максимално натоварване на процесора и да му попречат да обработва други заявки. Приложения, използващи Pages Router или нямащи Server Actions, не са засегнати.

Степента на риск може да варира според хостинг доставчика. От Netlify заявиха, че тяхната платформа не изпълнява пътя в кода за оптимизация на изображения и че дефектите имат ограничено въздействие върху тяхната инфраструктура, но въпреки това препоръчват надграждане.

Какво трябва да се направи

Надградете до Next.js 16.4.1, ако използвате версия 16, или до 15.5.28, ако използвате версия 15, след което компилирайте отново и разгърнете приложението.

В бюлетина на Vercel се посочва, че надграждането на Next.js кара пакетните мениджъри автоматично да доставят коригираната версия на sharp. Това важи за версия 16, тъй като 16.4.1 изисква sharp 0.35.5.

При версия 15 това може да не се случи. Версия 15.5.28 все още приема по-старата, засегната версия sharp 0.34.x, и надграждането върху съществуваща инсталация може да я остави на място. Проверете с npm ls sharp и обновете sharp до 0.35.5 или по-нова версия, ако е по-стара.

Ако не можете да надградите Next.js незабавно, за проблема с изображенията съществува временно решение: уверете се, че sharp е версия 0.35.5 или по-нова, или блокирайте рендирането на SVG в sharp с sharp.block({ operation: ["VipsForeignLoadSvg"] }), както е описано в бюлетина на sharp. За уязвимостите в use cache и Server Actions няма заобиколно решение и единствено надграждането ги отстранява.

Към 15 октомври бюлетините за use cache и Server Actions нямаха CVE идентификатори и не фигурираха във фийда с предупреждения на npm, който се използва от npm audit, така че скенерите за зависимости може да не предупредят за тях. Уязвимостта при изображенията се засича чрез собствения бюлетин на sharp.

Защо проблемът с изображенията се завръща

Това е третият път от август насам, при който обработката на изображения в Next.js води до уязвимост за изпълнение на код. През август дефект в libheif, достъпен през sharp, позволи изпълнение на код, когато оптимизаторът обработва модифицирано AVIF изображение. През септември проблем в next/og позволи контролиран от атакуващ текст да промени генерирания SVG.

Този път Next.js не промени собствения си код за изображения. Версия 16.4.1 включва същия оптимизатор като 16.4.0 и отстранява уязвимостта при изображенията чрез повишаване на версията на вградения sharp до 0.35.5, който съдържа коригирана версия на librsvg (2.63.2).

Дефектът в librsvg, CVE-2026-96889, беше публично оповестен на 23 септември и коригиран в sharp на 27 септември. Red Hat му даде оценка 7.8 и посочи, че експлоатирането му изисква потребителско взаимодействие, например отваряне на зловреден файл. Vercel оцени риска в Next.js на 9.5 и определи уязвимостта като достъпна през мрежата.

Изследователят, докладвал проблема в librsvg, Рафаел Б. Диас (Rafael B. Dias), твърди, че това е слабостта зад септемврийския дефект в next/og. Междувременно беше публикуван и работещ експлойт за предишната уязвимост, разработен за конкретна сървърна конфигурация.

Поддържащият проекта sharp също предупреждава, че дали дефектът ще завърши с изпълнение на код или само със срив, зависи от компилацията на Node.js на сървъра, тъй като официалните бинарни файлове на Node.js не са защитени срещу подобен тип атаки върху паметта.

Не е същото като React2Shell

Уязвимостта в React Server Components се намира в същите три пакета като React2Shell – уязвимостта с максимална степен на критичност, разкрита през декември 2025 г., която киберпрестъпниците експлоатираха масово. Настоящата обаче е със значително по-тесен обхват. React я описва като засягаща „изключително редки случаи, при които отговорите пренасят множество типизирани масиви и стойност, контролирана от атакуващ“.

Към 15 октомври няма публични доклади за използване на някоя от трите коригирани на 14 октомври уязвимости в реални атаки.