Переполнение кучи при парсинге плавающей запятой (CVE-2013-4164)

Существует переполнение при парсинге номера с плавающей запятой в Ruby. Этой уязвимости назначен CVE идентификатор CVE-2013-4164.

Детали

В любое время во время конвертации строки в номер с плавающей запятой, специально набранная строка может вызвать переполнение кучи. Это может привести к отказу сервиса посредством ошибок сегментации и произвольного выполнения кода. Любая программа, производящая конвертацию информацию неавторизованного источника в значения с плавающей запятой (особенно это касается программ, принимающих JSON данные), уязвима.

Уязвим код, выглядящий как-то так:

untrusted_data.to_f

Но любой код, который может привести к созданию значений с плавающей запятой, уязвим. Типа такого:

JSON.parse untrusted_data

Заметьте, этот баг похож на CVE-2009-0689.

Всем пользователям затронутых версий рекомендуется обновиться до ПОЧИНЕНЫХ версий Ruby.

Затронутые версии

  • Все версии Ruby 1.8
  • Все версии Ruby 1.9 до Ruby 1.9.3 patchlevel 484
  • Все версии Ruby 2.0 до Ruby 2.0.0 patchlevel 353
  • Все версии Ruby 2.1 до Ruby 2.1.0 preview2
  • транк до ревизии 43780

Solutions

Всем пользователям рекомендуется обновиться до Ruby 1.9.3 patchlevel 484, Ruby 2.0.0 patchlevel 353 или Ruby 2.1.0 preview2.

Пожалуйста помните, что серия версий Ruby 1.8 и все более ранние версии являются устаревшими. Не планируется выпускать ПОЧИНЕННЫЕ версии для них. Пользователям этих версий рекомендуется обновиться как можно скорее, так как мы не можем гарантировать продолжения выпусков версий с исправлениями безопасности для неподдерживаемых релизов.

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

Спасибо Charlie Somerville за сообщение о данной уязвимости!

История

  • Оригинал опубликован 2013-11-22 04:00:00 UTC
  • Второй раз опубликовано 2013-11-22 06:46:00 UTC
  • Третий раз опубликовано 2013-11-22 22:46:00 UTC