Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions uk/news/_posts/2026-04-21-erb-cve-2026-41316.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
layout: news_post
title: "CVE-2026-41316: обхід захисту ERB @_init під час десеріалізації через def_module / def_method / def_class"
author: "k0kubun"
translator: "Andrii Furmanets"
date: 2026-04-21 07:51:00 +0000
tags: security
lang: uk
---

Ми опублікували повідомлення з безпеки щодо CVE-2026-41316.

## CVE-2026-41316: обхід захисту ERB `@_init` під час десеріалізації через `def_module` / `def_method` / `def_class`

В ERB існує вразливість десеріалізації. Цій вразливості присвоєно ідентифікатор CVE [CVE-2026-41316](https://www.cve.org/CVERecord?id=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](https://github.com/TristanInSec) за виявлення цієї проблеми.

## Історія

* Початково опубліковано 2026-04-21 07:51:00 (UTC)
50 changes: 50 additions & 0 deletions uk/news/_posts/2026-04-21-ruby-4-0-3-released.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
layout: news_post
title: "Вийшов Ruby 4.0.3"
author: k0kubun
translator: "Andrii Furmanets"
date: 2026-04-21 08:45:44 +0000
lang: uk
---

Вийшов Ruby 4.0.3.

Цей реліз містить лише ERB 6.0.1.1, що виправляє [CVE-2026-41316](/uk/news/2026/04/21/erb-cve-2026-41316/).

Якщо ваш застосунок викликає `Marshal.load` для недовірених даних і має одночасно завантажені `erb` та `activesupport`, будь ласка, оновіть ERB до версії 4.0.3.1, 4.0.4.1, 6.0.1.1, 6.0.4 або новішої. Для цього можна скористатися цим релізом Ruby 4.0.3.

## Розклад релізів

Ми плануємо випускати найновішу стабільну версію Ruby (наразі Ruby 4.0) кожні два місяці після останнього планового релізу. Ruby 4.0.4 вийде у травні, 4.0.5 — у липні, 4.0.6 — у вересні та 4.0.7 — у листопаді.

Якщо з'явиться зміна, яка суттєво впливає на користувачів, реліз може відбутися раніше запланованого терміну, а наступний графік може відповідно зміститися.

## Завантаження

{% assign release = site.data.releases | where: "version", "4.0.3" | first %}

* <{{ release.url.gz }}>

SIZE: {{ release.size.gz }}
SHA1: {{ release.sha1.gz }}
SHA256: {{ release.sha256.gz }}
SHA512: {{ release.sha512.gz }}

* <{{ release.url.xz }}>

SIZE: {{ release.size.xz }}
SHA1: {{ release.sha1.xz }}
SHA256: {{ release.sha256.xz }}
SHA512: {{ release.sha512.xz }}

* <{{ release.url.zip }}>

SIZE: {{ release.size.zip }}
SHA1: {{ release.sha1.zip }}
SHA256: {{ release.sha256.zip }}
SHA512: {{ release.sha512.zip }}

## Коментар до релізу

Багато комітерів, розробників і користувачів, які надсилали звіти про помилки, допомогли нам зробити цей реліз.
Дякуємо за їхній внесок.