Исправление: до версии 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

person Dominik Goltermann    schedule 07.04.2014    source источник
comment
такая же проблема здесь на 2.0.0p353   -  person squarefrog    schedule 07.04.2014


Ответы (5)


Во-первых, вам нужно обновить 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
...

И это сработало в моем случае.

person David Clavijo    schedule 08.04.2014

Я просто следовал инструкциям в этом ответе https://stackoverflow.com/a/9510209/816002 и, похоже, сделал трюк. Я сделал это немного по-другому, однако:

rvm pkg install libyaml
rvm get stable
rvm reinstall all --force

Это может не помочь, если вы используете системный Ruby, и, очевидно, будет иначе с rbenv.

person squarefrog    schedule 07.04.2014
comment
По какой-то причине на osx (10.9.2) rvm pkg install libyaml устанавливает 0.1.5, так что мне это ничего не дает. - person TKH; 08.04.2014
comment
@TKH посмотрите, поможет ли этот ответ: stackoverflow.com/questions/22919990/ - person ouranos; 09.04.2014
comment
@ouranos похоже, что в brew уже установлена ​​версия 0.1.6. пробовал переустанавливать бесполезно. :( - person TKH; 09.04.2014
comment
У меня произошел сбой Fetching yaml-0.1.4.tar.gz с ошибкой 404 для rvm.io/src/yaml-0.1. .4.tar.gz - person Sarah Vessels; 30.04.2014

Как пользователю rvm, мне удалось настроиться на игру, собрав версию 0.1.6 libyaml, затем (пере)установить Ruby, передав следующий флаг конфигурации

rvm install 1.9.3 -- --with-libyaml-dir=/usr/local

Надеюсь, это поможет людям в краткосрочной перспективе, пока пыль не уляжется.

person codeasone    schedule 11.04.2014
comment
Из всех предложений по связанным сообщениям об этой проблеме... это сработало! После этого мне пришлось переустановить драгоценный камень, вызвавший проблему, но потом это сработало! Переустановка драгоценного камня без этой установки rvm не решила проблему. - person ATSiem; 12.04.2014

Если вы используете Mac OS X/Mavericks, возможно, вы используете Ruby, установленный в системе. Thoughbot призывает вас не делать этого. У меня тоже была эта проблема, поэтому я последовал их совету и установил brew и rbenv, и проблема исчезла.

person Simon Woodside    schedule 20.04.2014

Для 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/

person hamdiakoguz    schedule 15.10.2015