بیشتر سازمانها برای همگام شدن با تحول دیجیتال و تسریع فرایندهای عملیاتی خود به پیادهسازی معماریهای ابری برای برنامههای کاربردی، طراحی مبتنی بر میکروسرویس[1] و همچنین مخازن و پلتفرمهایی مثل کوبرنتیز روی آورده اند. البته امروزه از رویکردهایی مثل DevSecOps نیز برای تولید و توسعه نرمافزار استفاده میشود.
ماهیت پویای محیطهای ابر مبتنی بر مخازن و نیاز به همگام شدن با سرعت توسعه چابک نرمافزار[2]، باعث سختتر شدن کار تشخیص و مدیریت آسیبپذیریهای نرمافزاری شده و از طرف دیگر هشدارهای کاذب هم مسئولیت تیمهای امنیت سایبری را بیشتر میکند. با این حال سازمانها چگونه میتوانند به بهترین شکل ممکن از این رویکردها استفاده نموده و از امنیت برنامههای کاربردیشان مطمئن شوند؟
معماری که هرگز توقف ندارد!
در محیطهای مبتنی بر ابر، تغییر هرگز متوقف نمیشود. حدود نیمی از سازمانها اعلام کردهاند که محیط کار آنها تقریباً هر دقیقه یا کمتر تغییر میکند و حدود یک سوم هم گفته اند محیط کارشان تقریباً هر ثانیه در حال تغییر است. از این رو میکروسرویسهای جدیدی ایجاد یا نابود میشوند و زیرساخت سازمانها باید همزمان با تعامل کارمندان و مشتریان با سرویسهای دیجیتال، به صورت بلادرنگ از آنها پشتیبانی کند.
اگرچه چنین قابلیتی باعث ارتقای کارایی برنامههای کاربری میشود اما از طرفی برای تیمهای امنیتی چالشهای زیادی را ایجاد میکند. ماهیت همواره در حال تغییر معماریهای پویا باعث شده سازمانها در معرض هزاران آسیبپذیری امنیتی قرار گیرند که هر دقیقه نیز رشد پیدا میکنند. علاوه بر این، ماهیت پویای محیطهای امروزی موجب میشود وابستگیهای اجزای آسیبپذیر هم همواره در حال تغییر باشند. در نتیجه بررسی دستی این آسیبپذیریها و پیامدهای آنها تقریباً دیگر امری غیرممکن است.
چنین شرایطی میتواند پیامدهای جدی و مهمی داشته باشد. مثلاً در سال 2017 میلادی هکرها با سوءاستفاده از یک آسیبپذیری شناخته شده در کتابخانه آپاچی استراتس (Apache Struts)[3] توانستند به اطلاعات شخصی میلیونها کاربر در شرکت اکوئیفاکس (Equifax) دست یابند. این آسیبپذیری همچنان در بسیاری از برنامههای کاربردی تحت وب وجود دارد ولی حرکت روزافزون به سمت معماریهای مبتنی بر ابر، شناسایی آن را سختتر کرده است.
مدرنیزه کردن رویکردهای امنیتی
مشکلی که در خصوص روشهای سنتی برای مدیریت آسیبپذیری ها وجود دارد این است که این روشها دیدگاهی ایستا را در لحظهای خاص از زمان فراهم میکنند، به همین خاطر احتمال وجود نقاط کور در محیطهای پویا وجود دارد. پویشگرها (اسکنرها) نیز معمولاً آنچه را که در محیط تولید در حال اجرا است از قلم میاندازند. چنین ابزارهایی تشخیصهای کاذب و هشدارهای متعددی درباره هر آسیبپذیری احتمالی ایجاد میکنند؛ در نتیجه امکان تشخیص بین یک آسیبپذیری بالقوه را از یک نفوذ امنیتی ندارند. تعداد انبوه چنین هشدارهایی باعث شده سازمانها قادر به ارزیابی دقیق سطح مخاطره نبوده و بنابراین سطح کلی مخاطرات، نامشخص خواهد بود.
سازمانها باید برای غلبه بر این چالشها از رویکرد جدیدی جهت تأمین امنیت برنامههای کاربردی استفاده کنند که امکان تشخیص هر چه سریعتر آسیبپذیریهای امنیتی را فراهم کند. برای تحقق این هدف، سازمانها باید نظارتی پیوسته بر محیط ابر خودشان داشته باشند تا بتوانند نقاط کور را شناسایی کنند.
این قابلیت در ترکیب با هوش مصنوعی میتواند راهکاری مناسب برای تشخیص فوری منبع، ماهیت و شدت آسیبپذیریهای شناخته شده باشد. از این اطلاعات میتوان برای قدرت بخشیدن به قابلیتهای حفاظت خودکار برنامههای کاربردی در حین اجرا استفاده نمود تا سازمانها بتوانند به صورت خودکار و لحظهای آسیبپذیریهای برنامههای کاربردی را شناسایی، ارزیابی و مدیریت کنند.
فشار مضاعف بر توسعهدهندگان
علاوه بر معماری پویای برنامههای کاربردی، نیاز به داشتن رویکردی چابک برای تحویل و هماهنگسازی نرمافزار هم چالشهای خاصی را ایجاد میکند. با وجود پیشرفت ابتکار و نوآوری، همچنان در رویکردهای DevSecOps مسئولیت امنسازی کدها به توسعهدهندگان واگذار میشود. این افراد که معمولاً دارای محدودیت زمانی هستند، وقت لازم برای پویش دستی آسیبپذیریها را نداشته و معمولاً نیز انبوهی از هشدارها را دریافت میکنند که بیشتر آنها کاذب بوده یا فاقد اهمیت لازم هستند.
بدون داشتن دانش کافی درباره تأثیر هر آسیبپذیری بر زیست بوم کلی ابر و اینکه چه برنامهها و دادههایی در معرض خطر قرار دارند، اولویت بندی کارها برای تکمیل سریعتر و امنتر چرخههای توسعه سختتر میشود. به این ترتیب با وجود انواع ابزارهای امنیتی، حتی رایجترین آسیبپذیریها هم ناشناخته باقی مانده و هکرها فرصت سوءاستفاده از آنها را پیدا خواهند کرد.
قابلیت مشاهده، هوش مصنوعی و خودکارسازی میتوانند این معضل را حل کرده و به تیمهای DevSecOps این امکان را بدهند که به طور پیوسته کل محیط ابر از جمله برنامههای کاربردی، توابع و کدها را تحلیل نموده و هر تغییری را شناسایی نمایند. همچنین هشدارها را برحسب اهمیت شان، اولویت بندی و تشخیصهای مثبت کاذب را حذف کنند. توسعهدهندگان با در اختیار داشتن این ابزارهای هوش مصنوعی میتوانند منبع و ماهیت آسیبپذیریهای امنیتی و شدت آنها را تشخیص دهند تا به صورت کارآمدتری از زمانشان استفاده کنند. چنین رویکردی به تیمهای DevSecOps امکان میدهد که مسیرهای حمله را پس از توسعه شناسایی کرده، سازوکارهای دفاعی برنامههای کاربردی را تقویت نموده و با جدیدترین آسیبپذیریها مقابله کنند.
امنسازی برنامههای کاربردی مبتنی بر ابر
کلید امنسازی برنامههای کاربردی مبتنی بر ابر (دقیقاً مثل محیطی که برای آن طراحی شدهاند) اطمینان از پویایی روش مورد استفاده برای امنسازی آنها است. معماریهای برنامههای کاربردی و رویکردهای تحویل نرمافزار همواره با سرعت زیادی در حال تغییر هستند. سازمانها باید به جای موکول کردن این وظایف به آینده، همین حالا با ایجاد یک راهبرد امنیت برنامههای کاربردی که همگام با روشهای توسعه و معماریهای رو به تغییر حرکت کند، زمینه لازم را برای مقابله با این چالشها فراهم نمایند.
لازم به ذکر است که این امر، مستلزم ترکیب راهکارها و روشهای لازم برای مدرنیزه کردن رویکردهای امنیت برنامههای کاربردی، پشتیبانی کارآمد از تیمهای DevSecOps و بیشترین بهرهبرداری از روش تحویل چابک و محیطهای مبتنی بر ابر است.
[1] میکروسرویس روشی برای تقسیمبندی یک نرمافزار به بخشها یا سرویسهای کوچک است که مستقل از یکدیگر بوده و قابل مدیریت هستند. میکروسرویس، یک معماری توسعه نرمافزار توزیع شده است.
[2] گروهی از روشهای توسعه نرمافزار مبتنی بر تکرار و به شکل تدریجی است که در آنها راهحلها از طریق خودسازماندهی و همکاری بین تیمهای مختلف کاری انجام میشوند.
[3] یک چارچوب نرمافزاری تحت وب متن باز برای توسعه برنامههای کاربردی تحت وب است.