Отказ в обслуживании и потенциальное выполнение произвольного кода в большинстве версиях Ruby

в 5:19, , рубрики: remote code execution, ruby, метки: ,

Приветствую уважаемое Ruby сообщество.

Странно, что этой новости еще нет на Хабре, но вчера рано утром разработчики Ruby сообщили о найденном переполнении кучи при парсинге значений с плавающей точкой. Данной уязвимости был присвоен код CVE-2013-4164. Также ребята предупреждают что эта ошибка может вызвать как минимум отказ в обслуживании, но с определенной долей вероятности в Ruby приложения можно внедрить произвольный код.

Список уязвимых версий:

  • Все версии ruby 1.8
  • Все версии ruby 1.9 вплоть до 1.9.3 patchlevel 484
  • Все версии ruby 2.0 вплоть до 2.0.0 patchlevel 353
  • Все версии ruby 2.1 вплоть до 2.1.0 preview2
  • Все версии в trunk до ревизии 43780

Детали уязвимости

Детали в официальном посте достаточно скудны. Там написано, что при конвертации строки в значение с плавающей точкой, специально сформированная строка может вызвать переполнение кучи, что в свою очередь может привести к отказу в обслуживании и возможному выполнению произвольного кода. Уязвимыми являются все программы, которые используют данную конвертацию. Самый частый пример — принятие и парсинг JSON из третьих источников.

Уязвимый код может выглядеть следующим образом:

untrusted_data.to_f

Однако, уязвим любой код, который создает значения с плавающей точкой из внешних источников, например:

JSON.parse untrusted_data

Решение

Разработчики рекомендуют обновление до ruby 1.9.3 patchlevel 484, ruby 2.0.0 patchlevel 353 либо ruby 2.1.0 preview2. Версия 1.8 является устаревшей и исправление уязвимости не планируется. Пользователям ruby 1.8 рекомендуется обновиться на более свежие версии.

Автор: damwihu

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js