Ruby の組み込みクラス `String` のメソッド `String#unpack` において、攻撃者により配列の範囲外へのアクセスが可能となりうる脆弱性が発見されました。
この脆弱性は、[CVE-2018-8778](http://cve.mitre.org/cgi-bin/cvename.cgi?name=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](https://hackerone.com/aerodudrizzt) 氏によって報告されました。

## 更新履歴

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