![شیوه مقابله با آسیب پذیری Log4j](https://sdpars.ir/shop/wp-content/uploads/2021/12/IMG_4158-copy-1024x683.jpg)
در تاریخ ۹ دسامبر ۲۰۲۱ آسیب پذیری جدید و مهمی با نام CVE-2021-44228 برای کتاب خانهی Log4j اعلام و بلافاصله پس از آن، کدهای اکسپلوییت متعددی برای بررسی و سواستفاده از آن منتشر شد.
هنگامی که یک CVE جدید اعلام میشود از منظر شبکه توزیع محتوا (CDN) از دو جهت دارای اهمیت است.
- ایمنسازی سرویسهای داخلی در برای آسیب پذیری
- ایمنسازی کاربرانی که از CDN برای وبسایت و اپلیکیشن خود استفاده میکنن
آسیبپذیری CVE-2021-44228 چیست؟
این آسیب پذیری در کتابخانه Log4j که یک کتابخانه پردازش لاگ در جاوا به شمار میآید، یافت شده است و به دلیل پر استفاده بودن آن، به شکل گسترده در نرمافزارهای سازمانی که با جاوا توسعه داده شدهاند به کار میرود که اکنون میتواند هدف حملات مخرب قرار گیرد.
آسیب پذیری CVE-2021-44228 از آن رو اهمیت دارد که نرمافزارهای سازمانی شرکت Apache که به شکل گسترده برای پردازش در سازمانها مورد استفاده قرار میگیرند از این کتابخانه استفاده میکنند.
آسیب پذیری مذکور به حملهکننده این امکان را میدهد که از طریق ارسال یک Payload در درخواست های HTTP باعث اجرا شدن کدهای مخرب خود در سرویسهای داخلی که دارای این ضعف امنیتی هستند، شود.
این PayLoad میتواند در هر کدام از پارامترهای HTTP باشد. مانند:
- URI
- User Agent
- Body
- Referer
با لاگ شدن هر کدام از این پارامترها که حاوی Payload مخرب باشند، دسترسی اجرای کد در اختیار حملهکننده قرار میگیرد.
چه کسانی تحت تاثیر قرار میگیرند؟
اگر در هر یکی از مراحل پردازش درخواستهای HTTP یکی از پارامترهای Body, User Agent, URL, Referer را لاگ میکنید و یا از یکی از محصولات نوشته شده با جاوا مانند محصولات شرکت آپاچی استفاده میکنید، به احتمال بسیار زیاد تحت تاثیر این آسیبپذیری قرار میگیرید.
نمونه یکی از درخواستهای مخرب لاگ شده
از نظر گستردگی و میزان تخریب، این آسیب پذیری جزو موارد بسیار شدید دسته بندی میشود.
نمونه یکی از درخواست های مخرب که در CDN لاگ شده است را میتوانید در تصویر زیر ببینید. در این UA میتوان Payload مخرب را مشاهده کرد (اطلاعات حساس آن مخفی شده است).
{
"timestamp": 1639293314.369,
"uuid": "b111a870-f55f-4f3c-913b-7224a7b012ed",
"method": "GET",
"scheme": "https",
"domain": "xxx",
"uri": "/",
"query_string": "",
"referer": "",
"ip": "1.2.3.4",
"ua": "${jndi:ldap://payload}",
"country": "IR",
"isp": "NA",
"asn": 1234,
"content_type": "text/html; charset=utf-8",
"status": 200,
"server_ip": "1.2.3.4",
"server_port": 443,
"bytes_sent": 4489,
"nbytes_received": [
0
],
"process_time": 0.001,
"nupstream_time": [
0
],
"cache": "HIT",
"request_id": "be9278e9a3a1a6f2ea9d3e0bc423c4d7",
"node_id": "aaa",
"upstream_addr": ""
}
اقدامات انجامشده برای رفع این مشکل
جمعه: رفع آسیب پذیری CVE-2021-44228 در سرویسهای داخلی
بر اساسی گزارشی که شرکت Apache منتشر کرد به کمک روشهای زیر میتوان در برابر این آسیبپذیری ایمن بود:
- بهروزرسانی به نسخهی Log4j 2.15.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
- …
با توجه به دستورالعملهای منتشر به وسیلهی آپاچی، این آسیبپذیریها در ساعات اولیه برطرف شدند.
تلاش برای حفاظت از کاربران CDN در برابر آسیبپذیری CVE-2021-44228
شنبه: قوانین اضافه شده به WAF ابر آروان برای مسدود کردن
برای کاربرانی که از سیستم WAF به منظور حفاظت در برابر حملات اینترنتی استفاده میکردند ۲ قانون جدید به پنل کاربری اضافه شد، که در ادامه قابل مشاهده است:
![قانون WAF](https://sdpars.ir/shop/wp-content/uploads/2021/12/01-1.jpg)
یکشنبه: اضافه شدن قانون فایروال برای تمامی کاربران CDN
به دلیل وسیع بودن دامنه این حمله و اینکه سرویس WAF تنها در اختیار کاربران سازمانی CDN است، ما برای تمامی کاربران شبکه توزیع محتوا قانونی را به فایروال اضافه کردیم تا این درخواست های مخرب را مسدود کند.
برای ایمن ماندن چه کارهایی میتوان انجام داد؟
اگر کاربر CDN هستید، لازم است برای ایمن ماندن در برابر این آسیب، دستورالعملهایی که در این مقاله به آن اشاره کردیم را به کار بگیرید.