В серверных компонентах web-фреймворка React (RSC, React Server Components) устранена уязвимость (CVE-2025-55182), позволявшая через отправку запроса к серверному обработчику выполнить произвольный код на сервере. Уязвимости присвоен критический уровень опасности (10 из 10). Уязвимость проявляется в экспериментальных компонентах react-server-dom-webpack,...Подробнее: https://www.opennet.me/opennews/art.shtml?num=64373
PHP-дыряв! Кричали они.
PHP-неактуален! Вторили им, другие.
А вот нода, питоны и прочее новомодное - единственное правильное решение! Хором заявили они же, совместно.
От этой новости ПЫХа менее дырявой не стала)
Тут теорема г-на Эскобара во всей красе.> питоны и прочее новомодное
Причем тут питон, если нода на JS написана??
Но тебя никто не заставляет им пользоваться.
Можешь обмазываться ̶о̶в̶н̶о̶ ПХПой.
Нода на плюсах написана. Не путай с реактом, о котором речь в новости.
У плюсов и js синтаксис сишный так что разница не аж до луны
Он не путает. Просто в его мировосприятии ничего кроме JavaScript и HTML не существует.
в php подобные штуки были из коробки (allow_url_include и т.п.), а тут люди специально постарались, чтобы такое же сделатьгении, чо
были? когда? актуальный-то похапе имеет какие-то дыры бай дезигн?
Вот вам про ваш любимый компостер.
Читайте, наслаждайтесь.
Кстати, на опеннете нет новостей про CVE про компостер или перловый CPAN. Только про NPM пишут. Хотя в компостере очень много CVE.
Питоны новомодное? Python, пожалуй, постарше Пыха будет.
не-не-не, я не говорил, я говорил, что нода такое же убожество, как сам JS, в частности в новости про Bun писиал про ненужное, но всё потерли
> Уязвимость проявляется в экспериментальных компонентахА ведь когда в nginx была дырень, то все кричали "это экспериментальная фича, ничего страшного".
А тут такая трагедия.
странно, вроде бы серьёзный язык для адекватныx взрослыx теxнарей
Этот язык - альма матер всех сеньоров-растокодеров
Ээээээ... а конкретно тут язык - при чем?
язык отличный, не зря ведь 95% им пользуются
> а конкретно тут язык - при чем?Отличный ответ! Надо взять на вооружение против растсеров, которые катят бочку на Си.
>> а конкретно тут язык - при чем?
> Отличный ответ! Надо взять на вооружение против растсеров, которые катят бочку на
> Си.В случае с логическими ошибками? Берите конечно же.
> В случае с логическими ошибкамиА что, бывают синтаксические ошибки в скомпилированной программе?!
Серьёзный язык? Это ты про js? Хорошая шутка)) Язык гoвнокодеров. Некоторые сайты уже больше гига в памяти занимают и тормозят даже на мощном железе. Вот ради чего?
Сайты тормозят по разным причинам: фингерпринт какой-нибудь, аналитика, ну или мэйнеры на помойных сайтах. И JS там ни при чём по сути. Смешно представить серьёзный язык. Это надо будет выковыривать уточки памяти на сайтиках на плюсах или на сишке (серьёзные язычки, лол).
Охотно верится что монстроузные фреймворки и скрипты сумарно весящие чуть ли не больше самой страницы с разметкой и постоянно дёргающие DOM не тромозят, ни на что не влияют и так даже быстрей чем без них ведь JavaScript один из самых быстрых языков а парсинг HTML очень не затрное действие.
только они не дёргают постоянно DOM
там давным-давно уже т.н теневой DOM
> вроде бы серьёзный язык для адекватныx взрослыx теxнарейВ котором можно перетирать проверку свойств? Ну-ну.
не понимаю как реакт позволит выполнить код на сервере, если на сервере spring, а реакт у клиента )
Можно просто прочесть статью и там все будет понятно расписано
Реакт умеет SSR.
В конце нулевых году похожая, практически идентичная уязвимость в xml-rpc обошлась одному финансовому сервису в полмиллиона долларов, которые увели суммарно со всех электронных кошельков.Прошло почти 20 лет, и вот оно снова. Ждём интересных взломов.
Так то был несовременный скучный, сложный XML и дидовский RPC, фу, а это другое.
Вот прогресс! Просто закидываешь комманды на сервер и получаешь ответ! RPC некурильщика!
Хотел понять, чем вызвана уязвимость, перешёл по ссылке на пулл-реквест с исправлением из новости https://github.com/facebook/react/pull/35277 .Итого: 1 коммит, 270 строк удалено, 710 строк добавлено. Какой-то рефакторинг, какие-то функциональные изменения. Они там перед релизом все изменения в один коммит сквошат? Этакий опенсорз от фейсбука, чтоб было не очевидно есть в коде проблемы или нет (что собственно и привело к таким уязвимостям)? Спасибо хоть не обфусцировали, хотя уже и неважно.
В общем, не настолько мне интересно, где конкретно они накосячили, чтоб в их испражнениях ковыряться. Буду думать, что просто миллион обезьян посадили за компьютер, а когда оно перестало выдавать синтаксические ошибки, закоммитили в релиз.
О! Кто-то прошёл по ссылкам, разобрался в теме и добавил в новость ответ на мой вопрос.Спасибо тебе, Человечище!
> Они там перед релизом все изменения в один коммит сквошат?Вообще это нормальная практика, если все изменения по делу. А чтобы это понять, то нужно проекта знать.
> Вообще это нормальная практикаА, ну тогда ладно. Напишу Торвальдсу на почту, чтоб не заморачивался и перед релизом ядра все коммиты сквошил в один.
> А, ну тогда ладно. Напишу Торвальдсу на почту, чтоб не заморачивался и
> перед релизом ядра все коммиты сквошил в один.Какая тyпая аналогия /_-
Тут весь код относящийся к одному фиксу превратили в один коммит.
Атомарное изменение чтобы не писать
Fix issue
Fix issue (lost case)
и тдЕсли тебе сильно не нравится - не делай так, но чего бухтеть?
> Тут весь код относящийся к одному фиксу превратили в один коммит.Те, кто этот коммит делали, считают по-другому:
> We did a number of refactors [...]
> This also fixes a critical security vulnerability.Вы тоже видите это "also" во второй строке? И по коду я не вижу, чтобы упомянутое исправление с hasOwnProperties как-то коррелировало с другими изменениями.
> Если тебе сильно не нравится - не делай так
Я так и не делаю. Я делаю отдельный коммит с исправлением проблемы, а потом второй, с не относящиимся к уязвимости рефакторингом.
> чего бухтеть?
Чего бы и не побухтеть, если лидер рынка пишет один из самых популярных проектов на планете спустя рукава.
лол. это всё что они за день накрутивертили - запушили, перед начальством отчитаться - иначе это просто один багфикс и рефактор, а так - проведена серьёзная работа с кодом, включая устранение опаснейшей уязвимости. короче, по банану и спать хддд
>> Вообще это нормальная практика
> А, ну тогда ладно. Напишу Торвальдсу на почту, чтоб не заморачивался и
> перед релизом ядра все коммиты сквошил в один.Каждое атомарное изменение имеет свой коммит. Задачи нормально просто разбивать нужно. Толку в промежуточных коммитах, на которых ничего не работает правильно, в рамках задачи смысла нет. Это мусор. Аналогия с ядром неверная.
Просто поиском по странице ищешь hasOwnProperty и там будет 3 файла исправлено по делу. Вообще, у меня сложилось впечатление, что это излишнее паникёрство. Это тестовое или дев окружение. В противном случае, я не знаю, зачем клиенту давать вызвать на сервере функцию с произвольными данными.
а я тебе скажу откуда это. пока в локалке от руки черновик быстренько накидываешь - не всегда вовремя соображаешь приписать туду заменить на безопасную функцию. творческим и неорганизованным посвящается.
Нечего не понял. Реакт это же какая-то там javascript библиотека для добавления анимации на страницы, откуда там что-то на севере.
Так-то реакт разворачивается на сервере. В проде это нгинкс, в деве - нода. JS очень давно пользуется в бэкендах, вот то что нода не популярна для бэкенда в России и СНГ, это да. А вот на западе всякие стартапы пользуют обычно ноду. Кстати, только на ЛОРе и Опеннете такой хэйт JS, на западе не хэйтят JS.
ЖС отличный язык, сам по себе.Но вот область применения у него так себе.
Да нет, это ужаснейший отвратительный язык. У него performance хороший (спасибо браузерам) и хорошая экосистема (тулинг)
экосистема отличная, раз в неделю бедные копипастеры и председатели госсайтов поют ей оды
Вопросы к этому подходу стандартные:
1. Как?
2. На пуркуа?
рендерить куски страницы на сервере и фетчем/XHR подтягивать клиенту? Или фронтэндеры настолько тупые, что не могут без JSX?
где-то для ускорения первого открытия страницы( с сервака приходит не просто жс-код и пустая страница и потом происходит подтягивание данных и отрисовка, а сразу приходят готовые куски или их часть )
где-то для ма.как, у которых не работает жс в браузере нужно сделать так, чтобы сайт открывался-таки
Ну то есть они решили вместо какого-нить нормального шаблонизатора взять реакт? Как-то совсем всё нездорово в JS - мирке. Или у них нет вменяемых фреймворков для бэкенда?
Причём тут "шаблонизатор" и, тем более, жс ?Тут идея( причём уже много лет как существующая ) в том, что можно либо отдать шаблонную пустую веб-страницу + жс код, которые после чего будут парсится, подавать запросы к апи, их парсить, на их основе генерировать содержимое и всё это время пользователь будет видеть либо пустую страницу, либо - подобие лоадера
Либо - сгенерировать на сервере начальную страницу( в т.ч для залогиненного пользователя ), он её получит готовой и сразу увидит, т.е с ходу сможет предпринимать действия, притом, сам Реакт тоже подтянется но вместо кучи запросов к апи только чтобы отобразить первичное содержимое, на уже готовой странице у элементов просто установятся обработчики событий и далее будет обычная обработка полей ввода или нажатий на кнопки
Как ты для подобного функционала иной шаблонизатор к тому же реакту прикрутишь ?
Но от серверной отрисовки, в целом, многие давно начали отходить, т.к она жрёт ресурсы сервера, которые стоят денег для конторы. В отличие от ресурсов каждого конечного посетителя, которые бесплатны для конторы.
>Как ты для подобного функционала иной шаблонизатор к тому же реакту прикрутишь ?Да всё так же, как было до реактов/ангуларов/некстжс. Рендерим полностью страницу на похапэ, джанге, джиндже, а уж потом у клиента жабаскрипт начнёт делать своё чёрное дело. Я об том, что использование Реакта на сервере попахивает идиотизмом. Или жабаскриптеры действительно такие, какими их считают на опеннете - промахиваются ложкой мимо рта и ходят, опираясь на кулака?
Как ИМЕННО ?
Тут идея в том, что у тебя именно нормальная реактовская вёрстка или её часть, со всеми приблудами, "отрисовывается" на сервере и отдаётся готовой при первом посещении
Т.е, условно говоря, при открытии страницы, сразу отображается иконка профиля( и возможность зайти в него или в какие-то иные разделы ), но список товаров или новостей уже подгружается по ходу делаДля пехепе нужно пилить на пехепе, а не на реакте и тащить хрень вроде жиквери
Это примерно как плату с поверхностным монтажом паять утюгом на угле, а то и куском раскалённого в костре камня
Ну с сервера же обычный HTML отдаётся, без самопальных тэгов? Если так, то этот же HTML можно отрендерить чем угодно. И это "что угодно" (кроме printf) будет удобнее и проще JSX.
чуваак, похоже, ты просто не понимаешь сути дела. Там в любом случае самопальных тегов в итоге нет если это прод - оно всё в итоге конвертируется в HTML/CSS/JS и в таком виде идёт на клиент но изначально за счёт персональных тегов вёрстка становится наглядной и "самодокументируемой" если это не переусложнять мусором вроде тайпскрипта
Просто часть "отрисовывается" сразу на сервере при запросе( а порой и кешируется ), а часть - уже на клиенте и всё это при едином синтаксисеЛибо разбирайся, либо - не надо лезть. Но то что написано - это удивительная глупость
Откуда в JSX наглядность-то возьмётся, а уж тем более с самодокументируемостью?
>Просто часть "отрисовывается" сразу на сервере при запросеНу, собсна, как во многих других фреймворках
>и всё это при едином синтаксисеА зачем? В браузере это вынужденная мера - либо тонны коллбэков, либо эта шляпа с реактом - из двух зол выбирают меньшее. Но на сервере это можно использовать только если погромист настолько тупой, что кроме реакта ничего не осилил (или жабаскриптеры не осилили написать нормальный шаблонизатор)
Жесть. Ты реально не понимаешь о чём пишешь, даже близко
Всм, могут быть иные "гении", ещё и с тайпскриптом, которые даже простейший код в мусорку превратятРеакт с серверной отрисовкой - это комбинация самого реакта( на клиенте/браузере ) + штуки без него( т.е без жс. Но с генерацией в перспективе ответа на запрос чтобы всё норм выглядело и работало ) + штуки на сервере в т.ч с запросами к БД + штуки с полученными с сервера данными но сериализованными( т.е приведёнными к текстовой строке ) + на клиенте принятыми и распарсенными в т.ч в плане восстановления исходного состояния( хранилища состояний разные есть для реакта ) и накатывания данных на хранилища состояний( что в принципе отдельный модуль и может сильно различаться ) вплоть до логина( ну и вся необходимая вёрстка само-собой )
Вот даже то, что ты написал уже немножечко дурдомом попахивает. Получить данные из БД -> подставить их в шаблон -> вернуть строку(HTML) - на каком этапе тут вообще может понадобиться реакт с JSX со всеми его стейтами и пропсами? Мало того, если ты делаешь "отрисовку на сервере", то логичнее всего исходить, из того что у клиента всё должно работать не только без реакта, но и без жабаскрипта вообше. А уж потом дописать REST и добавить свой бандл.жс на страничку.
Ты шаблон на каком ЯП делать будешь ?
Вдобавок ко всему, что есть возможность отдавать лишь некоторые элементы готовыми, а некоторые, второстепенные - запрашивающимися с клиента и это в едином фреймворке и ЯП
Причём, при некоторых усилиях, те элементы могут работать даже без жс - т.е не только на уровне обработчиков нажатий кнопок, но и как элементы классических формПроблема в том, что ты не понимаешь, что веб изменился ещё лет 10-15 назад относительно того что ты говоришь и сильно
Даже базовых нюансов не понимаешь[едва ли, но попытаюсь хотя бы намекнуть] Продвинутые формы реакта с серверной отрисовкой позволяют в весьма сжатом виде передать нужное готовое содержимое без необходимости долгих запросов с клиента. И напомню про допиленные штуки вроде браузерной навигации через жс и многого иного.
Т.е получается, что с сервера может приходить не просто пустая заготовка, а готовый сайт, приём, с нужным уровень вложенности/навигации и конкретным состоянием( под конкретного пользователя. Если ты даже о состояниях на клиенте не понимаешь - то суть дискуссии примерно на уровне спора о качестве душевых кабинок с тем, кто даже ср*т в ведро а то и в ладошку. Про помывку и речи нет )
>Ты шаблон на каком ЯП делать будешь ?Ну на PHP, например?
>и это в едином фреймворке
А зачем - в JS есть куча шаблонизаторов чтобы готовую страничку отдать клиенту.
Ведь не может же так быть, что погромист настолько зашорен, что кроме реакта ничего не знает и не понимает. Правда, же не может такого быть?>что веб изменился ещё лет 10-15 назад относительно того что ты говоришь и сильно
На сервере ничего не изменилось. Просто неосиляторы(энтузиасты жабаскрипта) решили притащить туда клиентские фреймворки.
>Т.е получается, что с сервера может приходить не просто пустая заготовка, а готовый сайт
Невероятно! НЕМЫСЛИМО! С УМА СОЙТИ! Прямо с сервера, ГОТОВЫЙ HTML? Фнтастика! Вот бы на Опеннете, например так можно было сделать.
>приём, с нужным уровень вложенности/навигации и конкретным состоянием( под конкретного пользователя.Ну надо же! Раньше-то ни логинов ни регистраций не было а про сессии и не мечтали.
>Если ты даже о состояниях на клиенте не понимаешь
Вот и именно, что это у тебя на клиенте будет состояния, когда скрипты подгрузятся, если они вообще когда-нибудь подгрузятся. А "отрендереная" страница со всеми подставленными в неё данными, это само по себе "состояние".
В итоге получается классическое надевание штанов через голову.
Эксперименты, сэр.
> не исключавшего подстановку прототипаDeno в очередной раз показал своё превосходство над другими JS рантаймами
Но Deno мало где используется, в РФ вакансий вообще на него нет.
> Но Deno мало где используется, в РФ вакансий вообще на него нет.Потому что искать JS/Node разработчиков проще, а переучивать их почти и не надо. Знаю минимум 3 компании где Deno применяется в проде.
А он тут причем?
> А он тут причем?В нём дропнули сеттер __proto__ (Остался только синтаксис __proto__ при инициализации объекта, ну и Reflect.setPrototypeOf) ради безопасности, он неуязвим к prototype pollution
>next.jsМогли бы и без него обойтись. Если JS используешь - то зачем полумеры, скот вообще что угодно схавает.
Эксплойт не настоящий, чел навайбкодил 💩, и теперь ему пишут в issues добрые слова
И кто внедрил эту уязвимость в продукт? Известно?
>формирования элементов интерфейса на сервере, а не на стороне клиента.Кому они нужны, кроме этого клиента. Идея, изначально, "с душком".
Не пойму YouTube-то взломали в конце концов или нет?