
أداة بحث مصممة للتحقق من ثغرة OpenSSL CVE-2014-0160
أداة بسيطة مكتوبة بلغة Ruby تتيح اختبار خوادمك بحثًا عن ثغرة OpenSSL CVE-2014-0160.
لن أتحمل المسؤولية عن أي ضرر قد يحدث نتيجة استخدام هذه الأداة. لقد كُتبت لفحص الخوادم الخاصة بحثًا عن ثغرة محددة وقياس تسريبات البيانات المحتملة المتعلقة بالمستخدمين تحت حركة المرور العالية. وهي مشاركة كأداة للتدقيق الأمني الداخلي.
يتطلب :
لتثبيت هذه المتطلبات الأساسية، قم أولاً بتنزيل وتثبيت Ruby لمنصتك.
ثم ثبّت Bundler باستخدام الأمر gem install bundler واسترجع تبعيات المشروع بتنفيذ bundle install في المجلد الجذر للمشروع.
صيغة سطر الأوامر هي ruby src/run.rb <host> [<port>]
إذا لم يظهر خادمك كأنه معرّض للثغرة، فسيكون الناتج بهذا الشكل :
Host server:443 seems safe
أما إذا كان معرّضًا للثغرة، فسيعرض الناتج حوالي 64 كيبي بايت من البيانات المسروقة من الذاكرة معروضة كتفريغ سداسي عشر لتتمكن من التحقق مما إذا كان من الممكن حدوث كشف للمعلومات الحساسة أم لا.
Host server:443 is vulnerable! Heartbeat response payload : 00000000 d4 03 03 53 4a 84 a9 00 01 02 03 04 05 06 07 08 |...SJ...........| 00000010 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 |................| 00000020 19 1a 1b 00 01 a6 00 00 00 01 00 02 00 03 00 04 |................| 00000030 00 05 00 06 00 07 00 08 00 09 00 0a 00 0b 00 0c |................| 00000040 00 0d 00 0e 00 0f 00 10 00 11 00 12 00 13 00 14 |................| 00000050 00 15 00 16 00 17 00 18 00 19 00 1a 00 1b 00 1c |................| 00000060 00 1d 00 1e 00 1f 00 20 00 21 00 22 00 23 00 24 |....... .!.".#.$| 00000070 00 25 00 26 00 27 00 28 00 29 00 2a 00 2b 00 2c |.%.&.'.(.).*.+.,| 00000080 00 2d 00 2e 00 2f 00 30 00 31 00 32 00 33 00 34 |.-.../.0.1.2.3.4| ....
وفقًا لمعايير RFC 6520 و 6066، يجب أن يكون الحد الأقصى لحجم رسالة Heartbeat إما أو
أو
أو
أو
بايت اعتمادًا على استخدام امتداد الحد الأقصى لطول الجزء أو عدم استخدامه.
اقتباس من RFC 6520 :
يجب ألا يتجاوز الطول الإجمالي لرسالة HeartbeatMessage حد 2^14 أو max_fragment_length عند التفاوض عليه كما هو معرف في RFC 6066.
اقتباس من RFC 6066 :
يجب أن يحتوي حقل "extension_data" لهذا الامتداد على:
enum{ 2^9(1), 2^10(2), 2^11(3), 2^12(4), (255) } MaxFragmentLength;
وقيمته هي الحد الأقصى المطلوب لطول الجزء. القيم المسموح بها لهذا الحقل هي: 2^9, 2^10, 2^11, و 2^12.
هذا يعني أن الحد الأقصى لحجم الجزء المسروق من البيانات يجب أن يكون حوالي 16 كيبي بايت. ومع ذلك، لا يلتزم OpenSSL بهذا القيد، مما يسمح باستخدام القيمة القصوى لحقل طول حمولة رسالة Heartbeat، أي 65535 (0xFFFF).