Уязвимость React4Shell: как Next JS и React снова под угрозой

Уязвимость React4Shell: как Next JS и React снова под угрозой
Уязвимость React4Shell: как Next JS и React снова под угрозой (image source)

Уязвимость React4Shell: как Next JS и React снова под угрозой

Недавно наша команда столкнулась с серьезной проблемой безопасности в наших проектах на основе Next JS и React. Мы обнаружили уязвимость, получившую название React4Shell, которая позволила злоумышленникам выполнить произвольный код на наших серверах.

Как всё началось?

Уязвимость была обнаружена 3 декабря этого года и получила 10 баллов по шкале опасности CVSS 3.0. Она затрагивает версии 15.0.4 – 16.0.6 (Next JS) и React 19.0.0 – 19.2.0.

Почему это произошло?

Коренная причина уязвимости лежит глубже кода. Гонка за инновациями и сложность новой парадигмы «изоморфных» компонентов создали слепую зону. Разработчики React, сфокусированные на клиенте, могли перенести ментальную модель «код на сервере = безопасный код» на серверные компоненты.

Как мы столкнулись с этой уязвимостью?

Мы обнаружили уязвимость, когда нагрузка процессора на нашем сервере резко увеличилась до 100%. Мы выявили, что причиной была вредоносная программа, которая смогла обойти наши системы мониторинга.

Как мы решили проблему?

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

Урок на будущее

Мы рекомендуем всем обновить свои версии Next JS и React до последних, чтобы избежать подобных проблем. Также мы разработали новые системы мониторинга и защиты для наших серверов.

Уязвимость React4Shell стала для нас серьезным уроком, и мы надеемся, что наш опыт поможет другим избежать подобных проблем.

News Express Team
News Express Team

News Express' team of experienced editors and journalists delivers timely and reliable reporting on Russian politics, economics, technology and world affairs from a unique regional perspective. Stay informed with our dedicated journalists.

en_USEN