CVE-2026-41316: обхід захисту ERB @_init під час десеріалізації через def_module / def_method / def_class
Опублікував k0kubun 21-04-2026
Переклав: Andrii Furmanets
Ми опублікували повідомлення з безпеки щодо CVE-2026-41316.
CVE-2026-41316: обхід захисту ERB @_init під час десеріалізації через def_module / def_method / def_class
В ERB існує вразливість десеріалізації. Цій вразливості присвоєно ідентифікатор CVE CVE-2026-41316. Рекомендуємо оновити gem 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 не приймає аргументів, що робить його простим для виклику як частину ланцюжка ґаджетів десеріалізації.
Будь ласка, оновіть gem erb до версії 4.0.3.1, 4.0.4.1, 6.0.1.1, 6.0.4 або новішої.
Уражені версії
- gem 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. Цей реліз містить оновлення gem zlib, яке усуває CVE-2026-27820.
Опублікував hsbt 27-03-2026
Вийшов Ruby 3.3.11
Вийшов Ruby 3.3.11. Цей реліз містить оновлення gem zlib, яке усуває CVE-2026-27820, а також кілька виправлень помилок.
Опублікував hsbt 26-03-2026
Вийшов Ruby 4.0.2
Вийшов Ruby 4.0.2.
Опублікував k0kubun 16-03-2026