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 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

Больше новостей...