在添加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
答案 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。我也遇到了这个问题,所以我按照他们的建议安装了brew
和rbenv
,问题就消失了。
答案 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/