`String#unpack` 方法存在緩衝區溢位的安全性風險。
此風險的 CVE 識別號為 [CVE-2018-8778](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8778)。

## 細節

`String#unpack` 收到 format specifiers 為參數時，可用 `@` 指定解析資料的位置。若 `@` 指定了一個很大的數字，數字會被當成是負數，導致緩衝區溢出。

若腳本使用了 `String#unpack` 接受外來輸入，攻擊者可以利用此風險讀出 heap 的資料。

所有使用受影響版本的使用者應立即升級。

## 受影響版本

* Ruby 2.2 系列: 2.2.9 以及之前的版本
* Ruby 2.3 系列: 2.3.6 以及之前的版本
* Ruby 2.4 系列: 2.4.3 以及之前的版本
* Ruby 2.5 系列: 2.5.0 以及之前的版本
* Ruby 2.6 系列: 2.6.0-preview1
* trunk revision r62992 之前的版本

## 致謝

感謝 [aerodudrizzt](https://hackerone.com/aerodudrizzt) 回報此問題。

## 歷史

* 初次發佈於 2018-03-28 14:00:00 (UTC)
