امروزه با افزایش روزافزون محصولات و خدمات در حوزه فضای تبادل اطلاعات و بکارگیری گسترده آنها در زیرساختهای حیاتی و حساس کشور، برقراری و بررسی امنیت این فضاها از مهمترین دغدغههای مراجع زیربط میباشد. ما در این مطلب به موضوع بررسی و نحوه نظارت بر امنیت نرمافزارهای تحت وب، وب سایتها و برنامههای کاربردی که امروزه کم هم نیستند و هرروز به تعداد آنها نیز افزوده میشود، میپردازیم.
منظور از امنیت نرمافزارهای تحت وب چیست؟
مهم نیست کسب وکار شما کوچک است یا بزرگ، امنیت نرمافزارهای تحت وب برای تمامی مشاغل حائز اهمیت میباشد.
لازم به ذکر است امنیت برنامههای تحت وب یکی ازعناصر اصلی تمامی مشاغلی است که در بستر وب نهاده شدهاند. به طور کلی ماهیت جهانی اینترنت به گونهای است که برنامههای تحت وب را از نقاط مختلف و در سطوح مختلف مورد حمله و آسیب قرار میدهد.
امنیت برنامههای تحت وب به طور خاص با وب سایتها، برنامههای تحت وب و خدمات وب مانند APIها سروکار دارند.
داشتن نرمافزارهای داخلی نظیر اتوماسیونهای اداری، سیستم مدیریت اطلاعات بیماران و پرسنل یا هر نرمافزار مالی، مدیریتی و کنترلی تحت وب نیاز ضروری هر سازمان و شرکتی میباشد.
آشنایی با تعدادی از نرمافزارهای تحت وب:
بهتر است در شروع برای آمادهسازی ذهنمان، به تعدادی از نرمافزارهای تحت وب که امروزه به جزئی از زندگی روزانه شهری تبدیل شده و شاید هیچوقت با دقت به این موضوع نگاه نکرده باشیم اشاره کنیم.
حتما تا الان برای شما پیش اومده که به یک ارگان دولتی یا خصوصی مراجعه کرده باشید مانند: بانکها یا شرکتهای بیمه و خیلی از ادارات مشابه که شما را برای انجام یک سری از امورات اداری مانند ثبتنام و تراکنشهای مالی به وب سایت یا برنامههای کاربردی (application) مربوط به خودشان ارجاع داده باشند.
تا الان دقت کردید که برای استفاده از یک برنامه کاربردی (application) ساده خدماتی تحت وب که نیاز به پرداخت درون برنامهای نیز دارد به درگاه پرداخت مربوط به شرکت دیگری لینک داده میشوید.
یا اگر بخواهیم یه مقدار تخصصیتر به این موضوع نگاه کنیم همین مراکز درمانی را در نظر بگیرید، مثلا بعد از تصویربرداری در مراکز رادیولوژی یا نمونهگیری در آزمایشگاهها جواب آزمایش، رادیولوژی، سونوگرافی و حتی تصاویر پزشکیتان (سی تی اسکن، ام آر آی و… ) چگونه به دست شما میرسد؟
بله درسته، امروزه در راستای تحقق پرونده سلامت الکترونیک با ارسال یک لینک ساده به شماره همراه ثبت شده در سیستمهای نرمافزاری مستقر در مراکز درمانی شما به راحتی، به وب سایت مورد نظر منتقل خواهید شد تا گزارشها و تصاویر پزشکی خودتان را مشاهده نمایید.
همانطور که میبینیم اینها تنها قطرههای کوچکی در میان اقیانوس وسیعی از این دسته نرمافزارها هستند.
حال اگر به مثالهای بالا بیشتر دقت کنید به چه نقطه اشتراکی بین همه آنها میرسید؟ دقیقا درسته تمامی این موارد در شبکه گسترده جهانی اینترنت خدماتی ارائه میکنند.
عدهای فکر میکنند در شرکت و فضای کاری خود اطلاعات با ارزشی ندارند ولی هر کسبو کاری دارای دادههای زیادی است و همینها با ارزش محسوب میشوند از این رو باید از آنها محافظت کرد. اطلاعاتی مانند محصول (طرحها، برنامهها، برنامههای کاربری ثبت اختراع، نقشهها و…) اطلاعات مالی (سوابق مالی شرکت شما، اطلاعات حسابهای بانکی پرسنل و…) اطلاعات مشتری.
درواقع در دسترس بودن اطلاعات فردی و سازمانی در دنیای تکنولوژی امروز اجتناب ناپذیر است و وقتی این اطلاعات بر روی اینترنت قرار میگیرد یعنی دسترسی جهانی به اطلاعات بدون مرزبندی وجود خواهد داشت.
آسیب پذیریهای متداول برنامههای مبتنی بر وب:
حملاتی که علیه برنامههای مبتنی بر وب رخ میدهد، طیف گستردهای را شامل میشود، به عنوان مثال از دستکاری هدفمند پایگاه دادهها گرفته تا اختلال در شبکههایی با مقیاس بزرگ.
حال به بررسی برخی از روشهای رایج حمله میپردازیم:
Cross site scripting (XSS)
این آسیبپذیری به مهاجم این امکان را میدهد که اسکریپتهای client side را به یک صفحه وب تزریق نموده تا بتواند مستقیما به اطلاعات مهم آن دسترسی پیدا کند، خود را به جای کاربر معرفی کند یا اصطلاحا جعل کند و همچنین کاربر را فریب دهد تا اطلاعات مهم را فاش کند. حمله cross site scripting زمانی رخ میدهد که یک مهاجم، کدی را به یک وب سایت قانونی ضمیمه کند تا هنگامی که قربانی وب سایت را بارگذاری (load) میکند، کد اجرا شود. این عمل مخرب را میتوان به چندین روش، وارد وب سایت هدف نمود. دو مورد از محبوب ترین روشها افزودن کد مخرب به انتهای URL است و دیگری قرار گرفتن مستقیم بر روی صفحهای که محتوای تولید شده توسط کاربر را نمایش میدهد. اگر بخواهیم با بیان فنی توضیح دهیم باید بگوییم XSS، حملهای بر مبنای تزریق کد به client side است.
SQL injection
که به آن تزریق به پایگاه داده نیز گفته میشود، یک حمله متداول است که از کدهای مخرب SQL برای دستکاری پایگاه داده جهت دسترسی به اطلاعاتی که هرگز به نمایش در نمیآیند، استفاده میکند. این دادهها ممکن است شامل اطلاعات مهم شرکت و یا اطلاعات دقیق در مورد مشتریها باشد. مهاجمان از SQL برای دستیابی به اطلاعات غیرمجاز، تغییر یا ایجاد مجوزهای جدید برای کاربران و یا دستکاری و تخریب دادههای بسیار مهم استفاده میکنند.
Denial of service
مهاجمان از طریق بردارهای مختلف میتوانند سرور هدف یا زیرساختهای آن را با انواع مختلف ترافیک به میزان انبوه روبرو نماید بهطوری که سرور نتواند بار ترافیک را تحمل کند. در این صورت سرور دیگر قادر به پردازش موثر درخواست ورودیها نمیباشد، سرعت آن به به شدت پایین میآید و در نهایت سرویسدهی به درخواستهای قانونی میسر نمیباشد.
Memory corruption
بروز مشکل در حافظه، زمانی رخ میدهد که قسمتی از حافظه به صورت ناخواسته تغییر کند و در نتیجه عواقب غیر منتظرهای متوجه نرم افزار گردد. مهاجمان سایبری در تلاش هستند از طریق سوء استفادههایی نظیر حملات code injection یا buffer overflow به حافظه آسیب بزنند.
Buffer overflow
نوعی ناهنجاری است که هنگام نوشتن اطلاعات نرمافزاری در یک فضای تعریف شده روی حافظهای که تحت عنوان buffer معروف است رخ میدهد. سرریز شدن ظرفیت buffer باعث میشود مکانهای مجاور روی حافظه نیز از اطلاعات سرریز شوند. این اتفاق میتواند به سوءاستفاده در اثر تزریق کدهای مخرب منتهی شود و همچنین به طور بالقوه باعث آسیب به دستگاههای هدف می گردد.
Cross-site request forgery (CSRF)
شامل فریب قربانی جهت ارسال درخواستی است که وی از احراز هویت یا مجوز خود استفاده کند. در این صورت مهاجم میتواند با استفاده از امتیازات حساب کاربر، خود را به جای وی معرفی کرده و اقدام به ارسال درخواست نماید. در این مرحله، پس از به خطر افتادن حساب کاربر، مهاجم اطلاعات مهم را از بین خواهد برد و یا آنها را تغییر میدهد. معمولا حسابهایی که امتیاز ویژهای دارند، مورد هدف این حملات قرار میگیرند، مانند حساب مدیران.
Data breach
نقص دادهها یک واژه کلی است که به انتشار اطلاعات حساس و محرمانه اشاره دارد و از طریق اقدامات مخرب یا اشتباهات رخ میدهد. دامنه نقض دادهها نسبتا گسترده است؛ از چندین مورد با ارزش گرفته تا میلیونها حساب کاربری.
راههای جلوگیری و کاهش آسیب پذیریهای برنامههای تحت وب:
مهمترین گامی که میتوان در راستای امنیت برنامههای تحت وب برداشت شامل رمزگذاری بروز شده (encryption)، احراز هویت (authentication) و همچنین داشتن نرمافزارهای مناسب میباشد. در حقیقت مهاجمان باهوش حتی در محیطهای امنیتی قوی نیز میتوانند آسیب پذیریهایی را پیدا کنند، بنابراین جهت مقابله با این امر، یک استراتژی بسیار ایمن و جامع توصیه میگردد.
فایروال برنامههای تحت وب که به اختصار به آن WAF گفته میشود به محافظت از برنامههای تحت وب در برابر ترافیکهای مخرب HTTP کمک شایانی مینماید. با قرار دادن یک مانع به عنوان فیلتراسیون بین سرور مورد نظر و مهاجم، میتوان مانع از حملات ross site forgery، cross site scripting و SQL injection شد.
کاهش حملات DDoS
یک روش متداول برای ایجاد اختلال در نرمافزارهای تحت وب، استفاده از حملات DDoS میباشد. استراتژیهای مختلفی را میتوان به منظور کاهش این حملات به کار برد مانند کاهش حملات حجمی در لبه و یا استفاده از شبکه AnyCast به منظور مسیریابی صحیح درخواستهای قانونی بدون این که خدمات و سرویس دهیسرور از بین برود.
امنیت از طریق DNS
Domain Name System یا DNS همانند دفترچه تلفن اینترنت میباشد و نشان میدهد که چطور ابزارهای اینترنت مانند مرورگر وب، سرور صحیح را جستجو میکنند. به طور معمول مهاجمین در تلاش هستند درخواستهای DNS را از طریق حملات مربوطه با مشکل روبرو کنند. چنانچه DNS را مانند دفترتلفن در نظر بگیریم، DNSSEC نیز مانند ID غیر قابل جعل تماس گیرنده میباشد.
ابعاد دیگری از امنیت نرمافزار
فرض کنید شما به عنوان مدیریت یک مرکز تصویربرداری پزشکی در راس تصمیمگیری تهیه نرمافزاری هستید که علاوه بر پاسخگویی به تمام نیازهای داخلی شما امکان ارتباط آنلاین از هر موقعیت جغرافیایی در بستر وب را نیز برای شما فراهم کند تا بتوانید به راحتی به اطلاعات ثبت شده در سیستم دسترسی داشته باشید و حتی پزشکان مرکز شما نیاز به مشاوره برروی تصویر پزشکی بیمار از راه دور داشته باشند.
یا شاید شما شرکت تولیدکننده نرمافزارهای تحت وب باشید که در حال توسعه نرمافزارهای خود میباشید.
سوالات متداول
آیا امنیت اطلاعات پزشکی بیماران، اطلاعات حقوقی پرسنل و خیلی از اتفاقات دیگری که داخل نرمافزار ثبت و ضبط شده است چقدر برای آن مرکز درمانی اهمیت دارد؟
آیا میدانید که شرکتهای تولید کننده نرم افزارهای تحت وب چگونه میتوانند محصول خودشان را مورد ارزیابی و آزمایش نفوذپذیری و شنود قرار دهند تا از حفرههای امنیتی خود آگاه شده و آنها را بهبود بخشند؟
اگر در نظر داشته باشیم که هر نرمافزار تحت وب تمامی موارد اشاره شده در بالا را رعایت کرده باشد:
- آیا بهتر نیست دارای گواهینامه یا مدرکی باشد که امنیت آنها را تایید کند؟
- آیا مرجعی وجود دارد برای استعلام امنیتی نرمافزارهای تحت وب؟
- اصلا چه گواهینامههای امنیتی معتبری وجود دارد؟
اطلاع رسانی
هر شرکت نرمافزاری که محصولی در بستر وب تولید و توسعه داده است باید از سازمان فناوری و اطلاعات ایران دارای گواهینامهها و استانداردهای امنیتی نظیر پروانه امنیت فضای تولید و تبادل اطلاعات (افتا) باشد.
پس حتما برای انتخاب نرمافزارهای تحت وب استعلام گواهینامههای امنیتی آن شرکت را بگیرید.
برای آشنایی با مفاد و مباحث این گواهی نامه امنیتی اینجا کلیک نمایید.
4 دیدگاه دربارهٔ «امنیت نرم افزار»
سپاس از مطلب خوبتان
ممنون میشم لینک مطلب گواهینامه افتارو هم در سایتتون بزارید
ممنونم از نظر شما دوست عزیز
https://www.marcopacs.com/%d8%a7%d9%81%d8%aa%d8%a7-%da%86%db%8c%d8%b3%d8%aa%d8%9f/
مطلب جامع و خوبی بود.
سپاس
ممنونم از شما