Ненавмисне створення файлу, спричинене вставкою недопустимого символу NUL (CVE-2012-4522)

Опублікував usa 12-10-2012
Переклав: Andrii Furmanets

Виявлено вразливість, що процедури створення файлів можуть створювати ненавмисні файли, стратегічно вставляючи 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.

Останні новини

Більше новин...