5 اشتباه امنیتی که برنامه نویسان مرتکب می شوند

خطاهای ظریف برنامه نویسی این امکان را به هکر ها می دهد تا تدابیر و کنترل های امنیتی را از پیش رو بردارند و اطلاعات کاربران را به سرقت ببرند. همچنین می تواند منجر به اجرا شدن یک کد مخرب از راه دور می شود که باعث صدمات و خسارات جبران ناپذیری خواهد شد. در ادامه چند اشتباهی را که موجب می شود تا امنیت نرم افزار به خطر بیفتد را شرح می دهیم.

1 – اعتماد به کد ها و کتابخانه های شخص ثالث که قابل اعتماد نیستند

امروزه استفاده از کتابخانه ها، فریم ورک ها و کد های آماده دیگران در پروژه های تجاری امری طبیعی است. زیرا هزینه و زمان توسعه را پایین می آورد و به قولی هیچ کسی دوست ندارد تا چرخ را از ابتدا اختراع کند! اما همین امر می توان دباعث بروز آسیب پذیری های امنیتی خطرناکی باشد. این کتابخانه ها و کد ها می توانند در زمینه رابط کاربری (UI)، پایگاه داده، رمزنگاری، پردازش داده، API، احراز هویت کاربران و خیلی موارد دیگر باشد.

غالبا، کامپوننت های شخص ثالث مدیریت ضعیفی داشته و دارای آسیب پذیری های قابل اکسپلویتی که ممکن است مورد توجه قرار نگیرد، هستند. با این حال بیشتر شرکت ها و تیم های توسعه دهنده حتی نمی دانند که دقیقا از چه کامپوننتی در حال استفاده هستند، چه برسد به این که به آسیب پذیری های امنیتی آن رسیدگی کنند.

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

2 – پسورد را به صورت hard-code و از حساب های درب پشتی (Backdoor) استفاده می کنید

امنیت نرم افزار

امنیت نرم افزار

اصولا از دو مورد بالا در حین فرآیند توسعه و برای تست استفاده می کنیم، یا ممکن است اکانت های بک دور به سفارش مشتری ایجاد شده باشد. به هرحال استفاده از این دو مورد در کد باعث می شود تا سیستم شما در معرض خطر قرار بگیرد. کافیست تا مهاجمان سورو کد شما را در اختیار داشته باشند تا از پسورد هایی که به صورت هارد کد (به طور صریح در کد نوشته شده باشد) نوشته می شوند، به راحتی برای نفوذ استفاده کنند. همچنین برای اکانت های بک دور.

در سال 2014، شرکت Cisco، وجود درهای پشتی مستند نشده را در چندین روتر خود تأیید کرد که می توانند به مهاجم دسترسی root را از راه دور بدهند.

3 – ورودی ها را چک نمی کنید

امنیت نرم افزار

امنیت نرم افزار

حملات تزریق SQL یا SQL Injection و درج فایل از راه دور، از رایج ترین و خطرناک ترین آسیب پذیری های امنیتی هستند. تزریق SQL به طور خاص موضوع مشترکی است که در هر نفوذ و هک مهم در سال های گذشته رخ داده است. از شرکت هایی که با این آسیب پذیری درگیر بوده و آسیب دیده اند می توان به Sony Pictures، MySQL، LinkedIn و شرکت امنیتی Bit9 اشاره کرد. علت: توسعه دهندگان به ورودی های داده از یک منبع خارجی مانند فرم وب سایت ها یا حتی یک پایگاه داده اعتماد دارند. اگر ورودی ها چک نشوند، فرد مهاجم می تواند با ارسال یک کوئری دستکاری شده، اقدام به حذف اطلاعات پایگاه داده و عملیات های دیگر آن انجام دهد. حتی می تواند کاری کند تا شرط بررسی رمز عبور نیز نادیده گرفته شده و به راحتی وارد سیستم شود.

بنابراین توسعه دهندگان نباید به هیچ ورودی اعتماد کرده و تمامی آن ها را اعتبار سنجی کند.

4 – داده های برنامه را ایمن (رمزگذاری) نمی کنید

امنیت نرم افزار

امنیت نرم افزار

پس از مدیریت ورودی، امنیت داده احتمالا بزرگترین دسته ناامنی ها در برنامه نویسی را به خود اختصاص داده است. مدیریت ناامن داده ها اشکال مختلفی دارد. رمزگذاری نکردن داده ها یکی از رایج ترین شکل های ناامنی است.

این روز ها مدیریت داده های حساس (نام های کاربری، رمز عبور، شماره کارت های اعتباری و …) بدون رمزگذاری قابل قبول نیست.

همچنین تنها استفاده از یک رمزگذاری کافی نیست و باید به درستی پیاده سازی شود. با استفاده از ابزار های قوی رمزگذاری که در برابر حملات brute-force مقاوم هستند و در نظر گرفتن سناریو های احتمالی می تواند از فاش شدن داده ها جلوگیری کند. الگوریتم های رمزنگاری قدیمی در برابر حملات Brute-Force آسیب پذیر هستند.

5 – لایه 8 را نادیده می گیرید

در مدل OSI شبکه، 7 لایه داریم. منظور از لایه هشتم، انسان ها هستند که به طور خاص اشاره به کاربران و مدیران دارد. یکی از شیوه های قدیمی هک، “مهندسی اجتماعی” است که در آن، هکر با فرد مورد نظر (که معمولا دارای دسترسی ویژه در سیستم هست) رابطه صمیمانه برقرار کرده و سعی می کند تا اطلاعات حساسی را از آن بگیرید بدون اینکه خود طرف متوجه شود. بنابراین باید آموزش های لازم به مدیران سیستم ها در این زمینه داده شود.

QR:  5 اشتباه امنیتی که برنامه نویسان مرتکب می شوند
به اشتراک بگذارید