CVE-2020-10663: JSON における安全でないオブジェクトの生成の脆弱性について(追加の修正)

RubyにバンドルされているJSON gemに、安全でないオブジェクトの生成を可能とする脆弱性が報告されました。 この脆弱性は CVE-2020-10663 として登録されています。 ユーザのみなさんにはJSON gemを更新することを強くおすすめします。

詳細

対象のシステムにJSONドキュメントをパースさせる際に、JSON gem(Rubyにバンドルされているものを含む)に対して任意のオブジェクトを生成させることができます。

これは CVE-2013-0269 と同じ問題です。 当時の修正は不完全で、JSON.parse(user_input)は対処していましたが、JSON(user_input)JSON.parse(user_input, nil)などといった他のスタイルのJSONパースが対処されていませんでした。

攻撃について詳しくは CVE-2013-0269 のアナウンスをご参照ください。 なお、当時はこの問題によってガベージコレクトできないSymbolオブジェクトを大量に生成することでサービス不能攻撃(Denial of Service)を引き起こすことができましたが、今はSymbolオブジェクトはガベージコレクト可能なのでこのタイプの攻撃は成立しません。 しかしながら、任意オブジェクトを生成することはアプリケーションコード次第で致命的な結果を引き起こす可能性があります。

json gemを2.3.0かそれ以降にしてください。gem update jsonでアップデートできます。もしbundlerを使っている場合は、Gemfileにgem "json", ">= 2.3.0"を追加してください。

影響を受けるバージョン

  • JSON gem 2.2.0 およびそれ以前のバージョン

クレジット

この問題を発見したJeremy Evansに感謝します。

更新履歴

  • 2020-03-19 22:00:00 (JST) 初版