
Kubernetes DaemonSet الذي ينشر تصحيحًا ساخنًا على مستوى JVM للتخفيف من Log4j2 CVE-2021-44228 عن طريق تعطيل عمليات بحث JNDI عبر جميع الحاويات وأجهزة JVM المضيفة.
هذا المشروع قيد الإيقاف كما هو موضح أدناه.
سيتوقف المشروع عن قبول المشكلات (issues) ولن يتم تحديثه اعتبارًا من 2023-01-01. بعد هذا التاريخ، سيكون هذا المشروع غير مدعوم ولن يتم إنشاء أي إصدارات أو قطع أثرية (artifacts) جديدة مرتبطة به.
سيتم أرشفة مستودع المشروع بشكل دائم (سيصبح للقراءة فقط) اعتبارًا من 2023-04-01.
كما هو مذكور في وثائق المشروع الأصلية، كان هذا الإجراء دائمًا بمثابة إجراء مؤقت لمساعدة مستخدمي Kubernetes، ولم يوفر سوى تخفيف جزئي للتعرض الأمني الناتج عن Log4j2 CVE-2021-44228 و CVE-2021-45046. يُوصى بشدة أن يقوم جميع مستخدمي Log4j بالتحديث إلى إصدار مصحح من المشروع للتخفيف الكامل من أي مخاطر مرتبطة بهذه الثغرات الأمنية (CVEs).
ستظل القطع الأثرية للإصدارات (release artifacts) المرتبطة بأحدث إصدار متاحة بشكل دائم لمستهلكي هذا المشروع الذين يستمرون في نشره في بيئات Kubernetes الخاصة بهم. على وجه التحديد، بيان DaemonSet و صورة الحاوية العامة لـ ECR ستظل متاحة بعد الإيقاف، ولكن لن يتم دعمها أو تحديثها بعد الآن.
طورت AWS RPM يقوم بتطبيق تصحيح ساخن على مستوى JVM يعطل عمليات بحث JNDI من مكتبة Log4j2، مما يخفف من Log4j2 CVE-2021-44228 و CVE-2021-45046.
وكيل عقدة Apache Log4j2 CVE-2021-44228 هو مشروع مفتوح المصدر بناه فريق Kubernetes في AWS. وهو مصمم للعمل كـ DaemonSet للتخفيف من تأثير Log4j2 CVE-2021-44228، الذي يؤثر على التطبيقات التي تعمل بإصدارات Apache Log4j2 < 2.15.0 عند معالجة المدخلات من مصادر غير موثوقة. تشغيل DaemonSet هذا سيصحح JVMs التي تعمل داخل الحاويات وكذلك على المضيف.
ما يفعله: سيتم تثبيت إدخال cron (cron entry) على كل عقدة عاملة يقوم بتشغيل عملية تبحث عن JVMs قيد التشغيل وتحقق وكيلًا يخفف من ثغرة Log4J2. سيتم تصحيح جميع JVMs، بما في ذلك تلك التي تعمل داخل الحاويات، بهذه الطريقة. حاليًا، تم تكوين عملية التصحيح الساخن للتشغيل كل 30 دقيقة مع تمويه زمني (jitter) لمدة 15 دقيقة. يمكن أن تتراوح النافذة الفعلية من 15 إلى 45 دقيقة بين عمليات التشغيل.
ملاحظة: يمكنك العثور على معلومات إضافية حول ثغرة Log4j2 واستجابة AWS في نشرة أمان AWS.
ملاحظة: في 20/4/22، تم تحديث الصورة (الإصدار v0.0.16) بأحدث تصحيح لنظامي Amazon Linux 1 و 2. إذا قمت بتثبيت إصدار سابق من DaemonSet هذا وما زال قيد التشغيل، فيجب عليك إعادة تطبيق ملف daemonset.yaml لتثبيت أحدث RPM. إذا لم تعد بحاجة إلى تصحيح log4j، فيجب عليك حذف DaemonSet وإلغاء تثبيت RPM حيث أن الإصدارات الأقدم من RPM (< 1.1-16) تحتوي على ثغرة أمنية يمكن أن تسمح للمهاجم بالهروب من الحاوية والحصول على وصول إلى المضيف الأساسي.
ملاحظة: الإصدار 1.3-5 يعالج ALAS2-2022-1806 و ALAS-2022-1601. انظر ترقية الصلاحية المحلية إلى الجذر في Amazon Linux "log4j hotpatch" <1.3-5 للحصول على معلومات إضافية.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/kubernetes-log4j-cve-2021-44228-node-agent/main/daemonset.yaml
قم بفحص نقطي لـ Pod واحد:
kubectl get pods -l job=node-patch-installer -n node-configuration-daemonset
kubectl logs <pod-name> -c node-patch-installer -n node-configuration-daemonset
أو احصل على تأكيد لكل عقدة:
kubectl logs -l job=node-patch-installer -c node-patch-installer -n node-configuration-daemonset | grep 'installed'
إذا كان التثبيت ناجحًا، سيكون السطر الأخير في ملف السجل هو installed and verified (مثبت وتم التحقق منه) وإلا سيتم تسجيل خطأ.
daemonset.yaml ليعكس URI:tag الجديد للصورة، ثم قم بتطبيق البيان على مجموعتك.ميزات JNDI في Apache Log4j2 < 2.15.0 المستخدمة في التهيئة ورسائل السجل والمعاملات لا تحمي من نقاط النهاية LDAP وغيرها من نقاط النهاية ذات الصلة بـ JNDI التي يتحكم فيها المهاجم. يمكن للمهاجم الذي يمكنه التحكم في رسائل السجل أو معاملات رسائل السجل تنفيذ كود تعسفي يتم تحميله من خوادم LDAP عند تمكين استبدال الرسائل (message lookup substitution). في إصدارات Log4j2 < 2.15.0، تم تعطيل هذا السلوك افتراضيًا. يمكن العثور على التفاصيل الكاملة في نشرة CVE.
يمكنك العثور على معلومات إضافية حول ثغرة Log4j2 في نشرة أمان AWS.
طورت AWS RPM يقوم بتطبيق تصحيح ساخن على مستوى JVM يعطل عمليات بحث JNDI من مكتبة Log4j2، مما يخفف من مشكلة Log4j2 التي تنطبق على JVMs على المضيف وكذلك JVMs التي تعمل داخل الحاويات. يقوم هذا المشروع بتغليف RPM كـ DaemonSet لـ Kubernetes.
عند التثبيت، سيتم تشغيل عملية على كل عقدة عاملة تبحث عن JVMs قيد التشغيل وتحقق وكيلًا في JVM للتخفيف من ثغرة Log4j2. يحاول الوكيل تصحيح طريقة lookup() لجميع النسخ المحملة من org.apache.logging.log4j.core.lookup.JndiLookup لإرجاع السلسلة Patched JndiLookup::lookup() بشكل غير مشروط. تم تصميم هذا لمعالجة ثغرة CVE-2021-44228 لتنفيذ الكود عن بُعد في Log4j2 دون إعادة تشغيل عملية Java.
تم تكوين هذه العملية افتراضيًا للتشغيل كل 30 دقيقة، وستضيف طبقة حماية في المجموعات حيث لم يتم بعد تصحيح التطبيقات بإصدار Log4j2 محدث.
يمكنك العثور على مزيد من التفاصيل حول التصحيح الساخن في مدونة AWS مفتوحة المصدر.
صورة الحاوية مستضافة في مستودع ECR العام الخاص بـ aws-containers.