آیا هر باگی، یک باگ امنیتی ست؟
وقتی صحبت از باگ میشود، ناخودآگاه در ذهن بسیاری از افراد، باگ امنیتی و هک نقش میبندند. اما باگ و باگ امنیتی، هر دو به یک معنا هستند؟ ما در این بلاگپست قصد داریم به باگهای نرمافزاری و باگهای امنیتی بپردازیم.
در این بلاگپست خواهید خواند:
• باگ چیست؟ و چگونه این نام انتخاب شده است؟
• باگهای نرمافزاری
• آسیبپذیری، نوعی باگ است!
• چه آسیبپذیریهایی خطرناکتر و رایجترند؟
• کدام نوع آسیبپذیریها، در دنیا از همه رایجترند؟
• در باگبانتی، کدام نوع باگ مدنظر است؟
باگ چیست؟ و چگونه این نام انتخاب شده است؟
این اصطلاح اولین بار توسط خانم Grace Murray Hopper به کار گرفته شده است. زمانی که خانم Grace Hopperدر دانشگاه هاروارد به همراه تعدادی از متخصصین در حال بررسی کامپیوتر Mark II بودهاند، متوجه شدهاند که اختلال در عملکرد این کامپیوتر به دلیل وجود یک حشره در آن ایجاد شده است؛ به همیت دلیل، اولین بار اصطلاح Bug را برای نقص نرمافزاری به کار بردند.
باگهای نرمافزاری:
برای راهاندازی هر برنامهی نرمافزاری و رایانهای، ابتدا طراحان نرمافزار، طرح و معماری آن برنامه را تهیه میکنند و سپس برنامهنویسان بر اساس طراحی انجامشده، شروع به نوشتن برنامه میکنند. در این دو مرحله ممکن است توسط طراحان در کار طراحی و برنامهنویسان در کار نوشتن برنامه، خطاهایی صورت بگیرد. این خطاها، مشکلات موجود در سمت زیرساخت برنامه و پیادهسازی برنامه منجر به ایجاد باگهای نرمافزاری در سامانه میشوند. این باگهای نرمافزاری، ممکن است سبب ایجاد اختلال در عملکرد سامانه شوند، مانند؛ کندی سامانه، اشتباه در محاسبات، عدم دسترسی به API و خطاهای سینتکسی
آسیبپذیری، نوعی باگ است!
باگامنیتی نوعی باگ نرمافزاری است، اما هر باگ نرمافزاریای باگ امنیتی نیست. هر باگ نرمافزاریای که امکان نفوذ و سوءاستفادهی افراد خارجی را فراهم سازد، باگ امنیتی مینامیم. این باگها ممکن است توسط هکرهای کلاهسیاه و نفوذگران غیرقانونی، کشف و اکسپلویت شوند و مورد بهرهجویی قرار گیرند. همچنین ممکن است دسترسی بالایی در برنامه را نیز به برای هکرها فراهم آورند. این نقاط آسیبپذیر سامانه را، با عنوان آسیبپذیری یا Vulnerability نیز میشناسیم و اصطلاح حفرهی امنیتی را نیز برای آن به کار میبریم.
چه آسیبپذیریهایی خطرناکتر و رایجترند؟
معمولا آسیبپذیریها بر اساس شدت خطر آنها و پتانسیلشان در آسیبرساندن به سامانه، ردهبندی میشوند. مراجع امنیتی معتبری مانند وبسایت Owasp و پلتفرم باگبانتی bugcrowd، مشهورترین ردهبندیهای آسیبپذیریها را در دنیا ارائه میکنند.
Owasp Top10:
مرجع Owasp تقریبا هر سال و یا هر دوسال، ده دسته آسیبپذیری خطرناک را برحسب فراوانی آسیبپذیریهای کشفشده در وبسایت خود منتشر میکند. آخرین لیست ارائهشده از Owasp، از خطرناکترین آسیبپذیریها، تا تاریخ نگارش این بلاگپست، (6 شهریور 1400) به شرح زیر است:
• Broken Access Control
• Cryptographic Failures
• Injection
• Insecure Design
• Security Misconfiguration
• Vulnerable and Outdated Components
• Identification and Authentication Failures
• Software and Data Integrity Failures
• Security Logging and Monitoring Failures
• Server-Side Request Forgery
VRT:
پلتفرم باگبانتی bugcrowd نیز ردهبندی VRT را برای ردهبندی آسیبپذیریها در بین حوادث سایبری رخداده، در سامانههای آنلاین در گسترهي جهانی ارائه کرده است. شاخص P در مدل VRT، درجهی خطر هر آسیبپذیری را مشخص میکند. آسیبپذیریها در 5 ردهی P1، P2، P3، P4 و P5 رتبهبندی شده اند.در دو سر این ردهبندی، P1 رایجترین آسیبپذیریها و P5 نامتداولترین آسیبپذیریها قرار دارند. در این ردهبندی، دسته (VRT Category)، و زیردستهی (Variant/ Affected Function) مربوط به هر گونهی آسیبپذیری (Specific Vulnerability name) قابلمشاهده است.
کدام نوع آسیبپذیریها، در دنیا از همه رایجترند؟
با توجه به آمار بالا، میتوان دریافت که آسیبپذیریهای تزریقی (Injection) جایگاه بالایی در ردهبندیهای مختلف آسیبپذیریها را به خود اختصاص دادهاند. این آسیبپذیریها، مبتنی بر تزریق کد مخرب به سامانه هستند. از بین آسیبپذیریهای تزریقی، آسیبپذیری Cross Site Scripting یا XSS مشهورترین است. طبق گزارشی از پلتفرم باگبانتی هکروان نیز، 23 درصد از گزارشهای آسیبپذیری در سال 2020 و در سراسر جهان گزارشهایی از کشف آسیبپذیری XSS بودهاند. Information Disclosure و Improper Access Control – Generic نیز به ترتیب در ردههای بعدی قرار دارند.
میتوانید نمونههایی از آسیبپذیری XSS که رامین فرجپور در سال 1397 برروی وبسایت دیجیکالا کشف و به آنها گزارش کردهاست را در بلاگپست «چگونه توانستم با پارامتر refurl بر روی وبسایت Digikala.com آسیبپذیری XSS را کشف کنم؟» بخوانید. در بلاگپستهای XSS DOM-Based، XSS Stored، XSS Reflected، SQL Injection و Command Injection نیز میتوانید دربارهی این آسیبپذیریهای تزریقی و این که شکارچیان چگونه اقدام به کشف این آسیبپذیریها میکنند، بیشتر بخوانید.
در باگبانتی، کدام نوع باگ موردنظر است؟
باگبانتی روندیست که در آن گروهی از هکرهای کلاهسفید، متخصصین امنیت و شکارچیان آسیببپذیری، در جهت ارتقای امنیت کسبوکارها به جستوجو و کشف آسیبپذیریها، حفرهها و باگهای امنیتی سامانهی کسبوکارها میپردازند و در ازای هر گزارش آسیبپذیری نیز پاداش دریافت میکنند.
اگر مایلید که برای کشف باگهای امنیتی و آسیبپذیریهای کسبوکار خود از خرد جمعی بهره ببرید، میتوانید با ثبتنام به عنوان میدان، به جمع میدانهای راورو بپیوندید و از شکارچیان آسیبپذیری کمک بگیرید.
در دو بلاگپست «باگبانتی چیست؟» و «باگبانتی چه نیست؟» میتوانید دربارهی باگبانتی، بیشتر بخوانید.
سخن آخر
معمولا به اشتباه، باگهای نرمافزاری و باگهای امنیتی، مترادف یکدیگر شناخته میشوند. ما در این بلاگپست تلاش کردیم که تفاوت باگهای نرمافزاری و باگهای امنیتی را بهطور واضح بیان کنیم. باگ نرمافزاریای که میتواند موجب نفوذ به سامانه شود، باگ امنیتی (آسیبپذیری) محسوب میشود. اما هر باگ نرمافزاریای، باگ امنیتی نیست.