آنچه که توسعه دهندگان باید برای مقابله با اکسپلویت های Log4j بدانند

شنبه 25 دی 1400

آیا شما هم نگرانی های زیادی درباره اکسپلویت های Log4j دارید؟ ما در این مطلب قصد داریم اطلاعات کاملی برای مقابله با اکسپلویت های Log4j به شما ارائه دهیم.

 آنچه که توسعه دهندگان باید برای مقابله با اکسپلویت های Log4j بدانند

در اوایل این ماه محققان امنیتی یک سری از آسیب پذیری های بزرگ را در نرم افزار Log4j جاوا که در ده ها هزار نرم افزار تحت وب جاوا مورد استفاده قرار می گیرد کشف کردند. اکسپلویت های Log4j می توانند آسیب زیادی را به نرم افزارهای مختلف وارد کنند چرا که این کد به طور گسترده ای در سیستم های مختلف مصرف کننده سازمانی از جمله Minecraft، Steam، iCloud، Fortinet و Red Hat استفاده شده است. یک تحلیلگر و کارشناس در این حوزه تخمین می زند که میلیون ها endpoint ممکن است در خطر باشند.

اکسپلویت های Log4j را می توان آخرین مورد از حملات در حوزه زنجیره تامین نرم افزاری به شمار آورد که در این لیست مواردی مانند SolarWinds ( که در آن فرایند ساخت به خطر افتاده بود) و Kaseya( که هکرها در آن کدهای حاوی بدافزار را جای کدهای اصلی قرار داده بودند) نیز وجود دارد.

اولین نشانه های اکسپلویت های Log4j

از زمانی که اولین نشانه های آسیب پذیری مربوط به اکسپلویت های Log4j مشخص شد فروشندگان نرم افزارهای امنیتی و تحلیلگران اطلاعات زیادی در سراسر دنیا مطالبی را درباره این که چه کارهایی باید انجام دهید تا در برابر اکسپلویت های Log4j مقابله کنید منتشر کردند. شاید برای شما جالب باشد که پس از این مسئله برخی از افراد سناریوهایی را نیز منتشر کردند که به نوع خود جالب بود. البته بسیاری از تحلیلگران نیز پیش‌بینی هایی با ریسک کمتر را درباره اکسپلویت های Log4j منتشر کرده بودند. شرکت Check Point Software Technologies در نزدیک به نیمی از مشتریان خود سوءاستفاده هایی را مشاهده کرده بود. Contrast Security به این نتیجه رسیده است که 58 درصد از برنامه های جاوا آنها دارای نسخه های آسیب پذیر در برابر اکسپلویت های Log4j هستند اما نکته جالب این است که تنها 37 درصد از آنها از Log4j استفاده می کنند.

اقدامات انجام شده برای مقابله با این اکسپلویت ها

چهار مورد از مهمترین مسائلی که در خصوص اکسپلویت های Log4j به وجود آمده است عبارت اند از: CVE-2021-44228 ، CVE-2021-45046 ، CVE-2021-4104  و CVE-2021-45105 . در یکی از مهمترین اقدامات انجام شده برای مقابله با اکسپلویت های Log4j آژانس امنیت سایبری و امنیت زیرساخت ایالات متحده آمریکا یک صفحه وب با لینک هایی به وبلاگ های فروشندگان این نرم افزار نگهداری می کند که در آنها فهرستی از برنامه هایی که تحت تاثیر اکسپلویت های Log4j هستند معرفی می شود و تلاش می کند تا هرگونه اصلاحی در این نرم افزارها را معرفی کند. هریک از این مسائل دارای ویژگی هایی از نرم افزار logging هستند که شامل Java Naming، Directory Interface و پیغام های MSAppender event می باشد. آنچه که این مجموعه از آسیب پذیری ها را خطرناک می کند این است که هکرها برای به دست آوردن این دسترسی از راه دور نیازی به تخصص زیاد ندارند. اخیرا Blumira دسته ای جدید از حملات مربوط به اکسپلویت های Log4j را کشف کرده است که در آن سطح فعلی حملات با استفاده از WebSocket گسترش پیدا می کند.

