
CVE-2020-10663 (json gem의 취약점) 우회 방법
json gem에는 보안 취약점 CVE-2020-10663이 있습니다. 특정 JSON 문서를 구문 분석할 때 json gem은 대상 시스템에서 임의의 객체를 생성하도록 강제될 수 있습니다.
사용자는 json 2.3.0 이상으로 업그레이드할 것을 강력히 권장합니다.
json 버전을 업그레이드할 수 없는 사용자를 위해, 이 gem(json_cve_2020_10663)은 사용자의 json 버전을 CVE-2020-10663에 대해 monkey-patch합니다.
현재 버전의 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 라이선스 조건에 따라 오픈 소스로 제공됩니다.