آسیب‌پذیری اجرای کد از راه دور Apache Log4j (Log4Shell)

  • شناسه: CVE-2021-44228
  • امتیاز: ۱۰ (از ۱۰)
  • درجه خطر: بحرانی
  • نوع آسیب‌پذیری: اجرای کد از راه دور
  • نوع خطا: تزریق کد.

توضیحات فنی

هشدار: همه نرم‌افزارهای جاوای شما «ممکن» است آسیب‌پذیر باشند و لازم است شبکه خود را به روشی که در ادامه گفته شده است اسکن نمایید.
هشدار: فقط سرویس‌های در دسترس از اینترنت در معرض خطر نیستند، بلکه حتی سیستم‌های پشت‌صحنه شما که مستقیما از اینترنت در دسترس نیستند در خطرند!

یک آسیب پذیری بحرانی (CVE-2021-44228) در کتابخانه منبع باز و پرطرفدار لاگینگ Apache Log4j ، هزاران برنامه و سرویس شخص ثالثی را که از این کتابخانه استفاده می کنند، تهدید می کند. کدهای منتشر شده جهت سوء استفاده از آسیب‌پذیری نشان می‌دهد که یک آسیب‌پذیری RCE (اجرای کد از راه دور) می‌تواند توسط مهاجم با وارد کردن رشته‌ای خاص که توسط Log4j ثبت می‌شود مورد سوء استفاده قرار گیرد. سپس مهاجم می تواند کد دلخواه را از یک منبع خارجی اجرا کند. بنیاد نرم افزار آپاچی اخیراً یک وصله اضطراری برای این آسیب پذیری منتشر کرده است. سازمان‌های آسیب‌دیده باید در اسرع وقت به Log4j 2.17.0 ارتقا دهند یا در صورت عدم امکان ارتقا، راه‌های مقابله گفته شده در زیر را در دستور کار خود قرار دهند.

نسخه‌های آسیب‌پذیر

  • همه نسخه های Apache Log4j از 2.0-beta9 تا 2.14.1
  • همه نرم‌افزارهایی که از Log4j آسیب‌پذیر استفاده می‌کنند که طیف وسیعی از VMware، Solr، و حتی نرم‌افزارهای سازمانی و سفارشی را شامل می‌شود.

راه‌های مقابله با آسیب‌پذیری

جهت مقابله با این آسیب‌پذیری، می‌توانید از یکی از راه‌های زیر استفاده کنید:

  1. بروزرسانی به نسخه ۲.۱۷.۰ Log4j (لینک)
  2. فقط برای نسخه‌های ۲.۱۰ و بالاتر: در این نسخه‌ها یک کانفیگ جهت غیرفعال نمودن قابلیت مربوطه اضافه شده است و می‌توانید از یکی از روش‌های زیر استفاده کنید:
    • قرار دادن تنظیمlog4j2.formatMsgNoLookups=true در محل مناسب در کانفیگ مربوط به نرم‌افزار (بسته به نرم‌افزار متفاوت است)

    • اجرای برنامه جاوا با افزودن کامندلاین تنظیم-Dlog4j2.formatMsgNoLookups=true

    • تنظیم متغیر محیطی LOG4J_FORMAT_MSG_NO_LOOKUPS=true
      • در سیستم عامل لینوکس فایل /etc/environment را تغییر دهید.
      • در سیستم عامل ویندوز، از رابط کاربری Edit system environment استفاده نمایید.
  3. فقط برای نسخه‌های ۲.۰ تا ۲.۱۰.۰: حذف کلاس JndiLookup از مسیر کلاس‌های log4j-core که برای این منظور می‌توان دستوری مشابه دستور زیر را اجرا کرد

    zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

در تمامی موارد دقت نمایید که برنامه آسیب‌پذیر باید ریستارت شود تا کانفیگ را دریافت کند. (در مورد متغیرهای محیطی سیستم را ریست کنید)

چگونه سیستم‌های آسیب‌پذیر را در شبکه بیابم؟

