修复:在0.1.6之前,libyaml容易受到来自恶意YAML有效负载的堆溢出攻击

时间:2014-04-07 17:36:46

标签: yaml psych ruby-2.1

在添加vcr gem后运行rspec时出现以下错误。只是按照建议运行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

5 个答案:

答案 0 :(得分:9)

首先,您必须更新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
...

它适用于我的情况。

答案 1 :(得分:4)

我只是按照本回复https://stackoverflow.com/a/9510209/816002中的说明操作,似乎已经完成了这一操作。然而我做的却略有不同:

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

如果您使用的是系统Ruby,这可能会有所帮助,显然与rbenv不同。

答案 2 :(得分:3)

作为rvm的用户,我设法通过构建libyaml的0.1.6版本,然后(重新)安装Ruby,传递以下配置标志来设置玩球

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

希望这可以帮助人们在短期内尘埃落定。

答案 3 :(得分:0)

如果您使用的是Mac OS X / Mavericks,那么您可能正在运行系统安装的Ruby。 Thoughbot encourages you not to do this。我也遇到了这个问题,所以我按照他们的建议安装了brewrbenv,问题就消失了。

答案 4 :(得分:0)

对于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/