Опубликовал usa 14-05-2013
Перевел: gazay
Уязвимость в DL и Fiddle в Ruby, где испорченные строки могут быть использованы системными вызовами, не смотря на установленный в Ruby уровень $SAFE. Этой уязвимости назначен CVE идентификатор CVE-2013-2065.
Влияние
Нативные функции, действующие в Ruby с DL или Fiddle, не проверяют испорченности выставленных значений поступающих в объекты. Как результат, испорченные объекты могут быть приняты как обычные, когда как должна быть брошена ошибка SecurityError.
Пример DL кода будет выглядеть как-то так:
Пример Fiddle кода будет выглядеть как-то так:
Все пользователи, использующие затронутые релизы, должны либо обновить, либо использовать один из обходных путей немедленно.
Заметьте, что это не отменит использования числовых отступов в памяти как значения указателей. Числа не могут быть загрязнены, так что код создающий числовой отступ в памяти, не может быть проверен. Например:
В этом случае позиция в памяти передана и загрязненность объекта не может быть определена DL / Fiddle. В данном случае, пожалуйста проверяйте загрязненность пользовательского ввода перед тем как передавать позицию в памяти:
Обходные пути
Если вы не можете обновить Ruby, данный манкипатч может быть использован как обходной путь:
Затронутые версии
- Все версии ruby 1.9 до ruby 1.9.3 patchlevel 426
- Все версии ruby 2.0 до ruby 2.0.0 patchlevel 195
- транк ветка до ревизии 40728
ruby 1.8 версии не затронуты
Благодарность
Спасибо Vit Ondruch за сообщение о данной проблеме.
История
- Оригинал опубликован 2013-05-14 13:00:00 (UTC)