شاید بیشتر وقتها به این فکر میکنیم که اگر وباپلیکیشن ما آسیبپذیر بود، چهکار کنیم تا نفوذگر نتواند از آن سواستفاده کند اما شاید سوال اصلیتر این باشد که در وهله اول چه اتفاقی میافتد که وباپلیکیشنهای ما آسیبپذیر میشوند؟ آیا راهی وجود ندارد تا زودتر از اینکه اپلیکیشن ما در سمت مشتری مستقر شود، از فاجعههای بعدی جلوگیری کنیم؟
در دومین دوره از رویداد «امن و امان»، مهران قجری، مدیر تیم زیرساخت اسپارا به این سوالها پاسخ داد و راهکارهایی را معرفی کرد که به ما کمک میکند تا از exploit شدن وباپلیکیشنهای خود جلوگیری کنیم. در ادامه توضیحات کامل او را میخوانید:
قسمت اعظمی از آسیبپذیریهایی که روی اپلیکیشنهای ما وجود دارد به دلیل اشتباهات توسعهدهندههای ما در فرایند توسعه کد و استفاده از Dependencyهای آسیبپذیر داخل کد است. شاید مهم ترین دلایل ایجاد آسیبپذیریها را بتوان به چند بخش تقسیم کرد:
- نبود یا ناکارآمدی فرایند تست امنیت
- دانش فنی کم در حوزه امنیت
- حجم بالای کارهای تکراری و خطاهای انسانی
آسیبپذیریهای ساده، خطرات پیچیده
در اکثر مواقع، حملاتی که علیه وب سرورهای ما انجام میشود، اتفاق پیچیدهای نیست و بیشتر به این دلیل است که توسعهدهندههای ما موارد ساده امنیتی را در نظر نمیگیرند. این جمله حاوی دو خبر است. خبر بد اینکه جامعهای از نفوذگران که میتوانند به کد ما وارد شوند، رو به افزایش است و هرکسی با گذراندن چند دوره آموزشی و یاد گرفتن چند تکنیک، میتواند به سازمانهای مختلف حمله و خسارت وارد کند.
اما خبر خوب این است که ما با استفاده از فرایندهای درست توسعه، از زمانی که توسعهدهنده ما کد میزند تا زمانی که کد روی محیط نهایی قرار میگیرد، میتوانیم بسیاری از این آسیبپذیریها را رفع کنیم و مانع Exploit شدن وباپلیکیشن خود شویم.
Static Analysis Security Test یا SAST
SAST یا Static Analysis Security Test به ما کمک میکند تا کد خود را بهصورت Whitebox بررسی و آسیبپذیریهایی که کد قبل از ساخته شدن دارد را شناسایی کنیم. شیوه تست گرفتن هم به این صورت است که ما کد خام را به ابزارهایی که در بازار موجود هستند مانند Sonaqube، Fortify، Snyk و غیره، میدهیم و آنها بهصورت خودکار کد را وارسی میکنند و به ما میگویند که چه آسیبپذیریهایی را میتوانیم داشته باشیم.
Dynamic Analysis Security Test یا DAST
اما یک سری از باگها بعد از اینکه کدمان را ساختیم و بهاصطلاح فنی Build کردیم، خودشان را نشان میدهند. به عبارت دیگر شما باید حتما برنامه را اجرا و سپس تستهای امنیتی را روی آن انجام دهید. به این شیوه از تست، Dynamic Analysis Security Test یا DAST گفته میشود. شما میتوانید با استفاده از ابزارهایی مانند acunetix، قسمتی از آسیبپذیریها را شناسایی و آن را بهبود دهید.
Software Composition Analysis یا SCA
مورد دیگری که میخواهم دربارهاش صحبت کنم و خوب است فرایندی برای آن داشته باشیم، بررسی امنیتی وابستگیها است. Software Composition Analysis یا SCA نوعی تست است که با بررسی وابستگیها و آسیبپذیریهای باز روی آنها، به توسعهدهندهها هشدار میدهد تا از وابستگیهای آسیبپذیر استفاده نکنند.
پنتست دستی با وجود تست خودکار؟
آیا با وجود این ۳ فرایندی که معرفی کردیم ما دیگر نیازی به هیچ تیم Pentest نداریم تا برنامههای ما را وارسی کند؟ پاسخ تا به این لحظه «خیر» است؛ زیرا توانایی ابزارهای بالا بهاندازهای نیست که بتوانند آسیبپذیریهای جدی را شناسایی کنند و ما هنوز هم به فرایندهای دستی برای تست امنیت نیاز داریم. اما استفاده از این ابزارها، کار تیمها را راحتتر و شناسایی آسیبپذیریهای ساده را سریعتر کرده است.
همچنین فقط گزارشگیری و نشان دادن آسیبپذیریها کافی نیست. ما باید در فرایند نوشتن کدها، روال Code review را هم داشته باشیم.
برای اینکه بتوانید میزان امنیت سامانه یا زیرساخت خود را بسنجید و درصورت نیاز آن را ارتقا دهید، حتما با خدمت Pentest (آزمون نفوذ) اسپارا آشنا شوید.






