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

修复:0.1.6之前的版本,libyaml容易受到恶意YAML有效负载的堆溢出攻击,yaml,psych,ruby-2.1,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 you

我在添加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

我只是按照这个回复中的指示去做,它似乎已经成功了。但我做的有点不同:

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

如果您使用的是system Ruby,这可能没有帮助,而且显然与
rbenv

不同。首先,您必须更新
Ruby build
,他们最近已经解决了这个安全问题。现在,它安装了
libyaml0.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
...

这在我的情况下起了作用

作为rvm的用户,我通过构建0.1.6版本的,然后(重新)安装Ruby,并传递以下配置标志,成功地建立了玩球的设置

rvm安装1.9.3--with libyaml dir=/usr/local


希望这能在短期内帮助人们,直到尘埃落定

如果您在Mac OS X/Mavericks上,那么您可能在安装了Ruby的系统上运行。我也遇到了这个问题,所以我按照他们的建议安装了
brew
rbenv
,问题就消失了。

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

在osx(10.9.2)上,由于某种原因,在2.0.0p353上出现了完全相同的问题。rvm pkg install libyaml正在安装0.1.5,因此这对我没有任何帮助。@TKH看看这个答案是否有帮助:@ouranos似乎brew已经安装了0.1.6。已尝试重新安装,但无效:(我在
获取yaml-0.1.4.tar.gz
时失败,关于这个问题的链接帖子上的所有建议中有一个404错误…这一个成功了!我不得不重新安装gem导致了这个问题,但是它成功了!在没有安装这个rvm的情况下重新安装gem并不能解决这个问题。