Виявлено вразливість, що процедури створення файлів можуть створювати
ненавмисні файли, стратегічно вставляючи NUL(и) у шляхи файлів. Ця
вразливість повідомлена як CVE-2012-4522.

## Деталі

Ruby може обробляти довільні двійкові шаблони як рядки, включаючи символи NUL
. З іншого боку, ОС та інші бібліотеки, як правило, не роблять цього. Вони зазвичай
трактують NUL як позначку кінця рядка. Тому для інтерфейсу їх з Ruby,
символи NUL повинні бути належним чином уникнуті.

Однак методи, такі як IO#open, не перевіряли ім'я файлу, передане їм,
і просто передавали ці рядки до процедур нижчого рівня. Це призвело до
створення ненавмисних файлів, як це:

    p File.exists?("foo")      #=> false
    open("foo\0bar", "w") { |f| f.puts "hai" }
    p File.exists?("foo")      #=> true
    p File.exists?("foo\0bar") #=> raises ArgumentError

## Зачеплені версії

* Всі Ruby 1.9.3 до рівня патчу 286
* Всі гілки розробки Ruby 2.0.0 до ревізії r37163

## Рішення

Оновіться до останньої версії.

## Подяка

Цю проблему повідомив Peter Bex.

## Оновлення

* Виправлено друкарську помилку 2012-10-19 14:54:49 JST.
* Додано згадку про номер CVE 2012-10-16 08:58:51 JST.
* Спочатку опубліковано 2012-10-12 19:19:55 JST.
