مبانی امنیت برنامه های تحت وب: آیا برنامه شما امن است؟
وب سایت acunetix در تبلیغات خود اینطور عنوان کرده که ۷۰ درصد از برنامههای تحت وب آسیب پذیر و امکان هک کردن آنها وجود دارد. حقیقت تلخ اینکه، همه وب سایتها و برنامههای تحت وب، امکان هک شدنشان وجود دارد. انجام این کار تنها نیاز به زمان و منابع کافی دارد.
دستهبندی هکرها و اهداف آنها
برای درک بهتر خطرات و تهدیدهای امنیتی، ما ابتدا باید با انواع هکرها و اینکه چگونه اهداف خود را برای حمله انتخاب میکنند، آشنا شویم. هکرها در یک نمونه از دسته بندیها براساس دانش، انگیزه و روش انجام کار، به گروههای زیر تقسیم میشوند:
بچه اسکریپتیها: این اصطلاح به هکرهای تازه کاری اشاره دارد که معمولا انگیزه اصلیشان کسب شهرت است. دانش فنی این هکرها محدود و از ابزارهای آماده استفاده میکنند. انگیزهای برای دسترسی به دادههای حساس ندارند، مگر اینکه این دادهها حاوی اطلاعات مالی، مانند اطلاعات کارتهای اعتباری باشد.
هکرهای کلاه سیاه: این اصطلاح به هکرهای حرفهای اشاره دارد که معمولا انگیزه اصلی آنها مالی است و روشهایی که به کار میبرند غیر قانونی و غیر مجاز است. دانش فنی این دسته از هکرها معمولا بسیار گسترده و ممکن است برای اهداف خود روشها و ابزارهای پیچیدهای را پیاده سازی کنند. متاسفانه روز به روز هکرهای بیشتری از این دست، درگیر جرائم سازمان یافته میشوند، که آنها را خطرناکتر از گذشته میکنند.
هکرهای کلاه سفید: این اصطلاح هم به هکرهای حرفهای اشاره دارد که انگیزه اصلی آنها نیز مالی است، ولی از روشهای مجاز و قانونی برای اهداف خود استفاده میکنند. این دست از هکرها کمک میکنند تا آسیب پذیریها را شناسایی و نسبت به آنها آگاهی پیدا کنیم. هکرهای کلاه سفید هیچگونه آسیبی به سیستمها وارد نمیکنند. باید به آنها اطمینان و از آنها درخواست کنید تا در بررسی امنیت برنامههایتان به شما کمک کنند.
در ادامه ما بررسی میکنیم که هکرها چگونه اهداف خود را برای حمله انتخاب میکنند:
حملات فرصت طلبانه: این حمله زمانی استفاده میشود که یک ضعف امنیتی در یک ابزار یا کد، با طیف وسیعی از کاربران و سیستمها کشف شود و هدف به صورت تصادفی از بین این سیستمها انتخاب میشود. هکرها سیستمهایی که از این ضعف امنیتی رنج میبرند را شناسایی و از بین آنها، هدف خود را برای نفوذ انتخاب میکنند. برای مثال، یک هکر با بررسی آسیب پذیریهای که برای وردپرس کشف و گزارش شده است، متوجه یک آسیب پذیری از نوع PHP Object Injection در نسخههای 4.9.9 و ماقبل آن میشود و سعی میکند اهداف خود را از بین سایتهایی که از این نسخه استفاده کردهاند، انتخاب کند.CVE-2018-20148. اغلب این حملات توسط بچه اسکریپتیها انجام میشود.
حملات هدفمند: این اصطلاح زمانی به کار میرود، که اهداف به منظور خاصی، توسط هکر یا حمله کننده انتخاب شوند. هکرها سعی میکنند برای هدفی که انتخاب کردهاند، یک آسیب پذیری پیدا و از طریق این آسیب پذیری، به هدف خود حمله کنند. مثلا فرض کنید که یک هکر، قصد جاسوسی از یک شرکت یا کارخانه جهت دسترسی به اطلاعات مشتریان را داشته باشد. برای عملی کردن نفوذ، نیاز است که ابتدا یک آسیب پذیری در سیستم هدف کشف و از طریق آن حمله و نفوذ را انجام دهد. این نوع حملات معمولا در دامنه هکرهای کلاه سیاه و توسط هکرهای کارکشته و حرفهای انجام میشود.
تصور اینکه کسب و کار شما ارزش کمی برای هکرهای حرفهای دارد،یک تصور اشتباه است. کسب و کار شما هر لحظه امکان آسیب دیدن توسط یک حمله فرصت طلبانه را دارد. اگر دادههای حساسی دارید و فکر میکنید که امنترین روشها را برای محافطت از آنها به کار بردهاید، باز هم اشتباه میکنید. در واقع هر چه بیشتر مکانیزمهای امنیتی برای دفاع در مقابل حملات را بیشتر کنید، احتمال موفقیت نفوذگر کمتر می شود. ولی باز هم احتمال آسیب نرسیدن به شما صفر نمیشود. بزرگترین اشتباهی که میتوانید مرتکب شوید این است که احساس کنید این موارد در مورد شما صدق نمیکند و حمله ای به سیستمهای شما صورت نمیگیرد.
اهمیت امنیت در برنامههای تحت وب
حمله و نفوذ به برنامههای تحت وب و وب سایتها، فقط از طریق آسیب پذیری در بخشی از کد برنامه یا مشکل در پیاده سازی برنامه صورت نمیگیرد، بلکه نفوذگر میتواند از روشها و تکنیکهای دیگری مثل مهندسی اجتماعی (از جمله فیشینگ) برای نفوذ استفاده کند. با وجود اینکه امنیت برنامههای تحت وب بسیار مهم است، ولی هنوز خیلی از سازمانها و مشاغل در مقابل این نوع حملات (مهندسی اجتماعی) آسیب پذیرند. در ادامه لیستی از راهکارها و توصیه ها، برای دست یافتن به بهترین سطح امنیتی را معرفی میکنیم:
استفاده از روشهای ابتکاری: اگر برای شناسایی حملات تنها از روشهای مبتنی بر امضا (شناسایی و کشف حملات شناخته شده) استفاده کنید، سیستم شما تنها در برابر حملاتی از جانب بچه اسکریپتیها و هکرهای تازه کار مقاوم است. هکرهای کارکشته و حرفه ای معمولا برای پیدا کردن آسیب پذیری، یا به صورت دستی و یا با استفاده از ابزارهایی که به صورت اکتشافی با استفاده از ابزارهایی مانند Acunetix، یک سیستم را بررسی، آسیب پذیریها را کشف و به سیستم شما نفوذ میکنند.
اولویت بالاتر امنیت وب نسبت به امنیت شبکه: اگر اولویت و تمرکز خود را بیشتر به سمت امنیت شبکه معطوف کردهاید، باید به این نکته توجه داشته باشید که بیشتر مشکلات و مباحثی که در حوزه امنیت اطلاعات در سالهای گذشته رخ و کشف شده است، ناشی از مشکلات و آسیب پذیریهای مربوط به امنیت وب بوده است. با یک نگاه به لیست ۱۰ آسیب پذیری اول در حوزه امنیت وب، مشاهده میکنیم که عمده این آسیب پذیریها از نوع SQL Injection، Cross Site Scripting (XSS)، CSRF و یا مشکلات پیکربندی هستند.
از بین بردن منبع مشکلات: اگر احساس می کنید که یک فایروال برای محافظت از دادههای شما مناسب است، باید این واقعیت را قبول کنید که خط مشیها و قوانینی که در WAF ها برای جلوگیری از نفوذ اعمال میشود، اغلب قابل دور زدن هستند. در واقع WAF منبع مشکل را از بین نمیبرد، بلکه تنها یک کمک و پشتیبان برای بهبود موقت امنیت سیستم است.
امنیت برنامههای وب، تنها به کشف آسیب پذیریهای امنیتی و از بین بردن آنها نمیپردازد، بلکه شامل پیشگیری از آسیب رسانی هم میشود، که میتواند شامل تغییر روش و رویکرد در فرآیند توسعه برنامهها باشد. در ادامه این روشها را بررسی میکنیم:
آموزش: کارآمدترین روش برای کاهش سطح حمله ، آموزش کل تیم است. توسعه دهندگان ، سرپرستان ، آزمایش کنندگان و حتی افراد غیر فنی باید از موضوعات بالقوه امنیت وب آگاه باشند و باید بدانند که چگونه از این آسیب پذیریها و مباحث و مشکلات مربوط به آنها در امان باشند.
انتقال به چپ: مباحث مربوط به امنیت، در فرايند تولید و تست نرم افزار، باید به گونه ای باشد که مشکلات امنیتی در اسرع وقت شناسایی و رفع شوند. اگر بعد از تست این مشکلات شناسایی و کشف شوند، نشان از عدم بهینه سازی و ناکار آمدی تست نرم افزار است.
همه ابعاد را در نظر بگیرید: این نکته را هیچوقت فراموش نکنید که امنیت برنامههای شما نه تنها باید در سمت سرور و کلاینت، بلکه باید در API ها، سرویسهای تلفن همراه، دستگاههای IOT و هرجایی که برنامههای شما مورد استفاده قرار میگیرد، اعمال شود.