Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連
  • 開発

Docker内のbundler-auditが古い脆弱性警告を出す問題

Evil Martians流のRails開発Docker環境を使っていて気づいた点をメモ。

Rails 6のDocker開発環境構築をEvil Martians流にやってみた

Evil Martiansのdipを使う前提です。

docker-composeを便利にするツール「dip」を使ってみた

問題

Dockerにログインした状態でbundler-auditを実行すると、とっくに修正済みのはずの脆弱性警告が表示されます。

root@1528a26e7813:/app# bundler-audit
Name: rails-html-sanitizer
Version: 1.3.0
Advisory: CVE-2015-7579
Criticality: Unknown
URL: https://groups.google.com/forum/#!topic/rubyonrails-security/OU9ugTZcbjc
Title: XSS vulnerability in rails-html-sanitizer
Solution: upgrade to ~> 1.0.3

Name: rails-html-sanitizer
Version: 1.3.0
Advisory: CVE-2015-7578
Criticality: Unknown
URL: https://groups.google.com/forum/#!topic/rubyonrails-security/uh--W4TDwmI
Title: Possible XSS vulnerability in rails-html-sanitizer
Solution: upgrade to ~> 1.0.3

Name: rails-html-sanitizer
Version: 1.3.0
Advisory: CVE-2015-7580
Criticality: Unknown
URL: https://groups.google.com/forum/#!topic/rubyonrails-security/uh--W4TDwmI
Title: Possible XSS vulnerability in rails-html-sanitizer
Solution: upgrade to ~> 1.0.3

Vulnerabilities found!

Dockerの中でbundler-audit updateを実行しても変わりません。

root@0df0fbecba41:/app# bundle audit --update
Updating ruby-advisory-db ...
Skipping update
#(略)

解決方法

bundler-auditのissue↓によると、Dockerにgitをインストールする必要があるとのことでした。そういえば今の設定では入ってませんでした。gitが入ってないと通知してくれればいいのに😢。

Evil Martians流であれば以下で修正できます。それ以外の方は頑張ってgitをDockerに追加してください。

  • Aptfilegitを追加する
  • docker rmi <イメージID>で既存のイメージを削除
  • dip compose buildでリビルド
  • dip shでログインし、bundler-audit update

dip + Evil Martians流はイメージのリビルドがやりやすくて助かりました😂。rails newyarn install --check-filesをやり直す必要もありません。当初手動でgitを入れて結果を何とかしてDockerイメージにコミットしようとしてもがきましたが、dip + Evil Martians流ならリビルドする方が早かったのでした。

おまけ

特にRailsの開発環境の場合はgemのCネイティブ拡張のビルドのためにビルドツールも必要ですし、今回のようにgitが必要になる場合もあります。Apline Linuxやmulti stage buildでDockerイメージを薄くすることに頑張りすぎない方がいいかもという気がしてきました。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。