CVE-2026-41316: Обход защиты десериализации ERB @_init через def_module / def_method / def_class
Опубликовал k0kubun 21-04-2026
Перевел: ablzh
Мы опубликовали рекомендации по безопасности для CVE-2026-41316.
CVE-2026-41316: Обход защиты десериализации ERB @_init через def_module / def_method / def_class
В ERB существует уязвимость десериализации. Этой уязвимости присвоен CVE идентификатор CVE-2026-41316. Мы рекомендуем обновить гем erb.
Область применения
Любое Ruby-приложение, которое вызывает Marshal.load для ненадежных данных И в котором загружены как erb, так и activesupport, уязвимо к выполнению произвольного кода. Это включает в себя:
- Приложения Ruby on Rails, которые импортируют ненадежные сериализованные данные — любое Rails-приложение (каждое Rails-приложение загружает и ActiveSupport, и ERB), использующее
Marshal.loadдля кэширования, импорта данных или IPC. - Инструменты Ruby, которые импортируют ненадежные сериализованные данные — любой инструмент, использующий
Marshal.loadдля кэширования, импорта данных или IPC. - Устаревшие Rails-приложения (до версии 7.0), которые все еще используют Marshal для сериализации сессий в cookie.
Детали
ERB реализует защиту @_init для предотвращения выполнения кода при реконструкции объектов ERB через Marshal.load на ненадежных данных. Однако ERB#def_method, ERB#def_module и ERB#def_class выполняют исходный код шаблона без проверки этой защиты, что позволяет злоумышленнику, контролирующему данные, переданные в Marshal.load, обойти защиту и выполнить произвольный код. В частности, def_module не принимает аргументов, что упрощает его вызов в рамках цепочки гаджетов десериализации.
Пожалуйста, обновите гем erb до версии 4.0.3.1, 4.0.4.1, 6.0.1.1, 6.0.4 или более поздней.
Затронутые версии
- гем erb 6.0.3 или более ранние
Благодарности
Спасибо TristanInSec за обнаружение этой проблемы.
История
- Изначально опубликовано 2026-04-21 07:51:00 (UTC)
Последние новости
Вышел Ruby 4.0.3
Вышел Ruby 4.0.3.
Опубликовал k0kubun 21-04-2026
Вышел Ruby 3.2.11
Вышел Ruby 3.2.11. В этот релиз вошло обновление гема zlib, устраняющее CVE-2026-27820.
Опубликовал hsbt 27-03-2026
Вышел Ruby 3.3.11
Вышел Ruby 3.3.11. В этот релиз вошло обновление гема zlib, устраняющее CVE-2026-27820, а также некоторые исправления ошибок.
Опубликовал hsbt 26-03-2026
Вышел Ruby 4.0.2
Вышел Ruby 4.0.2.
Опубликовал k0kubun 16-03-2026