これは、最近の libyaml の脆弱性 ( CVE-2014-2525 ) に関連しています。
提案どおりに psych を 2.0.5に更新しましGemfileたが、サーバーの libyaml バージョンは 0.1.6 ではなく 0.1.4 のままです。
最新の psych gem を使用しても、Ruby が使用する libyaml のバージョンが更新されないようです。
2.0.0p353 :001 > Psych.libyaml_version
=> [0, 1, 4]
どうやら libyaml はシステムにインストールされているものを指しています。libyaml-0.so.2をどのように指しているかに注目してください/usr/lib/x86_64-linux-gnu/libyaml-0.so.2:
ubuntu@host:~$ find $MY_RUBY_HOME -name psych.so | xargs ldd
linux-vdso.so.1 => (0x00007fff22fff000)
libruby.so.2.0 => /home/ubuntu/.rvm/rubies/ruby-2.0.0-p353/lib/libruby.so.2.0 (0x00007fc91a537000)
libyaml-0.so.2 => /usr/lib/x86_64-linux-gnu/libyaml-0.so.2 (0x00007fc91a30e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc919f4d000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc919d30000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc919b28000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc919923000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fc9196ea000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc9193ee000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc91abbf000)
/usr/lib/x86_64-linux-gnu/libyaml-0.so.2libyaml-0-2以下に示すように、パッケージによってインストールされます。
ubuntu@host:~$ dpkg -S /usr/lib/x86_64-linux-gnu/libyaml-0.so.2
libyaml-0-2: /usr/lib/x86_64-linux-gnu/libyaml-0.so.2
私の理解が正しければ、Ruby は libyaml を APT によってインストールされたものに動的にリンクしていることになります。
Ubuntu は脆弱性を修正するパッチをリリースしており、そのパッチは既にインストールされています。libyaml のバージョンはまだ 0.1.4 です。
それに基づいて、脆弱性は私のサーバーで既に修正されているようです。私は正しいですか?脆弱性が修正されたことをテストする方法はありますか?