CVE-2018-16396: Array#pack および String#unpack の一部のフォーマット指定においてtaintフラグが伝播しない脆弱性について

CVE-2018-16396: Array#pack および String#unpack の一部のフォーマット指定においてtaintフラグが伝播しない脆弱性について:

Array#pack および String#unpack の一部のフォーマット指定において、元データの taint フラグが適切に出力文字列・配列に対して伝播しないという脆弱性が発見されました。
この脆弱性は、CVE-2018-16396 として登録されています。

詳細

Array#pack メソッドでは、引数で指定されたフォーマット文字列に従い、レシーバである配列の内容を文字列に変換したものを返します。
本来であれば、配列の要素の中に taint フラグが立っているものが含まれていれば、返す文字列にもそれが伝播して taint フラグが立つべきです。
また、その逆を行う String#unpack メソッドにおいても、レシーバである文字列に taint フラグが立っている場合、返される配列とその各要素にそれが伝播して taint フラグが立たなければなりません。
ところが、 B b H h というフォーマットに関しては、taint フラグが伝播していませんでした。
このため、外部の信頼できない入力をこれらのフォーマットを指定して文字列化していて、かつ、その生成された文字列が信頼できるかどうかの判断に taint フラグを使用していた場合、および、外部の信頼できない入力文字列をこれらのフォーマットを指定して unpack し、かつ、その生成された各要素が信頼できるかどうかの判断に taint フラグを使用していた場合、誤った判断となってしまう可能性があります。

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

影響を受けるバージョン

  • Ruby 2.3.7 以前の全ての Ruby 2.3 系列
  • Ruby 2.4.4 以前の全ての Ruby 2.4 系列
  • Ruby 2.5.1 以前の全ての Ruby 2.5 系列
  • Ruby 2.6.0-preview2 以前の全ての Ruby 2.6 プレビュー
  • revision 65125 より前の開発版

クレジット

この脆弱性は、Chris Seaton 氏が報告してくださいました。

更新履歴

  • 2018-10-17 23:00:00 (JST) 初版
Posted by usa on 17 Oct 2018

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)