Вразливість обходу $SAFE щодо Exception#to_s / NameError#to_s (CVE-2012-4464, CVE-2012-4466)
Опублікував usa 12-10-2012
Переклав: Andrii Furmanets
Виявлено вразливості для Exception#to_s, NameError#to_s, та name_err_mesg_to_s(), яка є внутрішньою API інтерпретатора Ruby. Зловмисний код користувача може обійти перевірку $SAFE, використовуючи одну з цих дірок безпеки.
Деталі
Механізм $SAFE Ruby дозволяє ненадійним кодам користувачів працювати в режимі $SAFE >= 4. Це свого роду пісочниця, тому деякі операції обмежені в цьому режимі, щоб захистити інші дані поза пісочницею.
Проблема, знайдена, була навколо цього механізму. Exception#to_s, NameError#to_s, та внутрішня API інтерпретатора name_err_mesg_to_s() не обробляли правильно біти $SAFE, тому об’єкт String, який не є таїнтованим, може деструктивно бути позначений як таїнтований, використовуючи їх. Використовуючи це, ненадійний код у пісочниці може модифікувати раніше нетаїнтований рядок деструктивно.
Ruby 1.8 колись мав схожу проблему безпеки. Він виправив Exception#to_s та NameError#to_s, але проблема name_err_mesg_to_str() пережила попереднє виправлення безпеки.
Зачеплені версії
- всі Ruby 1.8.7 до рівня патчу 371
- всі Ruby 1.9.3 до рівня патчу 286
- всі гілки розробки Ruby 2.0 до ревізії r37068
Рішення
Оновіться до останньої версії.
Подяка
Цю вразливість знайшов Tyler Hickes.
Оновлення
- Спочатку опубліковано 2012-10-12 19:17:50 JST.
Останні новини
Вийшов Ruby 4.0.0
Ми раді повідомити про випуск Ruby 4.0.0. Ruby 4.0 представляє “Ruby Box” та “ZJIT”, а також додає багато покращень.
Опублікував naruse 25-12-2025
Новий вигляд документації Ruby
Слідом за ре-дизайном ruby-lang.org, ми маємо більше новин, щоб відсвяткувати 30-річчя Ruby: docs.ruby-lang.org має повністю новий вигляд завдяки Aliki — новій темі за замовчуванням для...
Опублікував Stan Lo 23-12-2025
Оновлення айдентики нашого сайту
Раді оголосити про комплексне оновлення нашого сайту. Дизайн для цього оновлення створила Taeko Akatsuka.
Опублікував Hiroshi SHIBATA 22-12-2025
Вийшов Ruby 4.0.0 preview3
Раді повідомити про вихід Ruby 4.0.0-preview3. Ruby 4.0 вводить Ruby::Box і “ZJIT” та додає багато покращень.
Опублікував naruse 18-12-2025