Повідомлення про вразливості: CVE-2026-80212 та CVE-2026-80213

Опублікував hsbt 27-08-2026
Переклав: Andrii Furmanets

У гемі resolv, що постачається разом із Ruby, виявлено дві вразливості. Їм присвоєно ідентифікатори CVE CVE-2026-80212 та CVE-2026-80213. Рекомендуємо оновити гем resolv.

CVE-2026-80212: вичерпання пам’яті через шкідливі DNS-відповіді

Застосунок, який виконує DNS-пошук для імені хоста, на яке може впливати зловмисник, наприклад адреси вебхука або URL, наданої користувачем, можна змусити споживати пам’ять без обмежень. Зловмисник спрямовує домен на підконтрольний йому сервер імен і повертає відповіді, які бібліотека зберігає назавжди. Повторні запити збільшують обсяг пам’яті, зайнятої процесом, доки пам’ять не вичерпається й сервіс не зупиниться.

CVE-2026-80213: обхід перевірки імені хоста

Застосунок, який перевіряє ім’я хоста за списком дозволених імен або фільтром SSRF, а потім виконує для нього DNS-пошук, можна змусити шукати інший домен, ніж той, який було перевірено. Рядок, що проходить перевірку, та ім’я, яке надсилається в мережу, відрізняються, тому з’єднання може бути встановлене з хостом, якого застосунок ніколи не дозволяв. Для цього потрібне ім’я хоста, яке перевищує обмеження довжини DNS, тому перевірки, що відхиляють імена довші за 255 октетів або мітки довші за 63 октети, не вразливі до цієї проблеми.

Уражені версії

  • Гем resolv від 0.4.0 до 0.7.1 включно
  • Гем resolv 0.3.1 і старіші версії

Версія, що постачається разом із Ruby, залежить від серії: Ruby 4.0 містить resolv 0.7.0, Ruby 3.4 — 0.7.1, а Ruby 3.3 — 0.3.1.

Що перевірити

Уражено лише код, який виконує DNS-пошук через цей гем. Звичайні з’єднання через сокети, зокрема Net::HTTP та все, що побудовано на TCPSocket, використовують засоби DNS-пошуку операційної системи й не уражені. Net::HTTP справді завантажує цей гем, але лише заради його регулярних виразів для IP-адрес, тому саме по собі завантаження гема не означає наявності загрози.

Застосунок звертається до вразливого коду, коли безпосередньо викликає Resolv, завантажує resolv-replace, який спрямовує весь DNS-пошук для сокетів через цей гем, або використовує залежність, що виконує DNS-пошук у такий спосіб. Перевірте як свої залежності, так і власний код.

Рекомендовані дії

Оновіть гем resolv до версії 0.7.2. Для серії Ruby 3.3 оновіть його до версії 0.3.2.

Випуск для гілки 0.2.x, що постачається із серією Ruby 3.2, не планується, оскільки термін підтримки цієї серії завершився. Натомість установіть resolv 0.7.2.

Подяки

Дякуємо dalifit за виявлення цих проблем.

Історія

  • Уперше опубліковано 2026-08-27 00:00:00 (UTC)

Останні новини

Більше новин...