کدنویسی میکنم نه به این خاطر که کسب درآمد کنم یا توسط دیگران تحسین بشم،فقط به این خاطر که کدنویسی باحاله.
امکانپذیر بودن یا نبودن کشف Backdoor و کدهای مخرب در نرم افزار
خوبه که همین اول کار، یه توضیح مختصر بدیم که اصلا این Backdoor چی هست و چکاره هست تا بعد بریم سراغ اینکه چطوری میشه اون رو کشف کرد یا اینکه اصلا قابل کشف هست یا نه؟
به زبان ساده در علوم کامپیوتر و IT، بدافزار بک دور(Backdoor) به کدهای مخربی گفته میشه که در برنامه و نرم افزار قرار داده میشه که بتونیم بدون داشتن مجوز به بخش هایی که نیاز به مجوز دارند وارد بشیم.یعنی بتونیم مکانیزم های امنیتی برنامه رو دور بزنیم و به منابع سیستم دسترسی پیدا کنیم.
خوب شاید بگید تفاوتش با هک چیه؟فرقش اینه که هک از حفره ها و آسیب پذیری های ناخواسته یک سیستم استفاده میکنه ولی Backdoor کدهای مخربی هستند که توسط تولید کننده نرم افزار با سوء نیت در کد قرار داده شده و به مشتری تحویل میشود.
همیشه در محل کار این نگرانی برامون وجود داشت که وقتی یه برنامه یا نرم افزار رو تحویل میگیریم و قصد استفاده از اون رو داریم چطور اطمینان حاصل کنیم که آلوده به Backdoor و کدهای مخرب نباشه.چطور مطمئن بشیم که برنامه نویس اون نرم افزار به هر دلیلی داخل سورس برنامه و یا داخل فایلهای dll یا Library اون کد مخرب نزده باشه و دست ما رو داخل پوست گردو نذاره؟
این نگرانی عاملی شد که به بررسی راههای کشف Backdoor در نرم افزار بپردازیم و از تجربیات شرکتهای مطرح که در زمینه تست امنیت نرم افزار در ایران فعال بودند استفاده کنیم و نتایج این بررسی رو در اختیار دوستان علاقمند قرار بدیم.
اشتباه مرسومی که وجود داره اینه که بسیاری فکر میکنند که وجود backdoor ها با تست امنیت و pentest قابل کشف است در حالی که تست امنیت و Pentest که شرکتهای فعال در زمینه امنیت نرم افزار انجام میدهند از نوع Blackbox میباشد که نیازی به دسترسی به کد منبع وجود ندارد بر خلاف آن بررسی وجود Backdoor در برنامه از نوع whitebox میباشد و نیاز به دسترسی به کد منبع برنامه توسط آزمونگر میباشد.
متاسفانه شرکتهای ایرانی که بعضا توانایی زیادی در زمینه تست امنیت نرم افزار و PenTest دارند در زمینه بررسی و کشف بک دورها فعالیت بسیار کمی دارند و به دلایلی تمایلی به انجام این قبیل کارها ندارند.مهمترین علت اون هم اینه که انجام این تست نیاز به بررسی تمام خطوط برنامه و فایلهای dll و library های برنامه داره،ولی این تازه قسمت خوبشه،چون مشکل اصلی اینه که آزمونگر میبایست کل bussiness و قواعد کسب و کار رو به صورت کامل و دقیق بدونه تا بتونه تفکیک کنه کدهای مخرب رو از کدهای برنامه و این کار بسیار زمانبر و پرهزینه خواهد بود،و نکته مهم اینه که اگرچه ابزارها و نرم افزارهایی برای کمک به تشخیص کدهای مخرب با استفاده از الگوهای نرم افزاری وجود داره ولی عملا کاربرد بسیار کمی داره و بهترین راه کماکان بررسی چشمی و خط به خط سورس کد است.
نتیجه اینکه باید ببینیم سازمان ما تا چه حد ریسک این رو می پذیره که سورس برنامه به همراه انتقال دانش کسب و کار رو به یک شرکت دیگه جهت تست بسپاره و تا چه حد زمان و هزینه برای اینکار تخصیص میده.
مطلبی دیگر از این انتشارات
ایجاد سرویس مجازی(Mock) با SoapUI و ReadyAPI
مطلبی دیگر از این انتشارات
تست های غیر عملکردی نرم افزار (Non-Functional Test)
مطلبی دیگر از این انتشارات
آموزش نصب و راهنمای کاربری SonarQube با Maven