حد نهایی خسارت این اکسپلویت ها

به نظر می رسد که ما پایان اکسپلویت های Log4j را هنوز به طور کامل درک نکرده ایم. آنچه که درباره اکسپلویت های Log4j واضح است این است که به عنوان یک توسعه دهنده نرم افزار راهکارهای مختلفی برای یافتن، برطرف کردن و جلوگیری از اکسپلویت های Log4j وجود دارد که شما باید تمامی آنها را بیاموزید و در دراز مدت تلاش کنید تا آن را بهبود دهید.

ممکن است در حال حاضر نیز در معرض خطر باشید

پیش از آن که شروع به قفل کردن برنامه های خود برای مقابله با اکسپلویت های Log4j کنید باید بررسی کنید که آیا سازمان شما پیش از این به علت استفاده از Log4j هک شده است یا خیر؟ هکرها ممکن است از مدت ها قبل به سازمان و نرم افزارهای شما نفوذ کرده باشند. در این زمینه سوالات کلیدی مطرح می شود که باید به آنها پاسخ دهید:

-          آیا می دانید کدام یک از سرورهای شما از Log4j استفاده می کنند؟

-          چه مدت طول می کشد تا لیستی از این سرورها را تهیه کنید؟

-          آیا می توانید تمامی این سرورها را در یک لحظه وصل کنید؟

-          آیا ابزارهای خودکار برای بررسی سرورها دارید و یا یک شخص باید به صورت دستی به آنها وصل شده و بررسی های مورد نیاز را انجام دهد؟

-          آیا برنامه ای برای وصل کردن سرورهای اجرای زنده در زمان اوج استفاده از سرورها دارید؟

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

گزارشاتی درباره اکسپلویت های Log4j

تحلیلگران امنیتی با استفاده از طیف گسترده ای از پروتکل های شبکه از جمله LDAP، RMI، DNS و HTTP اکسپلویت های Log4jیی را یافته اند که به تاریخ 1 دسامبر سال 2021 باز می گردد. این اکسپلویت ها موفق شده اند تا بدافزارهای مختلفی را نصب کنند که از جمله آنها می توان به ماینرهای مخفی ارز دیجیتال، خانواده جدیدی از باج افزارها که Bitdefender آنها را Khonsari می نامد و همینطور کدهایی برای پیوستن به botnet و علاوه بر همه این موارد چندین محقق گزارش کرده اند که این اکسپلویت ها در واقع از هکرها و مهاجمانی که در کشورهای چین، کره شمالی، ترکیه و ایران هستند نشات می گیرند.

برنامه ای برای مقابله فوری با این اکسپلویت ها

اولین اقدامی که می توانید برای مقابله با اکسپلویت های Log4j انجام دهید این است که مطمئن شوید Log4j های خود را به جدیدترین نسخه به روزرسانی کرده و ارتقاء داده اید. البته نسخه های جدید نیز هنوز آسیب پذیری هایی دارند ولی نسبت به نسخه های قدیمی تر میزان آسیب پذیری آنها کمتر شده است. جدیدترین نسخه Log4j نسخه 2.17.0 است، اگر شما از نسخه جاوا هشت یا نسخه های قدیمی تر استفاده می کنید می توانید نسخه 2.12.2 Log4j را نصب کنید. این نسخه برای اجرای نسخه هفت جاوا در اپلیکیشن های تحت وب نیز می تواند مفید و کاربردی باشد. نسخه های جدید به صورت پیش فرض JNDI را غیرفعال کرده و دسترسی جستجوی پیغام را نیز حذف می کنند که هر دو این مسائل در آسیب پذیری های مختلف مشکل ساز هستند. دقت داشته باشید که غیرفعال شدن JNDI می تواند مشکلاتی را در برنامه های شما به وجود بیاورد. بنابراین بهتر است که قبل از نصب این نسخه ها حتما این مورد را در برنامه های خود بررسی و آزمایش کنید.

