امنیت نرم افزارها (Application Security)
امنیت نرم افزارها (Application Security) یا appsec، عمل استفاده از نرمافزار امنیتی، سختافزار، تکنیکها، بهترین شیوهها و رویهها برای محافظت از برنامههای کامپیوتری در برابر تهدیدات امنیتی خارجی است.
چگونگی کارکرد Application Security
اقدامات امنیتی شامل بهبود شیوه های امنیتی در چرخه عمر توسعه نرم افزار و در طول چرخه عمر برنامه است. تمام فعالیت های appsec باید احتمال دسترسی غیرمجاز عوامل مخرب به سیستم ها، برنامه ها یا داده ها را به حداقل برسانند. هدف نهایی امنیت برنامه، جلوگیری از دسترسی، اصلاح یا حذف داده های حساس یا اختصاصی توسط attackers است. هر اقدامی که برای اطمینان از امنیت برنامه انجام شود یک اقدام متقابل یا کنترل امنیتی است.
application firewall یک اقدام متقابل است که معمولا برای نرم افزار استفاده می شود. firewall نحوه اجرای فایل ها و نحوه مدیریت داده ها را بر اساس برنامه نصب شده خاص تعیین می کنند. router رایج ترین اقدام متقابل برای سخت افزار هستند. آنها از نمایش مستقیم Internet Protocol (IP) address یک رایانه شخصی در اینترنت جلوگیری می کنند.
سایر اقدامات متقابل شامل موارد زیر است:
- فایروال های معمولی
- برنامه های رمزگذاری و رمزگشایی
- برنامه های آنتی ویروس
- برنامه های شناسایی و حذف جاسوس افزار
- سیستم های احراز هویت biometric
اهمیت امنیت نرم افزارها (Application Security)
از جمله نظارت و مدیریت آسیبپذیریهای برنامه – به دلایل مختلفی مهم است:
- یافتن و رفع آسیب پذیری ها خطرات امنیتی را کاهش می دهد و انجام این کار به کاهش سطح حمله کلی سازمان کمک می کند.
- آسیب پذیری های نرم افزاری رایج هستند. در حالی که همه آنها جدی نیستند، حتی آسیب پذیری های غیر بحرانی را می توان برای استفاده در زنجیره های حمله ترکیب کرد. کاهش تعداد آسیبپذیریها و ضعفهای امنیتی به کاهش تأثیر کلی حملات کمک میکند.
- اتخاذ یک رویکرد پیشگیرانه برای امنیت برنامه بهتر از اقدامات امنیتی واکنشی است. فعال بودن به defenders این امکان را می دهد که حملات را زودتر شناسایی و خنثی کنند، گاهی اوقات قبل از اینکه آسیبی وارد شود.
- همانطور که شرکت ها اطلاعات، کد و عملیات بیشتری را به cloud منتقل می کنند، حملات علیه این دارایی ها می تواند افزایش یابد. اقدامات امنیتی برنامه می تواند به کاهش تأثیر چنین حملاتی کمک کند.
نادیده گرفتن application security می تواند یک سازمان را در معرض تهدیدهای بالقوه وجودی قرار دهد.
threat Modeling
مدلسازی تهدید یا ارزیابی تهدید، فرآیند بررسی تهدیدات یک سازمان یا سیستم اطلاعاتی و سپس ارزیابی رسمی درجه و ماهیت تهدیدات است. مدلسازی تهدید یکی از اولین گامها در امنیت برنامهها است و معمولاً شامل پنج مرحله زیر است:
- تعریف دقیق دارایی های شرکت؛
- شناسایی کارهایی که هر برنامه در رابطه با این دارایی ها انجام می دهد یا انجام خواهد داد.
- ایجاد یک security profile برای هر برنامه؛
- شناسایی و اولویت بندی تهدیدات بالقوه؛
- ثبت وقایع نامطلوب و اقدامات انجام شده در هر مورد.
ضعف ها و تهدیدات امینتی رایج برنامه
10 مورد برتر در لیست CWE به شرح زیر است:
-
broken access control:
به آسیبپذیریهایی اشاره دارد که attackers را قادر میسازد مجوزهای خود را بالا ببرند یا کنترلهای دسترسی را برای دسترسی به دادهها یا سیستمهایی که مجاز به استفاده از آنها نیستند دور بزنند.
-
cryptographic failures:
به آسیبپذیریهای ناشی از عدم استفاده از راهحلهای رمزنگاری برای حفاظت از دادهها اشاره میکند. این شامل استفاده نادرست از الگوریتمهای رمزنگاری منسوخ، اجرای نادرست پروتکلهای رمزنگاری و سایر خطاها در استفاده از کنترلهای رمزنگاری میشود.
-
injection flaws:
مهاجم را قادر می سازد تا داده های ضد را به یک برنامه ارسال کنند. این شامل داده های دستکاری شده ای است که دستورات مخرب را در بر می گیرد، داده ها را به سرویس های وب مخرب هدایت می کند یا برنامه ها را مجدداً پیکربندی می کند.
-
insecure design:
شامل خطرات ناشی از معماری یا اشکالات طراحی سیستم است. این نقصها به نحوه طراحی برنامه مربوط میشود، جایی که یک برنامه کاربردی به فرآیندهایی متکی است که ذاتاً ناامن هستند. به عنوان مثال می توان به طراحی یک برنامه کاربردی با فرآیند احراز هویت ناامن یا طراحی وب سایتی که در برابر ربات ها محافظت نمی کند، اشاره کرد.
-
security misconfiguration flaws:
زمانی رخ می دهد که پیکربندی امنیتی یک برنامه، حملات را فعال می کند. این نقصها شامل تغییرات مربوط به فیلتر کردن بستههای ورودی برنامهها، فعال کردن شناسه کاربر پیشفرض، رمز عبور یا مجوز پیشفرض کاربر است.
-
vulnerable and outdated components:
مربوط به استفاده برنامه از اجزای نرم افزاری است که اصلاح نشده، قدیمی یا آسیب پذیر هستند. این مؤلفهها میتوانند بخشی از پلتفرم برنامه باشند، مانند یک نسخه اصلاح نشده سیستم عامل اصلی یا یک مفسر برنامه بدون اصلاح. آنها همچنین می توانند مانند رابط های برنامه نویسی برنامه های کاربردی قدیمی یا کتابخانه های نرم افزار بخشی از خود برنامه باشند.
-
اidentification and authentication failures:
شامل نقاط ضعف احراز هویت، از جمله نقایصی است که پر کردن اعتبار و حملات brute force را ممکن میسازد، یا عدم پشتیبانی از احراز هویت چندعاملی و باطل کردن جلسات کاربر منقضی یا غیرفعال.
-
software and data integrity failures:
آسیبپذیریهای مربوط به کد برنامه و زیرساخت را پوشش میدهد که در برابر نقض دادهها و یکپارچگی نرمافزار محافظت نمیکند. به عنوان مثال، زمانی که بهروزرسانیهای نرمافزاری بهطور خودکار و بدون مکانیزمی مانند امضای دیجیتال برای اطمینان از منبعیابی صحیح بهروزرسانیها، تحویل و نصب میشوند.
-
security logging and monitoring failures:
شامل نقص در نظارت بر سیستم ها برای همه رویدادهای مرتبط و حفظ گزارش های مربوط به این رویدادها برای شناسایی و پاسخ به حملات فعال است.
-
server-side request forgery:
به نقص هایی اشاره دارد که زمانی رخ می دهد که یک برنامه کاربردی منابع راه دور ارائه شده توسط کاربران را تایید نمی کند. Attackers از این آسیبپذیریها برای وادار کردن برنامهها برای دسترسی به مقصدهای مخرب وب استفاده میکنند.
تهدیدها از نقاط ضعف و آسیب پذیری سوء استفاده می کنند. تهدیدات امنیتی رایج برنامه شامل موارد زیر است:
Software injection attacks : از آسیبپذیریهای موجود در کد برنامه استفاده میکند که Attackers را قادر میسازد تا از طریق ورودی کاربر معمولی کد را در برنامه وارد کنند.
Cross-site scripting attacks : از آسیبپذیریهای موجود در روشی که برنامههای کاربردی وب cookies را مدیریت میکنند برای سرقت یا جعل cookies سوء استفاده میکنند تا attacker بتواند هویت کاربران مجاز را جعل کند.
Buffer overflow attacks : از آسیبپذیریها در روشی که برنامهها دادههای کاری را در Buffer سیستم ذخیره میکنند، بهرهبرداری کنند. بهترین شیوه های توسعه امن این حملات را به حداقل می رساند. این موارد شامل استفاده از اعتبارسنجی داده ها و زبان های برنامه نویسی است که تخصیص حافظه را به طور ایمن مدیریت می کند، به روز نگه داشتن نرم افزار با آخرین وصله ها و تکیه بر کمترین امتیاز.
دسته های رایج Application Security
برنامه ها را می توان به روش های مختلفی دسته بندی کرد. به عنوان مثال، به عنوان توابع خاص، مانند احراز هویت یا. appsec testing همچنین میتوان آنها را بر اساس دامنهها تقسیم کرد، مانند امنیت برنامه برای وب، موبایل، internet of things (IoT) و سایر برنامههای تعبیهشده.
طبقه بندی Application Security
-
application security testing controls:
به حفظ نقاط ضعف و آسیبپذیری برنامه در زمان توسعه کمک میکند.
-
access control safeguards:
جلوگیری از دسترسی غیرمجاز به برنامه ها این امر در برابر ربودن حسابهای کاربری احراز هویت شده و همچنین دسترسی سهوی به دادههای محدود شده به کاربر احراز هویت شده که مجاز به دسترسی به آنها نیست، محافظت میکند.
-
authentication controls:
برای اطمینان از اینکه کاربران یا برنامههایی که به منابع برنامه دسترسی دارند، چه کسی یا چه چیزی میگویند استفاده میشود.
-
authorization controls:
برای اطمینان از اینکه کاربران یا برنامه هایی که احراز هویت شده اند واقعاً مجاز به دسترسی به منابع برنامه استفاده می شوند. کنترل های مجوز و احراز هویت ارتباط نزدیکی دارند و اغلب با ابزارهای مشابهی اجرا می شوند.
-
encryption controls:
برای رمزگذاری و رمزگشایی داده هایی که نیاز به محافظت دارند استفاده می شود. کنترل های رمزگذاری را می توان در لایه های مختلف برای برنامه های کاربردی شبکه پیاده سازی کرد. به عنوان مثال، یک برنامه کاربردی می تواند با رمزگذاری تمام ورودی و خروجی کاربر، رمزگذاری را در خود برنامه پیاده سازی کند. متناوبا، یک برنامه کاربردی میتواند به کنترلهای رمزگذاری مانند کنترلهایی که توسط network layer protocols ارائه میشوند، مانند IP Security یا IPsec، که دادههای ارسال شده به برنامه و از آن را رمزگذاری میکنند، تکیه کند.
-
logging controls:
برای پیگیری فعالیت های برنامه استفاده می شود. آنها برای حفظ مسئولیت پذیری ضروری هستند. بدون ثبت گزارش، شناسایی منابعی که یک حمله در معرض دید قرار داده است می تواند دشوار یا غیرممکن باشد. گزارش های جامع برنامه نیز یک کنترل مهم برای آزمایش عملکرد برنامه هستند.
نحوه محافظت Application Security در برابر حملات
-
preventative controls:
برای جلوگیری از وقوع حملات استفاده می شود. هدف آنها محافظت در برابر آسیب پذیری ها است. به عنوان مثال، کنترل دسترسی و رمزگذاری اغلب برای جلوگیری از دسترسی کاربران غیرمجاز به اطلاعات حساس استفاده می شود. تست امنیت برنامه جامع یکی دیگر از کنترل های پیشگیرانه است که در چرخه عمر توسعه نرم افزار اعمال می شود.
-
corrective controls:
کاهش اثر حملات یا حوادث دیگر. به عنوان مثال، استفاده از virtual machines ، خاتمه دادن به برنامه های مخرب یا آسیب پذیر، یا وصله نرم افزار برای از بین بردن آسیب پذیری ها، همه کنترل های اصلاحی هستند.
-
detective controls:
برای یک معماری امنیتی برنامه جامع اساسی هستند زیرا ممکن است تنها راهی باشند که متخصصان امنیتی بتوانند تشخیص دهند که یک حمله در حال وقوع است. کنترلهای کارآگاهی شامل سیستمهای تشخیص نفوذ، اسکنرهای آنتی ویروس و عواملی هستند که سلامت و در دسترس بودن سیستم را نظارت میکنند.
گروه تکتاکام یکی از معدود شرکت هایی است که خدمات امنیت نرم افزارها (Application Security) را ارائه می نماید و تمامی مراحل کار را به صورت مستند شده در اختیار کار فرما قرار می دهد.