CVE-2015-7551: Небезпечне використання tainted рядка в Fiddle та DL
Опублікував usa 16-12-2015
Переклав: Andrii Furmanets
Є вразливість небезпечного використання tainted рядка в Fiddle та DL. Цій вразливості присвоєно ідентифікатор CVE CVE-2015-7551.
Деталі
Є вразливість небезпечного tainted рядка в Fiddle та DL. Ця проблема була спочатку повідомлена та виправлена з CVE-2009-5147 в DL, але знову з’явилася після того, як DL було перереалізовано з використанням Fiddle та libffi.
І, щодо DL, CVE-2009-5147 було виправлено в Ruby 1.9.1, але не виправлено в інших гілках, тоді rubies, які включають DL , крім Ruby 1.9.1, все ще вразливі.
Зачеплений код виглядає приблизно так:
handle = Fiddle::Handle.new(dangerous_user_input)Або:
handle = Fiddle::Handle.new(some_library)
function_pointer = handle[dangerous_user_input]Всі користувачі, які запускають зачеплений випуск, повинні або оновитися, або використовувати один з обхідних шляхів негайно.
Зачеплені версії
- Всі випуски патчів Ruby 1.9.2 та Ruby 1.9.3 (DL та Fiddle).
- Всі випуски патчів Ruby 2.0.0 до Ruby 2.0.0 рівня патчу 648 (DL та Fiddle).
- Всі версії Ruby 2.1 до Ruby 2.1.8 (DL та Fiddle).
- Всі версії Ruby 2.2 до Ruby 2.2.4 (Fiddle).
- Ruby 2.3.0 preview 1 та preview 2 (Fiddle).
- до ревізії trunk 53153 (Fiddle).
Обхідні шляхи
Якщо ви не можете оновитися, наступний monkey patch може бути застосований як обхідний шлях для Fiddle:
class Fiddle::Handle
alias :old_initialize :initialize
def initialize file, *args
raise SecurityError if file.tainted? && $SAFE > 0
old_initialize file, *args
end
alias :sym :[]
alias :old_call :[]
def [] fun
raise SecurityError if fun.tainted? && $SAFE > 0
old_call fun
end
endЯкщо ви використовуєте DL, використовуйте Fiddle замість нього.
Подяка
Дякуємо Christian Hofstaedtler zeha@debian.org за повідомлення про цю проблему!
Історія
- Спочатку опубліковано 2015-12-16 12:00:00 UTC
Останні новини
Вийшов Ruby 3.2.10
Вийшов Ruby 3.2.10.
Опублікував hsbt 14-01-2026
Вийшов Ruby 4.0.1
Вийшов Ruby 4.0.1.
Опублікував k0kubun 13-01-2026
Вийшов 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