Ruby on Rails セキュリティ修正6.1.3.2/6.0.3.7/5.2.4.6/5.2.6がリリースされました。詳しくは公式の各種リリース情報をご覧ください。
CONGRATS you have received:
1. Several critical Rails updates due to CVEs released today https://t.co/z8ftB6k4PR
2. new lotto/magic numbers: 6-1-3-2-6-0-3-7-5-2-4-6-and-5-2-6 (thanks @tenderlove)— Nick Quaranto 💉😷🤜🦠 (@qrush) May 5, 2021
今回リリースされた以下の4つのRailsリリースには重要なセキュリティ修正が含まれており、上記リリース情報でもアップグレードが求められています。
- タグ: rails/rails at v6.1.3.2
- タグ: rails/rails at v6.0.3.7
- タグ: rails/rails at v5.2.4.6
- タグ: rails/rails at v5.2.6 -- セキュリティ修正に加えてバグ修正も含む通常リリース(以下ツイートより↓)
To those who don’t want to upgrade to get non-security related changes. 5.2.6 is a regular bug fix release with more than only the security fixes.
— Ruby on Rails (@rails) May 5, 2021
🔗 セキュリティ修正の概要
上記セキュリティ修正では、以下の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_to
やpolymorphic_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リリース情報タグ)