
سكربت استغلال بايثون لـ CVE-2019-5420، يستهدف القوة الغاشمة لمفتاح AES GCM للجلسات الموقعة في Ruby on Rails لتحقيق تنفيذ برمجيات عن بُعد في بيئات التطوير/المرحلة التجريبية.
يوفّر Ruby-on-Rails ثلاث بيئات مختلفة يمكنه العمل فيها: التطوير (development) والاختبار (test) والإنتاج (production). من الواضح أنه لا ينبغي أن يكون الكود الذي يعمل في بيئة التطوير أو الاختبار متاحًا على الإنترنت، لكنه (كما يحدث دائمًا) يحدث ذلك (على سبيل المثال في بيئات التدريج staging).
يستخدم Ruby-on-Rails "الجلسات الموقّعة" (signed-sessions) للسماح للناس بتوسيع نطاق تطبيقاتهم بسهولة. بمرور الوقت، تغيّرت طريقة التعامل مع الجلسات. مع الإصدار 5.2.2، أصبحت الجلسات بيانات مُرمّزة بصيغة JSON محمية باستخدام AES GCM (aes-256-gcm) افتراضيًا.
إن ثغرة CVE-2019–5420 بسيطة جدًا في الواقع. يمكن تخمين المفتاح المستخدم لتشفير الجلسات (أو تخمينه بالقوة الغاشمة) في وضع التطوير (development mode) لأنه يعتمد على اسم التطبيق. وفقًا للنشرة الأمنية، يمكن استخدام هذه المشكلة للحصول على تنفيذ كود (RCE).
نص برمجي بسيط بلغة Python يستغل الوظيفة المذكورة أعلاه.