برخلاف عموم آسیب‌پذیری‌ها که صرفا محدود به یک نرم‌افزار خاص هستند، یکی از دردسرهای اصلی آسیب‌پذیری log4j وجود آن در انواع گسترده‌ی نرم‌افزارهای مختلف و حتی سفارشی و خاص منظوره می‌باشد که لازم است کل شبکه برای یافتن آنها جستجو شود.

از آنجا که ممکن است هر یک از نرم‌افزارها و سامانه‌های مبتنی بر جاوای شما، فایل آسیب‌پذیر را داخل خود کمپایل داشته باشند، صرف آپدیت پکیج‌های نرم‌افزاری کفایت نکرده و باید کل نرم‌افزارهای کمپایل شده را برای ماژول آسیب‌پذیر جستجو کنید.

برای یافتن کلیه نرم‌افزارهای آسیب‌پذیر، بسته به سیستم عامل از یکی از مجموعه دستورات زیر استفاده کنید. دقت کنید که این دستورات فقط استفاده از ماژول log4j را گزارش می‌کنند و حتی نسخه‌های آپدیت شده نیز گزارش می‌شوند.

یافتن نرم‌افزارهای آسیب‌پذیر در سیستم عامل لینوکس

دستورات حتما با یوزر root اجرا شوند که همه سیستم پویش شود.

find / -type f -name '*.?ar' -print0| xargs -0 fgrep JndiLookup.class
find / -type f -name '*.class' | fgrep JndiLookup.class

در صورت مشاهده خروجی، مسیر نرم‌افزار آسیب‌پذیر نمایش داده می‌شود

یافتن نرم‌افزارهای آسیب‌پذیر در سیستم عامل ویندوز

دستورات زیر در هر درایو به طور جداگانه اجرا شوند.

دستورات حتما با یوزر administrator اجرا شوند که همه سیستم پویش شود.

dir /s /b \*.jar \*.ear \*.war|findstr /f:/ /m JndiLookup.class
dir /s /b JndiLookup.class

در صورت مشاهده خروجی، مسیر نرم‌افزار آسیب‌پذیر نمایش داده می‌شود

پویش سیستم‌های آسیب‌پذیر توسط آنتی‌ویروس پادویش

کاربران کنسول آنتی‌ویروس پادویش می‌توانند از روش زیر جهت جستجو برای نرم‌افزارهای آسیب‌پذیر در سطح سازمان خود استفاده نمایند.

برای این منظور، لازم است که پایگاه امضای ویژه تشخیص آسیب‌پذیری log4j را دریافت نموده و سیستم‌های خود را پویش نمایید. هر گونه نرم‌افزاری که از این کتابخانه استفاده کرده باشد با نام PUA.JAVA.PotentiallyVulnerable.Log4j به شما گزارش خواهد شد.

به این منظور توصیه می‌شود مراحل زیر را انجام دهید:

  1. پایگاه امضاهای شناسایی آسیب‌پذیری log4j را از لینک زیر دانلود نموده و در کنسول وارد نمایید.
    https://download.amnpardaz.com/Temp/signature.apbundle
  2. با مراجعه به Managed Computer مطمئن شوید که کلیه‌ی سیستم‌ها آپدیت را دریافت کرده‌اند. (در صورت نیاز از Force Update استفاده نمایید)
  3. تنظیمات آنتی‌ویروس را موقتا تغییر دهید تا تشخیص‌های مشکوک Ignore شوند. انجام این تغییر از این جهت پیشنهاد می‌شود که در صورت پیدا شدن نرم‌افزار آسیب‌پذیر، دسترسی به آن مسدود نشود.
  4. سپس تسک اسکن کامل را بر روی سیستم‌های مورد نظر خود اجرا نمایید.
  5. در نهایت پس از اطمینان از انجام کامل اسکن، تمامی تنظیمات را به حالت قبل برگردانید.

تنظیمات مورد نیاز در کنسول پادویش

 

این مطلب به مرور به‌روز می‌شود.