
json gem にはセキュリティ上の脆弱性 CVE-2020-10663 があります。特定の JSON ドキュメントを解析すると、json gem は対象システム内に任意のオブジェクトを作成するよう強制される可能性があります。
ユーザーには、json 2.3.0 以降へのアップグレードを強くお勧めします。
json のバージョンをアップグレードできないユーザーのために、この gem(json_cve_2020_10663)は、お使いの json バージョンに CVE-2020-10663 対策のモンキーパッチを適用します。
なお、現在のバージョンの Rails 3.2 LTS または 4.2 LTS を使用している場合、この gem は不要です。
json 1.7.7 以降、ただし 2.3.0 未満。アプリケーションの Gemfile に次の行を追加してください:
gem 'json_cve_2020_10663'
その後、以下を実行します:
$ bundle
または、以下のように直接インストールします:
$ gem install json_cve_2020_10663
json gem にパッチを適用するには、gem を require します:
require 'json_cve_2020_10663'
Rails はアプリ起動時に Gemfile 内のすべての gem を自動的に require することに注意してください。
パッチが適用されたかどうかは、アプリケーション環境で次のコードを実行して確認できます:
JSON::GenericObject.json_creatable = true
JSON('{"json_class":"JSON::GenericObject"}').class
これが Hash を返す場合、パッチは正しく適用されています。JSON::GenericObject を返す場合、パッチは読み込まれていません。
リポジトリをチェックアウトしたら、bin/setup を実行して依存関係をインストールします。次に、rake spec を実行してテストを実行します。また、bin/console を実行すると、対話型プロンプトで実験することもできます。
この gem をローカルマシンにインストールするには、bundle exec rake install を実行します。新しいバージョンをリリースするには、version.rb のバージョン番号を更新し、bundle exec rake release を実行します。これにより、バージョンの git タグが作成され、git コミットとタグがプッシュされ、.gem ファイルが rubygems.org にプッシュされます。
この gem は、MIT License の条件のもとでオープンソースとして利用できます。