Railsセキュリティ修正リリース: 5.2.1.1、5.1.6.1、5.0.7.1、4.2.11(Active JobとActive Storage)

Railsセキュリティ修正リリース: 5.2.1.1、5.1.6.1、5.0.7.1、4.2.11(Railsリリース情報より)

Active JobとActive Storageが影響を受けます。セキュリティアップデートはRails 5.x系と4.2系が対象なので、それより古いバージョンのRailsはできるだけ早急にアップグレードすることを推奨します。

どちらの脆弱性についても、アップグレード版の他に回避用のモンキーパッチ(コードまたはファイル形式)も示されています。詳しくは各Googleグループをご覧ください。

1. Active Jobの脆弱性

攻撃者が巧妙に仕込んだユーザー入力を用いると、GlobalIdを用いてActive Jobをデシリアライズし、本来アクセスできてはならない情報にアクセスできてしまう可能性がある。
以下のようなコードが脆弱性を持つ。

    MyJob.perform_later(user_input)

本脆弱性の影響を受けるバージョンを実行している全ユーザーは、ただちにアップグレードするか、いずれかの回避方法を用いること。
同記事より大意

参考: rails/globalid

2. Active Storageの脆弱性

ActiveStorageで生成された書名済みダウンロードURLによって、Google Cloud Storage(GCS)サービスや同Diskサービスに含まれるcontent-dispositionパラメータやcontent-typeパラメータを攻撃者が改変できる可能性がある。これは、特殊な細工を施したHTMLファイルをアップロードして送信したりインライン実行したりするのに利用可能である。cookie bombingなどの攻撃手法や特殊な細工を施したAppCacheマニフェストを併用することで、攻撃者が特定のストレージパス内にあるprivateな書名済みURLへのアクセスを取得できる可能性がある。

この問題の影響を受けるリリースを実行する全ユーザーは、ただちにアップグレードするか、いずれかの回避方法を適用すること。Google Cloud Storageを利用している場合は、以下を実行して既存のblobをアップデートすることも推奨される。

ActiveStorage::Blob.find_each do |blob|
  blob.send :update_service_metadata
end

同記事より大意

関連記事

Railsアプリで実際にあった5つのセキュリティ問題と修正方法(翻訳)

Ruby 2.5.2→2.5.3/2.4.5/2.3.8リリース(脆弱性修正)

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好き。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

BPSアドベントカレンダー

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