json gem 存在一个安全漏洞 CVE-2020-10663。在解析某些 JSON 文档时,json gem 可能被诱导在目标系统中创建任意对象。
强烈建议用户升级到 json 2.3.0 或更高版本。
对于无法升级 json 版本的用户,此 gem(json_cve_2020_10663)会对您的 json 版本进行 monkey-patch,以抵御 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
引入该 gem 以修补 json gem:
require 'json_cve_2020_10663'
请注意,当您的应用程序启动时,Rails 会自动加载 Gemfile 中的所有 gem。
您可以通过在应用程序环境中运行以下代码来验证补丁是否已生效:
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 许可证 的条款。