CVE-2018-8780: Dir において NUL 文字挿入により意図しないディレクトリにアクセスされうる脆弱性について

Ruby の組み込みクラス Dir のいくつかのメソッドにおいて、ディレクトリ名として渡された引数文字列中に NUL 文字を挿入しておくことによって、意図しないディレクトリにアクセスしうるという脆弱性が発見されました。 この脆弱性は、CVE-2018-8780 として登録されています。

詳細

組み込みクラス Dir のメソッド Dir.openDir.newDir.entriesDir.empty? 等では、引数で対象となるディレクトリのパス名を指定します。この際、指定されたパス名中に NUL 文字 (\0) が含まれていた場合、NUL 文字直前でパス名が完結しているとみなして、そのパス名に対してアクセスしていました。このため、外部からの入力を Dir.open に与えていた場合、その妥当性をスクリプトで確認していたとしても、意図しないパス名のディレクトリにアクセスしうる場合がありました。

この問題の影響を受けるバージョンの Ruby のユーザーは、速やかに問題の修正されたバージョンに更新してください。

影響を受けるバージョン

  • Ruby 2.2.9 以前の全ての Ruby 2.2 系列
  • Ruby 2.3.6 以前の全ての Ruby 2.3 系列
  • Ruby 2.4.3 以前の全ての Ruby 2.4 系列
  • Ruby 2.5.0
  • Ruby 2.6.0-preview1
  • revision 62989 より前の開発版

クレジット

この脆弱性情報は、ooooooo_q 氏によって報告されました。

更新履歴

  • 2018-03-28 23:00:00 (JST) 初版