Исправлено: до 0.1.6, libyaml уязвим для эксплойта переполнения кучи от вредоносных полезных данных YAML
Я получаю следующую ошибку при запуске rspec после того, как добавил жемчуг vcr. Простое выполнение gem install psych -- --enable-bundled-libyaml
, как было предложено, не решает проблему. Я использую rbenv и ruby-build, и я на Ruby 2.1.1. Что мне нужно сделать, чтобы исправить это?
SafeYAML Warning
----------------
You appear to have an outdated version of libyaml (0.1.4) installed on your system.
Prior to 0.1.6, libyaml is vulnerable to a heap overflow exploit from malicious YAML payloads.
For more info, see:
https://www.ruby-lang.org/en/news/2014/03/29/heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525/
The easiest thing to do right now is probably to update Psych to the latest version and enable
the 'bundled-libyaml' option, which will install a vendored libyaml with the vulnerability patched:
gem install psych -- --enable-bundled-libyaml
Ответы
Ответ 1
Во-первых, вам нужно обновить Ruby-build
, они недавно исправили эту проблему безопасности. Теперь он устанавливает libyaml 0.1.6
для компиляции Ruby.
$ rm -rf ~/.rbenv/plugins/ruby-build
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
Перекомпилируйте, переустановите версию Ruby
, которую вы используете, 2.0.0-p451
в моем случае:
$ rbenv install 2.0.0-p451
rbenv: /home/ubuntu/.rbenv/versions/2.0.0-p451 already exists
continue with installation? (y/N) y
Downloading yaml-0.1.6.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5fe00cda18ca5daeb43762b80c38e06e
...
И это сработало в моем случае.
Ответ 2
Я просто выполнил инструкции в этом ответе fooobar.com/questions/34718/... и, похоже, сделал трюк. Я сделал это несколько иначе:
rvm pkg install libyaml
rvm get stable
rvm reinstall all --force
Это может не помочь, если вы используете системный Ruby и, очевидно, будете отличаться от rbenv
.
Ответ 3
Как пользователь rvm, мне удалось настроить свою игру на игру, построив 0.1.6 выпуск libyaml, затем (повторная установка) Ruby, передав следующий флаг настройки
rvm install 1.9.3 -- --with-libyaml-dir=/usr/local
Надеюсь, это поможет людям в краткосрочной перспективе, пока пыль не успокоится.
Ответ 4
Если вы находитесь в Mac OS X/Mavericks, вы можете работать на установленном системой Ruby. Мышление поощряет вас не делать этого. У меня тоже была эта проблема, поэтому я последовал их советам и установил brew
и rbenv
, и проблема исчезла.
Ответ 5
Для rvm это сработало для меня:
rvm pkg install libyaml
$LIBYAML_PATH will be the path where RVM installs the upated yaml
rvm get stable
rvm reinstall all --force --with-libyaml-dir=$LIBYAML_PATH
http://synaptian.com/2014/04/fixing-the-safeyaml-warning-on-ubuntu-12-04-with-rvm/