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

Railsセキュリティ修正7.0.3.1、6.1.6.1、6.0.5.1、5.2.8.1がリリースされました

Ruby on Rails 7.0.3.1、6.1.6.1、6.0.5.1、5.2.8.1がリリースされました。

以下はGItHubのリリースタグ↓です。今回はRails 5.2系の修正もリリースされています(Railsのメンテナンスポリシー)。

以下はコミット差分です。

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

🔗 [CVE-2022-32224] Possible RCE escalation bug with Serialized Columns in Active Record

詳しくは、必ず以下の詳細情報を参照してください。

参考: CVE - CVE-2022-32224(ステータス: RESERVED)

影響を受ける過去のRailsバージョン
すべてのバージョン
影響を受けない過去のRailsバージョン
なし
修正済みバージョン
7.0.3.1、6.1.6.1、6.0.5.1、5.2.8.1

参考訳

影響

YAML形式(デフォルト)でシリアライズされたカラムは、デシリアライズされるときにYAML.unsafe_loadでYAMLデータをRubyオブジェクトに変換します。攻撃者が(SQLインジェクションなどの手段で)データベース上のデータを操作可能な状態になっていると、攻撃者がリモートコード実行(RCE)にエスカレートする可能性があります。

影響を受けるActive Modelのモデルは以下のような感じになります。

class User < ApplicationRecord
  serialize :options       # 脆弱: シリアライズにYAMLが使われる
  serialize :values, Array # 脆弱: シリアライズにYAMLが使われる
  serialize :values, JSON  # 脆弱ではない
end

リリース

修正済みバージョンはいつもの場所から入手できます。

リリースされたバージョンでは、YAMLデシリアライザがデフォルトでYAML.safe_loadを使うように変更され、これによって危険なオブジェクトがデシリアライズされないようにします。

この変更によって、既存データで後方互換性の問題が生じる可能性もあります。そのような状況に対処するため、リリースされたバージョンには以下のActive Recordのコンフィグオプションが2つ追加されています。

  • config.active_record.use_yaml_unsafe_load

このオプションをtrueにすると、「安全でない」YAML読み込み戦略を使うようRailsに指示します。これによって既存の振る舞いが維持されますが、エスカレーション脆弱性の可能性も残されます。このオプションをtrueにすることは推奨されませんが、アップグレードのときには役に立つでしょう。

  • config.active_record.yaml_column_permitted_classes

「安全なYAML」読み込みでは、デシリアライズをすべてのクラスについてデフォルトで許可しているわけではありません。このオプションは、アプリケーションで「安全」とみなせるクラスを指定できます。たとえば、アプリケーションのシリアライズされたデータでSymbolクラスとTimeクラスを使っている場合は、以下のようにSymbolクラスとTimeクラスを追加できます。

config.active_record.yaml_column_permitted_classes = [Symbol, Date, Time]

回避方法

この問題には実行可能な回避策はありません。ただしJSONなど他のコーダーは影響を受けません。

パッチ

ただちにアップグレードできない事情のあるユーザー向けに、サポート対象である2つのリリース系統向けのパッチも用意されています。これらのパッチはgit-am形式で、単一の変更セットでできています。

現時点でサポートされているのは7.0.Zおよび6.1.Zのみである点にご注意ください。6.0.Zは重大なセキュリティ問題についてのみサポート対象となります。サポート対象外のリリースについては今後のセキュリティ修正が継続される保証がないため、サポート対象外のリリースを使っているユーザーは、可能な限り速やかにアップグレードすることを推奨します。

なお、5.2.Zは既にサポートが終了していますが、パッチおよびリリースが公開されています。

クレジット

報告いただいた@elebowに感謝いたします。

関連記事

Rack セキュリティ修正がリリースされました: 2.2.3.1、2.1.4.1、2.0.9.1


CONTACT

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