
ملفات PCAP وتوقيعات Suricata لكشف محاولات استغلال ثغرة OpenSSL CVE-2022-3602، بما في ذلك حركة مرور خبيثة من العميل/الخادم وأمثلة شرعية لشهادات punycode.
PCAPs أو لم يحدث ذلك
في أعقاب الثغرة الأمنية التي تم الكشف عنها مؤخرًا في OpenSSL v3.0 حتى v3.0.6 (CVE-2022-3602)، قمنا بالتحقيق في كيفية ظهور محاولة الاستغلال "على الشبكة". يحتوي هذا المستودع على ملفات PCAP لسيناريوهات استغلال مختلفة، بالإضافة إلى قواعد كشف لـ Suricata.
كما يتضمن ملف PCAP يحتوي على تبادل شهادة شرعية مع عنوان بريد إلكتروني مشفر بـ punycode في اسم البديل للموضوع (subject alternative name). استخدمنا ملف الـ pcap هذا لاختبار ما إذا كانت القواعد لا تُطلق إنذارات كاذبة على الشهادات التي تحتوي فقط على اسم بديل قصير للموضوع، بدلاً من اسم طويل جدًا نتوقعه في محاولة الاستغلال.
استخدمنا الموارد التالية لإنشاء ملفات PCAP تحتوي على حركة مرور تُفعّل ثغرة OpenSSL CVE-2022-3602:
| PCAP | الوصف |
|---|
| spookyssl-windowscrash.pcap | تم إنشاؤه باستخدام PoC الخاص بتعطل Windows من DataDog |
| spookyssl-malicious_client.pcap | تم إنشاؤه باستخدام PoC الخاص بالعميل الخبيث من DataDog |
| spookyssl-malicious_server.pcap | تم إنشاؤه باستخدام PoC الخاص بالخادم الخبيث من DataDog |
| not-spookyssl-certificate.pcap | شهادة punycode شرعية (وليست خبيثة) |
تمت كتابة توقيعات Suricata التالية لكشف ثغرة OpenSSL CVE-2022-3602:
alert tls any any -> any any (msg:"FOX-SRT - Exploit - Possible SpookySSL Certificate Observed (CVE-2022-3602)"; \
flow:established; \
content:"|2b 06 01 05 05 07 08 09|"; fast_pattern; \
content:"|06 03 55 1d 1e|"; content:"xn--"; \
content:!"|81|"; distance:-6; within:1; byte_test:2,>=,500,-6,relative; \
classtype:attempted-user; threshold:type limit,track by_src,count 1,seconds 3600; \
reference:url,www.openssl.org/news/secadv/20221101.txt; \
reference:url,https://github.com/fox-it/spookyssl-pcaps; \
metadata:ids suricata; \
metadata:created_at 2022-11-02; sid:21004268; rev:3;)
لتفصيل مطابقات المحتوى:
|2b 06 01 05 05 07 08 09| -- يكتشف type-id: 1.3.6.1.5.5.7.8.9 (id-pkix.8.9) (id-on-SmtpUTF8Mailbox)|06 03 55 1d 1e| -- يكتشف Extension Id: 2.5.29.30 (id-ce-nameConstraints) (امتداد nameConstraints)"xn--" -- يكتشف punycode، بالاشتراك مع حجم قيمة punycode باستخدام كلمة byte_test:
byte_test:2,>=,500,-6,relative;نقوم أيضًا بالفحص صراحةً لقيم punycode الصغيرة، وفي هذه الحالة يجب ألا يُطلق التوقيع إنذارًا باستخدام:
content:!"|81|"; distance:-6; within:1;لن تعمل توقيعات الشبكة مع الجلسات التي تستخدم TLSv1.3 لأن الشهادات تكون مشفرة في هذه الحالة.
يمكنك أيضًا رؤية حزمة إعادة تعيين في spookyssl-windowscrash.pcap بسبب تعطل العميل.
