
نصوص برمجية للمسح التلقائي والاستغلال عن بُعد لـ CVE-2020-1971 (ثغرة إلغاء مرجع المؤشر الفارغ في OpenSSL). يتضمن مصدر OpenSSL 1.1.1i المُصحح ونصوص تثبيت/تحديث لأنظمة Linux وWindows.
CVE-2020-1971 سكريبت المسح التلقائي والاستغلال عن بُعد. سكريبت المسح المحلي التلقائي والتصحيح.
5:03 مساءً
أنا حاليًا أطور السكريبتات وآمل في إصدار كل شيء بحلول الليلة. في الوقت الحالي، يحتوي هذا المستودع فقط على مصدر OpenSSL 1.1.1i المُصحح. أعمل حاليًا على سكريبت تصحيح التثبيت/التحديث.
5:50 مساءً
تم رفع سكريبت التثبيت لنظام لينكس Debian/Ubuntu. لتعليمات التثبيت، انظر "تثبيت لينكس"
6:40 مساءً
نوع X.509 GeneralName هو نوع عام لتمثيل أنواع مختلفة من الأسماء. أحد أنواع الأسماء هذه يُعرف باسم EDIPartyName. يوفر OpenSSL دالة GENERAL_NAME_cmp التي تقارن مثيلات مختلفة من GENERAL_NAME لمعرفة ما إذا كانت متساوية أم لا. تتصرف هذه الدالة بشكل غير صحيح عندما يحتوي كلا GENERAL_NAME على EDIPARTYNAME. قد يحدث إلغاء مرجع مؤشر فارغ وتعطل مما يؤدي إلى هجوم محتمل لحجب الخدمة.
يستخدم OpenSSL نفسه دالة GENERAL_NAME_cmp لغرضين
مقارنة أسماء نقاط توزيع CRL بين CRL متاح ونقطة توزيع CRL مضمنة في شهادة X509
عند التحقق من أن موقّع رمز استجابة الطابع الزمني يطابق اسم سلطة الطابع الزمني (المكشوف عبر دوال API TS_RESP_verify_response و TS_RESP_verify_token)
إذا تمكن المهاجم من التحكم في كلا العنصرين اللذين تتم مقارنتهما، فيمكنه التسبب في تعطل. على سبيل المثال، إذا تمكن المهاجم من خداع عميل أو خادم للتحقق من شهادة ضارة مقابل CRL ضار، فقد يحدث ذلك.
لاحظ أن بعض التطبيقات تقوم تلقائيًا بتنزيل CRLs بناءً على عنوان URL مضمن في الشهادة. يحدث هذا التحقق قبل التحقق من التوقيعات الموجودة على الشهادة و CRL. تدعم أدوات s_server و s_client و verify الخاصة بـ OpenSSL الخيار "-crl_download" الذي ينفذ التنزيل التلقائي لـ CRL، وقد تم إثبات عمل هذا الهجوم ضد هذه الأدوات.
لاحظ أن خطأ غير ذي صلة يعني أن الإصدارات المتأثرة من OpenSSL لا يمكنها تحليل أو بناء ترميزات صحيحة لـ EDIPARTYNAME. ومع ذلك، من الممكن بناء EDIPARTYNAME مشوه سيقبله محلل OpenSSL وبالتالي تشغيل هذا الهجوم.
جميع إصدارات OpenSSL 1.1.1 و 1.0.2 تتأثر بهذه المشكلة. إصدارات OpenSSL الأخرى غير مدعومة ولم يتم فحصها. تم الإصلاح في OpenSSL 1.1.1i (المتأثر 1.1.1-1.1.1h). تم الإصلاح في OpenSSL 1.0.2x (المتأثر 1.0.2-1.0.2w).
sudo chmod +x Linux_Patched_Install_From_Source_Script
شغّل:
sudo ./Linux_Patched_Install_From_Source_Script
يستخدم OpenSSL "الوطني" واجهات برمجة تطبيقات Windows مباشرة في وقت التشغيل. لبناء OpenSSL وطني يمكنك استخدام إما:
مترجم Microsoft Visual C++ (MSVC) على سطر الأوامر
أو
مترجم MinGW المتقاطع يعمل في بيئة التطوير الشبيهة بـ GNU MSYS2 أو يعمل على Linux أو Cygwin
يعتمد OpenSSL "المستضاف" على طبقة توافق POSIX خارجية للبناء (باستخدام غلاف شل ومترجم وأدوات GNU/Unix) وفي وقت التشغيل. لهذا الخيار، يمكنك استخدام Cygwin.
بالإضافة إلى المتطلبات والتعليمات المذكورة في INSTALL.md، هذه مطلوبة أيضًا:
Perl. Strawberry Perl، متاح من http://strawberryperl.com/ يرجى قراءة NOTES.PERL لمزيد من المعلومات، بما في ذلك استخدام CPAN. بديل آخر هو ActiveState Perl، https://www.activestate.com/ActivePerl قد تحتاج لبناء وحدة Perl Win32/Console.pm بشكل صريح عبر https://platform.activestate.com/ActiveState ثم تنزيلها.
مترجم Microsoft Visual C.
Netwide Assembler (NASM)، متاح من https://www.nasm.us لاحظ أن NASM هو المجمّع الوحيد المدعوم.
تثبيت Perl
تثبيت NASM
تأكد من أن كل من Perl و NASM موجودان في %PATH%
استخدم موجه أوامر مطور Visual Studio مع صلاحيات إدارية، مع اختيار أحد المتغيرات حسب البنية المستهدفة. أو قم بتشغيل "cmd" ونفذ "vcvarsall.bat" مع أحد الخيارات x86, x86_amd64, x86_arm, x86_arm64, amd64, amd64_x86, amd64_arm, أو amd64_arm64. يؤدي هذا إلى إعداد متغيرات البيئة اللازمة لـ nmake.exe و cl.exe إلخ. انظر أيضًا https://docs.microsoft.com/cpp/build/building-on-the-command-line
من جذر دليل مصدر OpenSSL قم بتشغيل perl Configure VC-WIN32 إذا كنت تريد OpenSSL 32 بت أو perl Configure VC-WIN64A إذا كنت تريد OpenSSL 64 بت أو perl Configure لترك Configure يحدد المنصة
nmake
nmake test
nmake install
للحصول على تعليمات التثبيت الكاملة، أو إذا حدث خطأ في أي مرحلة، تحقق من ملف INSTALL.md.
أدلة التثبيت الافتراضية مشتقة من متغيرات البيئة.
بالنسبة لـ VC-WIN32، يتم استخدام الإعدادات الافتراضية التالية:
PREFIX: %ProgramFiles(86)%\OpenSSL
OPENSSLDIR: %CommonProgramFiles(86)%\SSL
بالنسبة لـ VC-WIN64، يتم استخدام الإعدادات الافتراضية التالية:
PREFIX: %ProgramW6432%\OpenSSL
OPENSSLDIR: %CommonProgramW6432%\SSL
إذا لم تكن متغيرات البيئة هذه موجودة (على سبيل المثال في تثبيت Win32 خالص)، يتم استخدام هذه البدائل:
PREFIX: %ProgramFiles%\OpenSSL
OPENSSLDIR: %CommonProgramFiles%\SSL
لاحظ أيضًا أن هذه الأدلة عادةً ما تكون محمية ضد الكتابة، حتى لو كان حسابك في مجموعة المسؤولين. لتجاوز ذلك، ابدأ موجه الأوامر بالنقر بزر الماوس الأيمن واختيار "تشغيل كمسؤول" قبل تشغيل 'nmake install'. الحل الآخر هو بالطبع اختيار مجموعة مختلفة من الأدلة باستخدام --prefix و --openssldir عند التهيئة.
أهداف UWP تدعم فقط بناء المكتبات الثابتة والديناميكية.
يجب عليك تعريف نوع المنصة كـ "uwp" والهندسة المستهدفة عبر "vcvarsall.bat" قبل التجميع. على سبيل المثال، إذا كنت تريد بناء إصدارات "arm64"، يجب تشغيل "vcvarsall.bat x86_arm64 uwp".
المراجع مقدمة لراحة القارئ للمساعدة في التمييز بين الثغرات.