
ماسحات ضوئية لملفات Jar التي قد تكون عرضة لـ CVE-2021-44228
قد تكون التطبيقات المعرضة لثغرة log4j CVE-2021-44228 قابلة للكشف عن طريق فحص ملفات jar وwar وear للبحث عن وجود JndiLookup.class.
اعتمادًا على النظام الأساسي الذي تفحصه، قد يكون من الأفضل تشغيل سكريبت PowerShell أو Python3. في كلتا الحالتين، الوسيط الاختياري هو الدليل الأعلى مستوى الذي ترغب في استخدامه لبدء البحث.
أي ملف يتم اكتشافه يستحق التحقق لتحديد ما إذا كان التطبيق الذي يستخدمه معرضًا للخطر. بالنسبة لأي JndiLookup.class موجود، يتضمن log4j عادةً الإصدار في اسم ملف jar. على سبيل المثال، العثور على log4j-core-2.14.1.jar يشير إلى تطبيق معرض للخطر. بدلاً من ذلك، قد ينتج log4j-core-2.16.jar أيضًا نتيجة لأن كود JndiLookup لا يزال موجودًا في إصدار log4j 2.16، ولكنه معطل افتراضيًا. راجع VU#930724 لمزيد من التفاصيل.
على سبيل المثال، فيما يلي استدعاء لإصدار PowerShell من الماسح الضوئي:

وبالمثل، فيما يلي استدعاء لإصدار Python3:

وأخيرًا، فيما يلي استدعاء لإصدار Bash:

لاحظ أن إصدارات Bash وPython من هذا السكريبت ستقتصر تصميمًا على فحص نظام ملفات واحد.
مع إصدار PowerShell، يمكن توجيه المواقع المراد فحصها إلى السكريبت للتحكم فيما يتم فحصه. على سبيل المثال، لفحص قائمة من المسارات الموجودة في ملف باسم paths.txt:
get-content .\paths.txt | .\checkjndi.ps1
دعنا ننظر إلى أول نتيجة في تنفيذ فحص Windows لدينا:
WARNING: C:\tmp\2.15\log4j-core-2.15.0.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
بناءً على اسم jar، هذه مكتبة من log4j 2.15. على الرغم من أن هذا الإصدار من log4j يعالج CVE-2021-44228، إلا أنه لا يزال يحتوي على ثغرة موضحة في CVE-2021-45046. تأثير CVE-2021-45046 هو رفض الخدمة لتطبيقات Java معينة فقط تستخدم log4j 2.15. بالنسبة لتطبيقات Java التي تستخدم إصدارات log4j السابقة لـ 2.15 والتي تفي أيضًا بالمتطلبات الأساسية لـ CVE-2021-45046، فإن التأثير هو تنفيذ تعليمات برمجية عن بُعد (RCE).
دعنا ننظر إلى النتيجة الثانية:
C:\tmp\2.16\log4j-core-2.16.0.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class ** BUT APPEARS TO BE PATCHED **
يحتوي هذا الملف jar على إصدار 2.16 من log4j، وهو غير معرض لـ CVE-2021-44228. يتم الإبلاغ عن هذه النتيجة لأغراض إعلامية، مما يظهر أن المورد قد قام بتصحيح منتجه.
دعنا ننظر إلى النتيجة الثالثة:
WARNING: C:\tmp\ghidra_10.0_PUBLIC\Ghidra\Framework\Generic\lib\log4j-core-2.12.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
هنا يمكننا أن نرى أن Ghidra يستخدم log4j الإصدار 2.12.1، وبالتالي يجب أن نفترض أنه معرض للخطر. وبالفعل، فإن إصدارات Ghidra قبل 10.1 معرضة لـ CVE-2021-44228.
يجب عليك التحقق من أي نتائج تم الإبلاغ عنها بواسطة أي من هذه السكريبتات، والتأكد من أن إصدار log4j هو بالفعل الإصدار الثابت 2.16، أو التواصل مع مورد البرنامج للحصول على إصدار ثابت من البرنامج. بدلاً من ذلك، يحتوي VU#930724 على معلومات حول كيفية إزالة JndiLookup.class من ملفات jar المعرضة للخطر.
يحتوي إصدار PowerShell من الماسح الضوئي على تقارير إضافية عن الأخطاء عندما يتعذر فحص الملفات أو الدلائل. على وجه الخصوص، أي أخطاء Unable to scan تبلغ عن UnauthorizedAccessException تشير إلى مشكلة إذن في الوصول إلى دليل و/أو ملف. أي أخطاء Unable to scan تبلغ عن InvalidDataException تكون عادةً بسبب أرشيف تالف.