
حل بديل لـ CVE-2020-10663 (ثغرة أمنية في json gem)
تحتوي json gem على ثغرة أمنية CVE-2020-10663. عند تحليل مستندات JSON معينة، يمكن إجبار json gem على إنشاء كائنات عشوائية في النظام المستهدف.
يُنصح المستخدمون بشدة بالترقية إلى json 2.3.0 أو أحدث.
بالنسبة للمستخدمين الذين لا يمكنهم ترقية إصدار json الخاص بهم، فإن هذه الـ gem (json_cve_2020_10663) تقوم بـ monkey-patch لإصدار 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
استدعِ الـ gem لتصحيح json gem:
require 'json_cve_2020_10663'
لاحظ أن Rails يقوم تلقائيًا باستدعاء جميع الـ gems الموجودة في Gemfile الخاص بك عند تشغيل تطبيقك.
يمكنك التحقق من تطبيق التصحيح عن طريق تشغيل الكود التالي من بيئة تطبيقك:
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 للإصدار، ويدفع commits وعلامات git، ويدفع ملف .gem إلى rubygems.org.
هذه الـ gem متاحة كمصدر مفتوح بموجب شروط MIT License.