Rail ActionPackパラメータ解による複数の脆弱性

1498 ワード

1月8日、RailsチームのコアメンバーAaron PattersonはCVE-2013-0156を発表した.これはActionPackパラメータ解によって引き起こされた多くの脆弱性であり、3.0、3.1、3.2、および長い間更新されていない2.3シリーズを含むバージョンに影響を及ぼしている.
脆弱性の影響
  • 授権システム
  • を迂回する
  • 任意のSQL文を注入
  • サービス攻撃を拒否
  • 任意Rubyコード
  • を実行する.
    このうち、リモートで任意のRubyコード(もちろんShellコマンドも含まれています.RubyはシステムShellコマンドを呼び出すことができるからです)を実行することができるという脆弱性は、ほとんどの開発者とサイトをパニックにさせ、オランダ政府の公民デジタルアイデンティティサイトを含むオフラインの極端な対応を取っています.
    Webratの著者@brynaryは彼のブログで今回の脆弱性の深刻さをまとめた.
  • の利用可能性:簡単で、攻撃スクリプトはどこでも見つけることができ、使いやすく、攻撃対象サイトのURLと実行したいコードを伝えるだけです.
  • 影響範囲:広範で、最新バージョンにアップグレードされていないRailsプロジェクトはすべて影響を受けています.
  • 検出性:容易で、応用に関する知識を必要とせず、自動化スキャンを実施して、ターゲットサイトにこの脆弱性があるかどうかを検出することができる.
  • 技術上の影響:深刻で、攻撃者はサーバーの権限を応用してRuby(もちろんShell)スクリプトを実行することができ、ホスト全体をハイジャックすることができる.
  • ビジネス上の影響:深刻で、データは盗まれ、サーバリソースは攻撃者に悪意のある用途として使用されることができる.

  • 脆弱性発生原理
  • RailsはXMLを解析するときにXMLに埋め込まれたYAMLファイルを解析します.これはこのパッチに遡ります.
  • RubyのYAML Parserは、このクラスがプログラムメモリに定義されている限り、任意のオブジェクトを作成できます.

  • これにより、攻撃者はXMLファイルを提出し、XMLに埋め込まれたYAMLファイルを通じて不安全なコードを含むオブジェクトを作成し、Rails内部の実装詳細トリガコード実行を利用して攻撃を実施することができる.ここではroninが提供する脆弱性利用の詳細コードです.https://gist.github.com/4499206.
    脆弱性の防御措置
    Rails 3プロジェクトの場合は、最新バージョンに直接アップグレードします.Rails 2なら3プロジェクトは、最新バージョンにアップグレードするのが面倒で、プロジェクトの初期化ロード時に次の2行のコードを追加できます.
    
    ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('symbol') 
    ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('yaml')