علاوه بر این ممکن است شما قصد داشته باشید تمامی logging های مبتنی بر جاوا را متوقف کنید، البته این به شرطی است که در هیچ یک از برنامه های خود به آن نیازی نداشته باشید. بنابراین قبل از انجام این کار حتما این مورد را نیز بررسی کنید.

اگر شما هم جز آن دسته از افرادی هستید که سرور Minecraft را اجرا می کنید حتما باید بررسی کنید که نسخه 1.8.8 یا بالاتر را اجرا می کنید یا خیر؟ دلیل این موضوع این است که این نسخه ها دارای آسیب پذیری های زیادی هستند.

مایکروسافت نسخه 1.18.1 Minecraft را منتشر کرده است که می تواند به سادگی این مشکل را برطرف کند. بنابراین شما باید فورا آن را ارتقا دهید یا این که سرور دیگر و قابل اعتمادتری را برای خود پیدا کنید.

چه ابزارهای دفاعی برای مقابله با اکسپلویت های Log4j وجود دارند؟

فروشندگان ابزارهای امنیتی فعالیت خود را برای تقویت ابزارهای امنیتی برای مقابله با اکسپلویت های Log4j افزایش داده اند و شما می توانید از پیشنهادات رایگان آنها در این زمینه بهره مند شوید. در ادامه سعی می کنیم برخی از محبوب ترین اسکنرهایی که برای یافتن کدهای آسیب پذیری مورد استفاده قرار می گیرند را به شما معرفی کنیم که می توانید آنها را روی فایل های در حال اجرا یا فایل کدهای منبع خود پیاده سازی کنید. دقت داشته باشید که با استفاده از این ابزارها شما باید تعیین کنید که آیا آن کد در هر نمونه تولید شده مستقر شده است یا خیر؟

ابزارهای مهم برای مقابله با این اکسپلویت ها

-          Qualys یک اسکنر تحت وب است که یک نسخه سی روزه رایگان را در اختیار شما قرار می دهد. شما در وبلاگ این ابزار می توانید اطلاعات کاملی را درباره نحوه استفاده از آن به دست بیاورید.

-          Check Point’s CloudGuard AppSec یک اسکنر بسیار کاربردی دیگر برای مقابله با اکسپلویت های Log4j است که این ابزار نیز یک نسخه سی روزه رایگان را به شما ارائه می دهد که می توانید از آن استفاده کنید.

-          CERT یک ابزار بسیار کاربردی است که شامل مجموعه ای از اسکنرها می باشد که برای ویندوز نوشته شده است و در آن از زبان های پایتون و bash استفاده شده است.

-          اگر شما هم از Burp Suite استفاده می کنید باید بدانید که X-Force شرکت IBM دارای یک اسکنر رایگان است SilentSignal نیز پلاگین مخصوص به آن می باشد.

سایر ابزارهای مفید برای مقابله با اکسپلویت های Log4j

-          WhiteSource یک ابزار بسیار کاربردی برای مقابله با این اکسپلویت ها است که دارای یک اسکنر رایگان نیز می باشد.

-          JFrog دارای ابزار اسکن مبتنی بر پایتون مخصوص به خود است که نام آن Xray می باشد و برای بررسی کتابخانه های کد جاوا مورد استفاده قرار می گیرد.

-          Orca Security یکی از شرکت های معروف در این حوزه است که یک ابزار رایگان و آنلاین را به شما ارائه می دهد که برای اسکن کردن محیط های AWS، Azure و Google Cloud مورد استفاده قرار می گیرد و دارای یک نسخه رایگان سی روزه نیز می باشد.

استراتژی های بلند مدت برای بهبود امنیت کدنویسی و مقابله با اکسپلویت های Log4j

