
Предоставляет быстрое обходное решение для ошибки segfault в Ruby (CVE-2009-1904)
h1. Исправление segfault в BigDecimal
В библиотеке BigDecimal Ruby существует ошибка segfault, которая может быть вызвана пользователем при передаче заведомо некорректных значений. Если вы хотите проверить, защищено ли ваше приложение, запустите +example.rb+. Этот скрипт должен завершиться нормально, а не с segfault.
Обходное решение имеет негативные побочные эффекты. В частности, оно не позволяет использовать BigDecimal для работы с большими числами (более 255 цифр) или задавать числа в научной нотации (например, "5E6" для 5000000). Если вам требуются эти возможности, вы должны обновиться до исправленной версии Ruby.
Настоятельно рекомендуется обновить Ruby, следуя "инструкциям на сайте Ruby":http://www.ruby-lang.org/en/news/2009/06/09/dos-vulnerability-in-bigdecimal/. Данное обходное решение предназначено только для временного использования.
h2. Затронутые версии Ruby:
h3. Серия 1.8
h3. Серия 1.9
h2. Инструкции по установке
h3. Установка gem
Это исправление доступно в виде gem на GitHub. Для его установки выполните следующие команды:
$ gem sources -a http://gems.github.com $ sudo gem install NZKoz-bigdecimal-segfault-fix
Затем в вашем коде добавьте:
gem 'NZKoz-bigdecimal-segfault-fix' require 'bigdecimal-segfault-fix'
h3. Установка через инициализатор Rails
Чтобы применить это исправление к приложению Rails, просто скопируйте файл +bigdecimal-segfault-fix.rb+ в каталог config/initializers вашего приложения.