Рекомендации по безопасности: CVE-2026-80212 и CVE-2026-80213

Опубликовал hsbt 27-08-2026
Перевел: ablzh

В геме resolv, поставляемом с Ruby, были обнаружены две уязвимости. Этим уязвимостям присвоены CVE идентификаторы CVE-2026-80212 и CVE-2026-80213. Мы рекомендуем обновить гем resolv.

CVE-2026-80212: Исчерпание памяти через вредоносные DNS-ответы

Приложение, которое выполняет разрешение имени хоста (resolves a hostname), на которое может повлиять злоумышленник (например, адрес вебхука или переданный пользователем URL), можно заставить бесконтрольно потреблять память. Злоумышленник направляет домен на подконтрольный ему сервер имен и возвращает ответы, которые библиотека сохраняет навсегда. Повторные запросы приводят к росту процесса до тех пор, пока не закончится память и сервис не остановится.

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

Приложение, которое проверяет имя хоста по списку разрешенных (allow list) или через SSRF-фильтр, а затем выполняет его разрешение, можно заставить запросить домен, отличный от проверенного. Строка, проходящая проверку, и имя, отправляемое в сеть, не совпадают, поэтому соединение может быть установлено с хостом, который приложение никогда не одобряло. Для этого требуется имя хоста, превышающее ограничения длины 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.

Что проверить

Уязвимость затрагивает только код, который выполняет разрешение имен через этот гем. Обычные сокетные соединения, включая Net::HTTP и всё, что построено на TCPSocket, используют резолвер операционной системы и не затронуты. Net::HTTP загружает этот гем, но только ради его регулярных выражений для IP-адресов, поэтому загруженный гем сам по себе не является признаком уязвимости.

Приложение обращается к уязвимому коду при прямом вызове Resolv, при загрузке resolv-replace, которая перенаправляет все сокетные разрешения имен через этот гем, или через зависимость, выполняющую разрешение имен таким способом. Проверьте как свои зависимости, так и собственный код.

Рекомендуемое действие

Обновите гем resolv до версии 0.7.2. Для серии Ruby 3.3 обновите до 0.3.2.

Для ветки 0.2.x, поставляемой с серией Ruby 3.2, релиз не планируется, так как эта серия достигла окончания срока поддержки (end of life). Вместо этого установите туда resolv 0.7.2.

Благодарности

Благодарим dalifit за обнаружение этих уязвимостей.

История

  • Впервые опубликовано 2026-08-27 00:00:00 (UTC)

Последние новости

Вышел Ruby 3.4.11

Вышел Ruby 3.4.11. Это очередное обновление по графику релизов, содержащее исправления ошибок.

Опубликовал nagachika 23-09-2026

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