
[Moved to Codeberg] ماسح محلي بسيط لنسخ log4j الضعيفة

(مكتوب بلغة Go لأنه، كما تعلم، "اكتب مرة واحدة، شغّل في أي مكان.")
هذه أداة بسيطة يمكن استخدامها للعثور على نسخ معرضة للخطر من log4j 1.x و 2.x في تثبيتات برامج Java مثل تطبيقات الويب. يتم فحص ملفات JAR و WAR ويتم وضع علامة على ملفات الفئات المعروفة بأنها معرضة للخطر. يتم الفحص بشكل متكرر: ملفات WAR التي تحتوي على ملفات WAR التي تحتوي على ملفات JAR التي تحتوي على ملفات فئات معرضة للخطر يجب أن يتم وضع علامة عليها بشكل صحيح.
الثغرات المعترف بها حالياً هي:
تتحقق أداة الفحص حالياً من القطع الأثرية المعروفة للبناء التي تم الحصول عليها عبر Maven. إعادة البناء من المصدر كما يتم القيام بها لتوزيعات Linux قد لا يتم التعرف عليها.
كما يتم تضمين أداة تصحيح بسيطة يمكن استخدامها لتصحيح الفئات الضارة من ملفات JAR عن طريق إعادة كتابة بنية أرشيف ZIP.
يتم توفير ملفات ثنائية لـ x86_64 Windows و Linux و MacOSX للإصدارات الموسومة عبر صفحة Releases.
$ ./local-log4j-vuln-scanner [--verbose] [--quiet] \
[--ignore-v1] [--ignore-vulns=...] \
[--exclude /path/to/exclude …] \
[--scan-network] \
[--log /path/to/file.log] \
/path/to/app1 /path/to/app2 …
سيُظهر العلم --verbose كل ملف .jar و .war تم فحصه، حتى لو لم يتم العثور على مشكلة.
سيقوم العلم --quiet بكتم الإخراج باستثناء مؤشرات الثغرة المعروفة.
سيقوم العلم --ignore-v1 باستبعاد فحوصات ثغرات log4j 1.x.
يسمح العلم --ignore-vulns باستبعاد فحوصات ثغرات
محددة. على سبيل المثال: -ignore-vulns=CVE-2021-45046,CVE-2021-44832.
للتحقق من جميع الثغرات المعروفة، مرر قائمة فارغة هكذا:
-ignore-vulns=
يسمح العلم --log بكتابة كل شيء إلى ملف سجل بدلاً من stdout/stderr.
استخدم العلم --exclude لاستبعاد المجلدات الفرعية من الفحص. يمكن استخدامه عدة مرات.
يخبر العلم --scan-network الماسح بالبحث في أنظمة ملفات الشبكة (معطل افتراضياً). لم يتم تنفيذ هذا لنظام Windows.
إذا تم العثور على ملفات فئات تشير إلى إحدى الثغرات، تتم طباعة رسائل مثل التالية إلى الإخراج القياسي:
./local-log4j-vuln-scanner - ماسح ثغرات log4j المحلي البسيط
التحقق من الثغرات: CVE-2019-17571, CVE-2021-44228, CVE-2021-45105
فحص /path/to/vuln/log4shell-vulnerable-app-0.0.1-SNAPSHOT.war
مؤشر لمكوّن معرض للخطر موجود في /path/to/vuln/Downloads/log4shell-vulnerable-app-0.0.1-SNAPSHOT.war::WEB-INF/lib/log4j-core-2.14.1.jar (org/apache/logging/log4j/core/net/JndiManager.class): JndiManager.class log4j 2.14.0-2.14.1 CVE-2021-44228, CVE-2021-45105
انتهى الفحص
تحذير: استخدم هذا على مسؤوليتك الخاصة واحتفظ بملفات JAR الأصلية.
$ ./local-log4j-vuln-patcher log4j-core-2.14.1.jar log4j-core-2.14.1-patched.jar
تصفية org/apache/logging/log4j/core/pattern/MessagePatternConverter.class (log4j 2.14)
تصفية org/apache/logging/log4j/core/net/JndiManager.class (log4j 2.14.0-2.14.1)
تمت الكتابة إلى log4j-core-2.14.1-patched.jar
قم بتثبيت مترجم Go.
قم بتشغيل الأوامر التالية في المستودع المستخرج:
go build -o local-log4j-vuln-scanner ./scanner
go build -o local-log4j-vuln-patcher ./patcher
(أضف الامتداد المناسب .exe على أنظمة Windows، بالطبع.)
رخصة جنو العمومية العامة، الإصدار 3
Hilko Bengen <[email protected]>