در ابتدا شما باید سعی کنید وابستگی های موجود در کد خود را به خوبی درک کنید. یکی از مهمترین چالش های Log4j محبوبیت بسیار زیاد آن و وجود آن در بسیاری از کتابخانه های معروف زبان برنامه نویسی جاوا است. زمانی که نسخه های قدیمی تر آن را در کدهای خود ریشه یابی کردید باید به دنبال گزینه های دیگری باشید که به میزان زیادی به Log4j وابسته هستند. اگر شما هم در پروژه خود از فریم ورک های Struts2، Flume، Dubbo، Kafka، Solr، Druid یا Fink استفاده می کنید باید حتما کتابخانه Log4j را در داخل این فریم ورک ها ارتقا دهید. اگر Struts strikes برای شما آشناست باید بدانید که در سال 2017 یک اکسپلویت باعث به وجود آمدن خطری بسیار بزرگ در پایگاه داده این پروژه شد که طی آن اطلاعات خصوصی مربوط به بیش از 140 میلیون مشتری به بیرون درز پیدا کرد.

Tanya Janca از WeHackPurple( یک منبع فوق العاده برای امنیت اپلیکیشن) پیشنهاد می کند از ابزارهای بررسی وابستگی مانند dependencyGraph، Snyk یا OWASP استفاده کنید. زمانی که شما هر نوع وابستگی را پیدا می کنید اگر نمی توانید کدی که Log4j را فراخوانی می کند را در همان لحظه مسیریابی کنید حتما آن را کامنت کنید تا بعدها آن را بررسی کنید.

نحوه کار فایروال را بیاموزید

سعی کنید به خوبی نحوه کار کردن فایروال برنامه های تحت وب را درک کنید. اگر شما در برنامه خود فایروال ندارید دقیقا الان زمان آن است که آن را به برنامه خود اضافه کنید. اگر هیچ یک از کدهای شما پشت یک فایروال مخصوص برنامه های تحت وب مستقر نشده اند قوانین شناسایی آنها را فعال کنید و بررسی کنید که آیا فروشندگان ابزارهای امنیتی قوانین خود را برای پوشش دادن آخرین مورد از آسیب پذیری ها به روزرسانی کرده اند یا خیر؟ البته نکته مهمی که باید به آن دقت داشته باشید این است که از زمان ارائه این راهکار بلند مدت برای مقابله با اکسپلویت های Log4j راه های مختلفی برای دور زدن این فایروال ها طراحی شده اند و هکرها نیز معمولا از این روش ها استفاده می کنند. Fastly توضیحات گسترده ای را در مورد چگونگی انجام آزمایش های مخصوص فایروال های برنامه های تحت وب ارائه داده است که در ادامه بیشتر درباره آنها صحبت خواهیم کرد.

نکاتی دیگر برای مقابله با اکسپلویت های Log4j

برای مقابله با این اکسپلویت ها به شما پیشنهاد می کنیم از ابزارهای کاهش آسیب پذیری Log4j استفاده کنید. برخی از شرکت ها پیش از این ابزارهایی را برای کاهش آسیب پذیری های Log4j و مقابله با اکسپلویت های Log4j ارائه کرده اند که می توانید از آنها استفاده کنید:

-          Cybereason کدهای مربوط به مقابله با اکسپلویت های Log4j را جمع آوری کرده است. LunaSec این کدها را بهینه سازی کرده و ارتقا داده است و در حال حاضر نیز به صورت زنده در یک سرور وجود دارد که تمام افراد می توانند از آن استفاده کنند.

-          تیم Corretto از Amazon Web Services یک عامل مبتنی بر زبان جاوا را طراحی کرده است که برای برطرف کردن مشکلات Log4j مورد استفاده قرار می گیرد. این عامل در گیت هاب در دسترس شما است.

سایر روش ها و ابزارها

-          Contrast Security دارای یک SafeLog4j که هم آسیب پذیری ها را تشخیص داده و هم آنها را برطرف می کند.

-          Cisco یک نسخه سی روزه رایگان از Secure Endpoint را برای مقابله با این اکسپلویت ها به شما ارائه می دهد.

 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید