Ненавмисне створення файлу, спричинене вставкою недопустимого символу 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.
Останні новини
Вийшов Ruby 3.3.12
Вийшов Ruby 3.3.12.
Опублікував hsbt 16-07-2026
Вийшов Ruby 4.0.6
Вийшов Ruby 4.0.6.
Опублікував k0kubun 14-07-2026
Вийшов Ruby 3.4.10
Вийшов Ruby 3.4.10.
Опублікував nagachika 30-06-2026
Вийшов Ruby 4.0.5
Вийшов Ruby 4.0.5.
Опублікував k0kubun 20-05-2026