Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
log4j-detector — ماسح نظام ملفات يكتشف إصدارات Log4J الضعيفة (CVE-2021-44228, CVE-2021-45046) عن طريق تحليل فئات Java المجمعة، بما في ذلك الأرشيفات المتداخلة. يعمل على لينكس، ويندوز، وماك. | Kitploit
أدوات/GitHubGitHub/mergebase/log4j-detector
التحليل الثابتماسحات الثغرات الأمنيةتحليل الثغرات الأمنيةأمن سلسلة التوريد
GitHubmergebase/log4j-detector

log4j-detector

ماسح نظام ملفات يكتشف إصدارات Log4J الضعيفة (CVE-2021-44228, CVE-2021-45046) عن طريق تحليل فئات Java المجمعة، بما في ذلك الأرشيفات المتداخلة. يعمل على لينكس، ويندوز، وماك.

عرض المستودع
6409612منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

شعار mergebase

مكتشف Log4j

ماسح ضوئي يكتشف إصدارات Log4J الضعيفة لمساعدة الفرق في تقييم تعرضهم لـ CVE-2021-44228 (حرج) و CVE-2021-45046 و CVE-2021-45105 و CVE-2021-44832. يمكنه البحث عن مثيلات Log4J عن طريق فحص نظام الملفات بالكامل بدقة، بما في ذلك جميع التطبيقات المثبتة. وهو قادر على العثور على مثيلات Log4J المخفية بعدة طبقات عميقة. يعمل على Linux و Windows و Mac وأي مكان آخر يعمل فيه Java أيضًا!

جدول المحتويات

  • مقدمة
  • مثال على الاستخدام
  • مزيد من الأمثلة على الاستخدام
  • فهم النتائج
  • الاستخدام
  • البناء من المصدر
  • الاختبار
  • الترخيص
  • الأسئلة الشائعة
    • كيف يعمل؟
    • هذا الماسح يبلغ فقط عن الإصابات في مكتبة log4j-core. ماذا عن ؟
