WEBrickの非公開ファイルにアクセスされる脆弱性について

Rubyに標準で添付されているWEBrickライブラリにおいて、 このライブラリに含まれるローカルファイルシステム上のファイル (およびディレクトリ)を公開する機能を使用した場合に、公開を意 図していないリソースにアクセスが可能となる問題が発見されました。

特に、Windowsでこの機能を利用した場合には、ディレクトリトラ バーサルにより、プロセスの権限で読み取り可能な任意のファイル に対するアクセスが可能となります。

影響

この脆弱性は以下の状況で発生します。

  1. WEBrick::HTTPServer.newの引数として、 :DocumentRootを指定してファイルを公開する場合
  2. WEBrick::HTTPServlet::FileHandlerサーブレットを 利用してファイルを公開する場合

この脆弱性は以下の環境で発生します。

  1. パスの区切り文字としてバックスラッシュを使用できるシス テム(Windowsなど)
  2. ファイルにアクセスする際にパス名の大文字と小文字を区別 しないファイルシステム(WindowsのNTFSやMacOSXのHFSなど) を利用しているシステム

この脆弱性により以下のような影響があります。

  1. 以下のようにURLにエンコードされたバックスラッシュ(\)を 含めることにより、公開対象のディレクトリ以外のファイル にアクセスされる恐れがあります。 これはWindowsのようにパスの区切り文字としてバックスラッ シュを使用するシステムに限ります。

    例:

    http://[server]:[port]/..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c/boot.ini
    
  2. FileHandlerの設定項目の:NondisclosureName で指定されたパターン(デフォルト値は[".ht*", "*~"]) にマッチするファイルにアクセスされる恐れがあります。こ れは大文字・小文字を区別しないファイルシステムを利用し ている場合に限ります。

脆弱性の存在するバージョン

1.8系
  • 1.8.4以前の全てのバージョン
  • 1.8.5-p114以前の全てのバージョン
  • 1.8.6-p113以前の全てのバージョン
1.9系
  • 1.9.0-1以前の全てのバージョン

各バージョンでの対応方法

各バージョンでの対応方法を以下に記載します。

1.8系
1.8.5-p115または1.8.6-p114に更新してください。
1.9系
以下のパッチを適用してください。

Rubyのパッケージを配布している各ベンダから、この脆弱性を修正 した版のパッケージが提供されている場合もあります。詳細につい ては各ベンダにお問い合わせください。

クレジット

この脆弱性はDigital Security Research Group (http://dsec.ru/)により Ruby Security Teamに報告されました。