LiBz Tech Blog

LiBの開発者ブログ

【yamory】みんなで"やもろう"!Railsで脆弱性を監視しようの巻

f:id:kazuhisa_o:20190906171844j:plain

はじめに

元々Webアプリケーションエンジニアでしたが、
インフラに異動し、開発基盤の構築だったり、簡易的なセキュリティを見ることになりました。

小さな会社ですが、大小様々なプロジェクトが存在しています。
ただ、すべてのプロジェクトに対して脆弱性の検知を行うことは大変です。

脆弱性の検知

社内ではRailsがメインで使われています。
Railsから"重大なSecurityFix"が発表されたさいに
プロダクトのエンジニアが検知して社内に共有し迅速に対応をすることができました。
weblog.rubyonrails.org

ただ、Railsの重大なSecurityFixという大きい話題になったことから検知できたことかもしれません。
これがRailsで使用している1つのgemだったら検知できていたでしょうか?
また、各gemのバージョンの依存関係で入ったものは脆弱性がない状態なのでしょうか?

こういうのっていつ発表されるかもわかんないし、ウォッチするの大変。。。

各サービスで使っているライブラリの脆弱性監視をしたい!

2019年8月27日にリリースされたyamoryでは、 オープンソースの脆弱性を定常的に監視し通知してくれるサービスです。

yamory.io

githubのリポジトリを指定するだけで定期的にスキャンしてくれます!
「ソースコード中に設定ファイルの追加」や「リリースフローの変更」をしなくていいところが、とても運用面ではありがたいです。

www.bizreach.co.jp

実験

試しにRailsで脆弱性のあるバージョンでスキャンしてみる

先述したRailsの脆弱性の問題があったバージョンのプロジェクトを作り、試しにスキャンしてみました。

$ bundle exec rails -v
Rails 5.2.1

f:id:kazuhisa_o:20190906175506p:plain

スキャンすると「"Immediate"即時に影響を受ける可能性がある」脆弱性が発見されました。

修正されたバージョンにしてみる

問題があった5.2.1から5.2.3にしてみます

diff --git a/Gemfile b/Gemfile
index 4c987fb..08c3322 100644
--- a/Gemfile
+++ b/Gemfile
@@ -4,7 +4,7 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
 ruby '2.6.3'

 # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
-gem 'rails', '= 5.2.1'
+gem 'rails', '= 5.2.3'
 # Use sqlite3 as the database for Active Record
 gem 'sqlite3'
 # Use Puma as the app server
diff --git a/Gemfile.lock b/Gemfile.lock
index 7a77e2e..327066a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,43 +1,43 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    actioncable (5.2.1)
-      actionpack (= 5.2.1)
+    actioncable (5.2.3)
+      actionpack (= 5.2.3)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
-    actionmailer (5.2.1)
-      actionpack (= 5.2.1)
-      actionview (= 5.2.1)

...

f:id:kazuhisa_o:20190906183537p:plain

スキャンしてみると脆弱性のレポートの件数が減りました!

影響の範囲を見てみるとRails5.2.3の問題として報告があがっていました。
f:id:kazuhisa_o:20190906183923p:plain ただ詳細のレポートを見るとRails < 5.2.2.1で起きている問題の旨がわかります。
(リリースしたてっていうのもあり誤検知??本当は1日待って自動スキャンを待ってやるっぽいのですが、急かして手動で再読み込みしたせいかも??)

実際の影響範囲を見て、これは問題なかったと報告して完了することができます。

---- 2019/09/09 追記 ----

定期スキャンで誤検知かと思っていた脆弱もステータスが「完了」に変わっていました f:id:kazuhisa_o:20190909092705p:plain 多少反映に時間がかかるようです。

----- 追記ここまで ------

使ってみた感想

リリースしたてということもあり、再スキャン後の反映に一部時間がかかったり、バージョン違い?の可能性がある報告がありました。
※ 追記記載 反映に時間がかかっていただけでした。

しかし、それを差し引いても脆弱性のキャッチアップをするのには大変満足いく内容かと思います! 脆弱性が見つかっても、参考情報のリンクや攻撃例の情報なのが一緒に添えられているため、一次情報のキャッチアップとしては十分すぎるものが揃っているかと思います。

実際に運用してみてわかったことがあったら再度記事を書いて見たいと思います。