CVE-2020-10663: JSON における安全でないオブジェクトの生成の脆弱性について(追加の修正)
Posted by mame on 19 Mar 2020
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) 初版
最近のニュース
Ruby 4.0.2 リリース
Ruby 4.0.2 がリリースされました。
Posted by k0kubun on 16 Mar 2026
Ruby 3.4.9 リリース
Ruby 3.4.9 がリリースされました。
Posted by nagachika on 11 Mar 2026
関西Ruby会議09の参加登録が開始されました
日本Rubyの会が後援する、地域Ruby会議(RegionalRubyKaigi)の1つである関西Ruby会議09の参加登録が開始されました。
Posted by Yudai Takada(@ydah) on 3 Mar 2026
Ruby 4.0.0 リリース
Ruby 4.0.0 が公開されました。 Ruby 4.0 には “Ruby Box”、”ZJIT” ほか多数の改善が含まれています。
Posted by naruse on 25 Dec 2025