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

Railsセキュリティ修正6.1.3.2/6.0.3.7/5.2.4.6/5.2.6がリリースされました

Ruby on Rails セキュリティ修正6.1.3.2/6.0.3.7/5.2.4.6/5.2.6がリリースされました。詳しくは公式の各種リリース情報をご覧ください。

今回リリースされた以下の4つのRailsリリースには重要なセキュリティ修正が含まれており、上記リリース情報でもアップグレードが求められています。

🔗 セキュリティ修正の概要

上記セキュリティ修正では、以下の4件の修正が行われています。各CVEリンクには、セキュリティ修正を適用できない事情がある場合のための回避方法も記載されています。

🔗 1. Action Dispatchが悪意のあるMIMEタイプでDoS攻撃を受ける可能性

影響を受けるRailsバージョン
v6.0.0以降
影響を受けないRailsバージョン
v6.0.0未満
修正済みバージョン
v6.0.3.7、v6.1.0.2

影響:
Action DispatchにDoS(Denial of Service)脆弱性の可能性がある。巧妙に作られたAcceptヘッダーによって、Action DispatchのMIMEタイプパーサーで正規表現エンジンの「Catastrophic Backtracking」が引き起こされる可能性がある。
CVE-2021-22902より大意

参考: Runaway Regular Expressions: Catastrophic Backtracking
参考: ReDoS - Wikipedia

🔗 2. config.hostの設定次第ではリクエストのHostヘッダーで別サイトにリダイレクトされる可能性

影響を受けるRailsバージョン
v6.1.0.rc2以降
影響を受けないRailsバージョン
v6.1.0.rc2未満
修正済みバージョン
v6.1.3.2

影響:
CVE-2021-22881に類似している。特殊な細工を施したHostヘッダーと特定の”allowed host”フォーマットの組み合わせによっては、Action PackのHost Authorizationミドルウェアから悪意のあるWebサイトにリダイレクトされる可能性がある。
rails/rails@9bc7ea5以降のRailsでは、冒頭にドットのない文字列がconfig.hostsに含まれていると、文字列が正しくエスケープされずに正規表現に変換される。これによって、たとえばconfig.hosts << “sub.example.com”という設定がsub-example.comという値のHostヘッダーを持つリクエストを許してしまう。
CVE-2021-22903より大意

🔗 3. url_forに渡されるArrayに信頼できない文字列があると意図しない情報公開やメソッド実行につながる可能性

影響を受けるRailsバージョン
2.0.0以降
影響を受けるRailsバージョン
2.0.0未満
修正済みバージョン
v6.1.3.2、v6.0.3.7、v5.2.4.6、v5.2.6

影響: 信頼できないユーザー入力をredirect_topolymorphic_urlに渡すと、意図しない情報公開やメソッド実行につながる可能性のある脆弱性がAction Packで見つかった。脆弱なコードは以下のような感じになる。

redirect_to(params[:some_param])

該当するリリースのユーザーはただちにアップグレードするか、CVE-2021-22885に記載されているいずれかの回避方法をただちに適用すべき。
CVE-2021-22885より大意


url_forは引数のarray(通常はシンボルかレコード)経由でポリモーフィックなURLをビルドできる。開発者がユーザー入力のarrayを渡すと、文字列によって意図しないルーティングヘルパーが呼び出される可能性がある。
同Changelogより大意

🔗 4. Action Controllerのトークン認証が特定のパターンで遅くなるDoS脆弱性の可能性

影響を受けるRailsバージョン
4.0.0以降
影響を受けるRailsバージョン
4.0.0未満
修正済みバージョン
v6.1.3.2、v6.0.3.7、v5.2.4.6、v5.2.6

影響:
authenticate_or_request_with_http_tokenまたはauthenticate_with_http_tokenでリクエストを認証するコードに影響が生じる。影響を受けるコードは以下のような感じになる。

class PostsController < ApplicationController
  before_action :authenticate

  private

  def authenticate
    authenticate_or_request_with_http_token do |token, options|
      # ...
    end
  end
end

該当するリリースのユーザーはただちにアップグレードするか、CVE-2021-22904に記載されているいずれかの回避方法をただちに適用すべき。
CVE-2021-22904より大意


TechRachoではRubyやRailsの最新情報などの記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:Railsリリース情報タグ)

関連記事

速報: Rails 6.1.2がリリースされました


CONTACT

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