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 ru/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: "ablzh"
date: 2026-04-21 07:51:00 +0000
tags: security
lang: ru
---

Мы опубликовали рекомендации по безопасности для 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). Мы рекомендуем обновить гем 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](https://github.com/TristanInSec) за обнаружение этой проблемы.

## История

* Изначально опубликовано 2026-04-21 07:51:00 (UTC)
50 changes: 50 additions & 0 deletions ru/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: "ablzh"
date: 2026-04-21 08:45:44 +0000
lang: ru
---

Вышел Ruby 4.0.3.

В этот релиз вошел только ERB 6.0.1.1, в котором исправлена [CVE-2026-41316](https://www.ruby-lang.org/ru/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 }}

## Комментарий к релизу

Многие коммиттеры, разработчики и пользователи, предоставившие отчеты об ошибках, помогли нам подготовить этот релиз.
Спасибо за их вклад.