log4j-api
  • لماذا التبليغ عن 2.10.0 و 2.15.0 و 2.16.0؟
  • ماذا عن نتائج "file1.war!/path/to/file2.zip!/path/to/file3.jar!/path/to/log4j.jar"؟
  • ماذا عن Log4J 1.2.x؟
  • كيف يمكنني التأكد من أن هذا ليس حصان طروادة يتظاهر بأنه كاشف Log4J؟
  • ما هو MergeBase؟
  • مقدمة

    يبلغ حاليًا عن إصدارات log4j-core 2.3.2 و 2.12.4 و 2.17.1 كـ _SAFE_ (آمنة)، و 2.3.1 و 2.12.2 و 2.12.3 و 2.15.0 و 2.16.0 و 2.17.0 كـ _OKAY_ (مقبولة) وجميع الإصدارات الأخرى كـ _VULNERABLE_ (قابلة للاختراق) (على الرغم من أنه يبلغ عن ما قبل الإصدار 2.0-beta9 كـ _POTENTIALLY_SAFE_ (قد تكون آمنة)). ويبلغ عن الإصدارات الأقدم من log4j-1.x كـ _OLD_ (قديمة).

    يمكنه اكتشاف log4j بشكل صحيح داخل ملفات jar/wars القابلة للتنفيذ من Spring Boot، والتبعيات المدمجة في uber jars، والملفات المظللة (shaded jars)، وحتى ملفات jar غير المضغوطة على نظام الملفات (المعروفة باسم *.class).

    نحتفظ حاليًا بمجموعة من عينات log4j التي نستخدمها للاختبار.

    مثال على الاستخدام:

    root@kitploit:~
    java -jar log4j-detector-2021.12.29.jar ./samples 
    
    -- github.com/mergebase/log4j-detector v2021.12.29 (من mergebase.com) يقوم بتحليل المسارات (قد يستغرق بعض الوقت).
    -- ملاحظة: استخدم العلامة '--verbose' لطباعة كل ملف تم فحصه إلى STDERR.
    false-hits/log4j-core-2.12.2.jar يحتوي على Log4J-2.x   == 2.12.2 _OKAY_
    false-hits/log4j-core-2.12.3.jar يحتوي على Log4J-2.x   == 2.12.3 _OKAY_
    false-hits/log4j-core-2.12.4.jar يحتوي على Log4J-2.x   == 2.12.4 _SAFE_
    false-hits/log4j-core-2.15.0.jar يحتوي على Log4J-2.x   == 2.15.0 _OKAY_
    false-hits/log4j-core-2.16.0.jar يحتوي على Log4J-2.x   == 2.16.0 _OKAY_
    false-hits/log4j-core-2.17.0.jar يحتوي على Log4J-2.x   == 2.17.0 _OKAY_
    false-hits/log4j-core-2.17.1.jar يحتوي على Log4J-2.x   >= 2.17.1 _SAFE_
    false-hits/log4j-core-2.3.1.jar يحتوي على Log4J-2.x   == 2.3.1 _OKAY_
    false-hits/log4j-core-2.3.2.jar يحتوي على Log4J-2.x   == 2.3.2 _SAFE_
    true-hits/log4j-core-2.0-beta9.jar يحتوي على Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
    true-hits/log4j-core-2.10.0.jar يحتوي على Log4J-2.x   >= 2.10.0 _VULNERABLE_
    true-hits/log4j-core-2.10.0.zip يحتوي على Log4J-2.x   >= 2.10.0 _VULNERABLE_
    true-hits/log4j-core-2.11.0.jar يحتوي على Log4J-2.x   >= 2.10.0 _VULNERABLE_
    true-hits/log4j-core-2.11.1.jar يحتوي على Log4J-2.x   >= 2.10.0 _VULNERABLE_
    true-hits/log4j-core-2.11.2.jar يحتوي على Log4J-2.x   >= 2.10.0 _VULNERABLE_
    true-hits/log4j-core-2.12.0.jar يحتوي على Log4J-2.x   >= 2.10.0 _VULNERABLE_
    true-hits/log4j-core-2.12.1.jar يحتوي على Log4J-2.x   >= 2.10.0 _VULNERABLE_
    true-hits/log4j-core-2.14.0.jar يحتوي على Log4J-2.x   >= 2.10.0 _VULNERABLE_
    true-hits/log4j-core-2.14.1.jar يحتوي على Log4J-2.x   >= 2.10.0 _VULNERABLE_
    true-hits/log4j-core-2.2.jar يحتوي على Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
    true-hits/log4j-core-2.3.jar يحتوي على Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
    true-hits/log4j-core-2.4.1.jar يحتوي على Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
    true-hits/log4j-core-2.4.jar يحتوي على Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
    true-hits/log4j-core-2.9.1.jar يحتوي على Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
    old-hits/log4j-1.1.3.jar يحتوي على Log4J-1.x   <= 1.2.17 _OLD_
    old-hits/log4j-1.2.17.jar يحتوي على Log4J-1.x   <= 1.2.17 _OLD_
    old-hits/log4j-core-2.0-beta2.jar يحتوي على Log4J-2.x   <= 2.0-beta8 _POTENTIALLY_SAFE_ (هل قمت بإزالة JndiLookup.class؟)
    

    فهم النتائج

    _VULNERABLE_ -> تحتاج إلى ترقية هذا الملف أو إزالته.

    _OKAY_ -> نبلغ عن ذلك لإصدارات Log4J 2.3.1 و 2.12.2 و 2.12.3 و 2.15.0 و 2.16.0 و 2.17.0. نوصي بالترقية إلى 2.17.1.

    _SAFE_ -> نبلغ حاليًا عن ذلك فقط لإصدارات Log4J 2.3.2 و 2.12.4 و 2.17.1 (وما بعدها).

    _OLD_ -> أنت آمن من CVE-2021-44228، ولكن يجب التخطيط للترقية لأن Log4J 1.2.x تجاوز عمرها الافتراضي منذ 7 سنوات ولها عدة ثغرات أمنية معروفة.

    _POTENTIALLY_SAFE_ -> ملف "JndiLookup.class" غير موجود، إما لأن إصدار Log4J الخاص بك قديم جدًا (قبل 2.0-beta9)، أو لأن شخصًا ما أزال هذا الملف بالفعل. تأكد من أن شخصًا من فريقك أو شركتك هو من أزال "JndiLookup.class" إذا كان الأمر كذلك، لأنه من المعروف أن المهاجمين يزيلون هذا الملف بأنفسهم لمنع المهاجمين المنافسين الإضافيين من الوصول إلى الأنظمة المخترقة.

    الاستخدام

    root@kitploit:~
    java -jar log4j-detector-2021.12.29.jar 
    
    الاستخدام: java -jar log4j-detector-2021.12.29.jar [--verbose] [--json] [--stdin] [--exclude=X] [مسارات للفحص...]
    
      --json       - إخراج النتائج إلى STDOUT بصيغة JSON. (لا تزال الأخطاء/التحذيرات تُصدر إلى STDERR)
      --stdin      - قراءة STDIN للمسارات المراد استكشافها (مسار واحد لكل سطر)
      --exclude=X  - حيث X هي قائمة JSON تحتوي على مسارات كاملة لاستبعادها. يجب أن تكون JSON صالحة.
    
                     مثال: --exclude='["/dev", "/media", "Z:\TEMP"]'
    
    رموز الخروج:  0 = لم يتم العثور على إصدارات Log4J ضعيفة.
                 1 = تم العثور على إصدار قديم واحد على الأقل من Log4J 1.x.
                 2 = تم العثور على إصدار ضعيف واحد على الأقل من Log4J.
    
    حول - كاشف MergeBase log4j (الإصدار 2021.12.29)
    الوثائق  - https://github.com/mergebase/log4j-detector 
    (C) حقوق النشر 2021 شركة Mergebase Software Inc. مرخص لك عبر GPLv3.
    

    البناء من المصدر:

    root@kitploit:~
    git clone https://github.com/mergebase/log4j-detector.git
    cd log4j-detector/
    mvn install
    java -jar target/log4j-detector-latest.jar
    

    الاختبار:

    نحتفظ بمجموعة من عينات log4j هنا: https://github.com/mergebase/log4j-samples

    الترخيص

    الإصدار 3.0 من رخصة GPL

    الأسئلة الشائعة

    كيف يعمل؟

    يقوم مترجم Java بتخزين النصوص الحرفية (String literals) مباشرة في ملفات *.class المترجمة. إذا اكتشف log4j-detector وجود ملف باسم "JndiManager.class" على نظام الملفات الخاص بك، فإنه يفحص هذا الملف بحثًا عن النص: "Invalid JNDI URI - {}". اتضح أن هذا النص المحدد موجود فقط في الإصدار المُصحح من Log4J (الإصدار 2.15.0). أي إصدارات Log4J التي لا تحتوي على هذا النص تكون ضعيفة.

    تم توسيع هذه التقنية نفسها لفحص ملفات *.class بحثًا عن النصوص الحرفية لاكتشاف الإصدارات الآمنة 2.3.2 و 2.12.4 و 2.17.1 بدقة.

    هذا الماسح يبلغ فقط عن الإصابات في مكتبة log4j-core. ماذا عن log4j-api؟

    تُبلغ العديد من الماسحات الضوئية (بما في ذلك Dependabot الخاص بـ GitHub) حاليًا عن كل من مكتبتي "log4j-core" و "log4j-api" على أنهما ضعيفتان. هذه الماسحات مخطئة. لا يوجد حاليًا أي إصدار موجود من مكتبة "log4j-api" يمكن استغلاله بواسطة أي من هذه الثغرات.

    في MergeBase نفخر بدقة المسح لدينا. أنت مشغول بالفعل بتصحيح أنظمتك والدفاع عنها. لا نريدك أن تضيع وقتك في الإيجابيات الكاذبة. لهذا السبب لا نبلغ عن أي إصابة ضد log4j-api.

    لماذا التبليغ عن 2.3.1 و 2.10.0 و 2.12.2 و 2.12.3 و 2.15.0 و 2.16.0 و 2.17.0؟

    الإصدار 2.10.0 مهم لأنه أول إصدار يمكن فيه تعطيل "ميزة البحث عن الرسائل" الضعيفة في Log4J عبر إعدادات Log4J.

    الإصدار 2.12.2 مهم لأنه إصدار متوافق مع Java 7 من Log4J غير معرض لـ CVE-2021-44228.

    الإصداران 2.15.0 و 2.16.0 مهمان لأنهما أول إصدارات لا يكون فيها التكوين الافتراضي لـ Log4J ضعيفًا تجاه CVE-2021-44228.

    والإصدارات 2.3.2 و 2.12.4 و 2.17.1 مهمة لأنها ليست عرضة للثغرات المكتشفة حديثًا مثل CVE-2021-45046 و CVE-2021-45105. على الرغم من أن هذه الثغرات أقل خطورة بكثير، إلا أننا نتوقع أن يرغب الجميع في الترقية إلى أحد الإصدارات 2.3.2 أو 2.12.4 أو 2.17.1.

    ماذا عن نتائج "file1.war!/path/to/file2.zip!/path/to/file3.jar!/path/to/log4j.jar"؟

    تعني علامة "!" أن log4j-detector دخل إلى أرشيف مضغوط (مثل *.zip و *.ear و *.war و *.aar و *.jar). نظرًا لأن ملفات zip يمكن أن تحتوي على ملفات zip، فقد تحتوي النتيجة الواحدة على أكثر من علامة "!" واحدة في نتيجتها.

    ملاحظة: يدخل log4j-detector بشكل متكرر فقط إلى أرشيفات zip. لا يدخل إلى tar أو gz أو bz2، إلخ. السبب الرئيسي هو أن أنظمة Java غالبًا ما يتم تكوينها لتنفيذ ملفات jar داخل ملفات jar، ولكنها لا يتم تكوينها أبدًا لتنفيذ تنسيقات ملفات أخرى (على حد علمي!). وبالتالي، فإن نسخة log4j داخل ملف *.tar.gz ربما لا يمكن الوصول إليها لنظام Java قيد التشغيل، وبالتالي ليست ثغرة تستحق الإبلاغ عنها.

    ملاحظة ثانية: بالنسبة للملفات المضغوطة داخل ملفات مضغوطة، يقوم الماسح الخاص بنا بتحميل الملف المضغوط الداخلي بالكامل في الذاكرة (باستخدام ByteArrayInputStream) قبل محاولة مسحه ضوئيًا. قد تحتاج إلى منح Java بعض الذاكرة الإضافية إذا كان لديك ملفات مضغوطة داخلية كبيرة جدًا على نظامك (على سبيل المثال، 1 جيجابايت أو أكثر).

    ماذا عن Log4J 1.2.x؟

    فقط إصدارات Log4J 2.x (من 2.0-beta9 إلى 2.14.1) هي المعرضة لـ CVE-2021-44228.

    كيف يمكنني التأكد من أن هذا ليس حصان طروادة يتظاهر بأنه كاشف Log4J؟

    سؤال رائع! نظرًا لأننا قمنا بتضمين كود المصدر الكامل هنا في Github (جميع أسطر Java البالغ عددها 2500 سطر)، بالإضافة إلى خطوات بنائه، ونظرًا لأن هذه الأداة لا تحتوي على أي تبعيات، فلن يستغرق الأمر وقتًا طويلاً لدراسة الكود بعناية حتى ترضى. إذا كنت لا تثق في Maven، فيمكنك الانتقال مباشرة إلى دليل "src/main/java/com/mergebase/log4j" وكتابة "javac *.java". هذا يعمل أيضًا!

    نقوم أيضًا بتوقيع ملف jar المترجم مسبقًا والذي نحتفظ به في جذر المستودع (./log4j-detector-2021.12.29.jar) باستخدام مفتاح توقيع الكود الخاص بـ MergeBase. يرجى تشغيل "jarsigner -verbose -verify log4j-detector-2021.12.29.jar" لتأكيد ذلك.

    ما هو MergeBase؟

    MergeBase

    MergeBase هي شركة تحليل تكوين البرامج (SCA) مقرها في فانكوفر، كندا. نحن مشابهون لشركات مثل Snyk و Sonatype و Blackduck وما إلى ذلك، حيث نساعد الشركات على اكتشاف وإدارة المكتبات مفتوحة المصدر الضعيفة في برامجهم. تحقق منا! لدينا دقة عالية، ودعم ممتاز للغات، وأسعارنا ليست باهظة أيضًا: mergebase.com/pricing.

    سنكون سعداء إذا قام أي شخص بتجربة نسخة تجريبية مجانية لمدة أسبوعين لمنتج SCA الخاص بنا! وإذا أرسلت بريدًا إلكترونيًا إلى الرئيس التنفيذي لدينا ([email protected]) مع موضوع "log4j-detector" فسنقوم بتمديد نسختك التجريبية المجانية إلى 4 أسابيع.

    تنزيل الأداة