CVE-2018-8778: String#unpack における範囲外読み込みの脆弱性について

Ruby の組み込みクラス String のメソッド String#unpack において、攻撃者により配列の範囲外へのアクセスが可能となりうる脆弱性が発見されました。 この脆弱性は、CVE-2018-8778 として登録されています。

詳細

組み込みクラス String のメソッド String#unpack では、引数でフォーマット指定子を与えますが、位置指定子 @ によって指定した位置のデータを読み込むことができます。この際、位置指定として巨大な整数を与えた場合、内部処理的に負数とみなされて、文字列の範囲外のデータにアクセスできてしまっていました。 このため、外部の入力を String#unpack の引数として指定可能な場合、攻撃者によってヒープ上の領域が読み込み可能となっていました。

この問題の影響を受けるバージョンの 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 62992 より前の開発版

クレジット

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

更新履歴

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