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 4.0.5
Вийшов Ruby 4.0.5.
Опублікував k0kubun 20-05-2026
Вийшов Ruby 4.0.4
Вийшов Ruby 4.0.4.
Опублікував k0kubun 11-05-2026
Вийшов Ruby 4.0.3
Вийшов Ruby 4.0.3.
Опублікував k0kubun 21-04-2026
Вийшов Ruby 3.2.11
Вийшов Ruby 3.2.11. Цей реліз містить оновлення gem zlib, яке усуває CVE-2026-27820.
Опублікував hsbt 27-03-2026