مقدمه
برنامه جایزه شکار باگ پادویش از ابتدای مرداد ۹۷ به صورت عمومی اعلام شده و در آن به محققان و علاقمندان رشته امنیت که موفق شوند حفره آسیبپذیری در پادویش پیدا کرده و گزارش نمایند جوایز نقدی اهدا میشود.
در این سند برخی اصطلاحات رایج حوزه امنیت که لازم است شرکتکنندگان در برنامه جایزه باگ با آنها آشنا باشند و برخی اشتباهات رایج شرح داده شده است.
اصطلاحات و تعاریف
آسیبپذیری
حفره Vulnerability |
این اصطلاح به معنی وجود یک ضعف یا باگ در نرمافزار است که به یک نفوذگر اجازه سواستفاده از آن را میدهد. تمثیل غیر کامپیوتری: یک قلعه نظامی را در نظر بگیرید که هدف آن جلوگیری از ورود مهاجمان است. اکنون فرض کنید که یکی از دیوارهای قلعه دارای شکافی است که اجازه میدهد مهاجمان از آن عبور کرده وارد قلعه شوند. اگر قلعه را نرمافزار محسوب کنیم، این شکاف معادل همان مفهوم «آسیبپذیری» در نرمافزار میباشد. |
---|---|
بهرهبردار اکسپلویت Exploit |
اکسپلویت کردن به معنی بهرهبرداری و سواستفاده از «آسیبپذیری» یک نرمافزار میباشد. در واقع آسیبپذیری یک اشکال بالقوه است که با اکسپلویت کردن بالفعل میشود. تمثیل غیر کامپیوتری: در مثال قلعه نظامی، هنگامیکه مهاجم از شکاف عبور کند میگوییم از آن بهرهبرداری (اکسپلویت) کرده است. |
RCE Remote Code Execution اجرای کد از راه دور |
نوع خاصی از «آسیبپذیری» در نرمافزار به «اجرای کد از راه دور» مشهور است. این نوعی آسیبپذیری نرمافزار است که به مهاجم اجازه میدهد نرمافزاری – که هدف آن اجرای کد نیست – را طوری فریب بدهد که منجر به اجرای کد دلخواه مهاجم شود. در این موضوع بسیار مهم است که: اولا) هدف نرمافزار اجرای کد نباشد. به عنوان مثال اگر وظیفه یک نرمافزار دریافت دستوری از راه دور و اجرای آن بوده (مانند ریموت دسکتاپ) و این نرمافزار در حیطه عملکرد طبیعی خودش به کار گرفته شود؛ اصلا موضوع «آسیبپذیری» محسوب نمیشده و در نتیجه RCE نیز نیست. دوما) اجرا به صورت ریموت (از راه دور) انجام گرفته باشد. در این خصوص باید توجه کرد که «ریموت بودن» به این معنی است که عملیات بدون نیاز به لاگین یا داشتن دسترسی دیگری انجام شود. مثال: یک وبسرور که وظیفه آن جستجوی یک عبارت و نمایش نتیجه آن است را در نظر بگیرید. اگر مهاجم بتواند مقادیری را به این وبسرور ارسال کند که وبسرور به جای جستجوی عبارت، آن را به عنوان کد اجرا کند این یک آسیبپذیری RCE است. مثال معکوس: یک مهاجم پسورد ادمین سیستم را بدست آورده و کد خود را از طریق ریموت دسکتاپ اجرا میکند. این موضوع RCE نیست، چرا که مهاجم به سیستم لاگین کرده و در نتیجه اکنون با سطح دسترسی کاربر ادمین محلی به سیستم دسترسی دارد. بنابراین اگرچه مهاجم پشت سیستم ننشسته است و به صورت ریموت به آن متصل است، اما کدی که اجرا کرده به صورت محلی و با دسترسی محلی اجرا شده است. مثال معکوس ۲: مهاجم یک بدافزار دربپشتی را برای کاربر ارسال کرده و کاربر را متقاعد میکند آن را اجرا کند. مهاجم با استفاده از دربپشتی کنترل سیستم را از راه دور به دست میگیرد. این مثال اصولا آسیبپذیری نرمافزاری محسوب نمیشود، و نوعی مهندسی اجتماعی (Social Engineering) است. نرمافزار به درستی عمل کرده است، اما کاربر سیستم گمراه شده و دستور اشتباهی را به نرمافزار داده است. به علاوه دربپشتی به صورت محلی اجرا شده و با توجه به تعاریف بالا، «از راه دور» نیست. یک نکته مهم دیگر در تعاریف خود بحث Code Execution است. باید توجه کرد که تعریف Code Execution در بحث آسیبپذیری، مربوط به جایی است که انتظار اجرای کد از نرمافزار نمیرود. به عنوان مثال وقتی شما یک فایل exe را اجرا میکنید، طبیعتا انتظار دارید که اجرا شود و این یک آسیبپذیری نیست. اما اگر باز کردن یک فایل word منجر به اجرای کد روی سیستم شما شود یک آسیبپذیری خطرناک رخداده است، چرا که انتظار نمیرود باز کردن یک فایل word ساده منجر به چنین اتفاقی شود. به طریق مشابه، اگر یک مهاجم طوری کاربر را ترغیب به اجرای یک فایل exe کند، این امر در حوزه Phishing و مهندسی اجتماعی محسوب شده و یک باگ فنی نیست. بلکه نیازمند آموزش کاربر و اعمال سیاستهای محدود کننده خواهد بود (مثلا جلوگیری از ایمیل کردن exe یا مانند آن که توسط برخی سایتها و نرمافزارها انجام میشود) |
LPE Local Privilege Escalation افزایش سطح دسترسی محلی |
نوع خاصی از «آسیبپذیری» در نرمافزار به «افزایش سطح دسترسی محلی» مشهور است. معمولا زمانی از این نوع آسیبپذیری استفاده میشود که مهاجم توانسته به طریقی به سیستم دسترسی پیدا کند و اکنون میخواهد سطح دسترسی خود را از کاربر به ادمین افزایش دهد. مثال: یک مهاجم توانسته است به نحوی به سیستم لاگین کرده (مثلا رمز کاربر را دزدیده) و اکنون میخواهد یکی از تنظیمات سیستمی را تغییر دهد. برای این کار مهاجم باید دسترسی ادمین یا روت داشته باشد. در نتیجه از یک اکسپلویت LPE استفاده میکند تا کاربر محدود و غیرادمین خود را، به ادمین تبدیل کند توجه کنید که در این سناریو ممکن است مهاجم پشت سیستم نشسته باشد، به سیستم ریموت زده باشد، یا حتی تروجانی را برای کاربر ارسال کرده و کاربر ناخواسته آن را اجرا کرده باشد. در تمام این موارد، دسترسی مهاجم محلی یا Local محسوب میشود، چرا که مهاجم قبلا اختیار کامل سیستم را (در حد کاربر عادی) به دست آورده است. |
جهت آشنایی بیشتر و دیدن مثالهای واقعی از انواع آسیبپذیریهای LPE و RCE میتوانید این لغات را در وب جستجو کرده و مطالب و گزارشهای فنی سایر محققین امنیت را مطالعه نمایید.
همچنین برای آشنایی با تعاریف اصلی و نحوه امتیازدهی باگهای امنیتی، پیشنهاد میکنیم حتما مستندات CVSS را مطالعه بفرمایید.
چکلیست قبل از ارسال گزارش باگ به پادویش
قبل از اینکه باگ خود را به پادویش گزارش دهید، لطفا موارد زیر را بررسی کنید:
- آیا باگ شما جزو برنامه شکار باگ هست؟ متن برنامه جایزه شکار باگ پادویش را بخوانید. دقت کنید که باگ شما باید مربوط به خود پادویش باشد. صرف عدم تشخیص یک بدافزار خاص حفره امنیتی محسوب نشده و به سادگی با تغییر امضا قابل رفع است، در نتیجه جزو این برنامه نیست. لطفا قاعده سرانگشتی زیر را بخوانید.
قاعده سرانگشتی اعلام باگ به پادویش:
در هنگام گزارش باگ خود به پادویش توجه کنید که برنامه جایزه شکار باگ پادویش فقط مربوط به باگهای امنیتی کشف شده در پادویش است. اگر شک دارید که باگ شما ارتباطی با پادویش دارد یا خیر، این قاعده سرانگشتی را لحاظ کنید:
«آیا باگ شما روی سیستمی که پادویش ندارد قابل اجرا است؟»
اگر پاسخ شما بلی است، پس باگی که پیدا کردهاید مربوط به پادویش نبوده و طبعا جزو برنامه شکار باگ پادویش نیز نخواهد بود. بلکه باید آن را به محل صحیح ارجاع دهید.
توجه کنید که «تشخیص بدافزار» به طور صریح در بندهای برنامه جایزه باگ استثنا شده است. هدف این برنامه افزایش تشخیص بدافزارهای قدیمی یا جدید نیست؛ چرا که روزانه هزاران بدافزار جدید کشف و به پایگاه تشخیص بدافزار پادویش اضافه میشوند. بلکه هدف این برنامه (مانند تمام برنامههای مشابه نرمافزارها و ضدویروسهای خارجی) کشف حفرهها و آسیبپذیریهای امنیتی خود پادویش میباشد.
- صحت اطلاعات خود را چک کنید. پس از بررسی باگ و در صورت پذیرفته شدن لازم است با شما ارتباط گرفته شود. بنابراین از صحت اطلاعات خود (نام و نام خانوادگی، ایمیل و …) مطمئن شوید.
- عنوان سرفصل دقیق خود را انتخاب کنید. برنامه شکار باگ چهار سرفصل مشخص دارد که در جدول مربوطه آورده شدهاند. هنگام ارسال گزارش دقیقا قید کنید که گزارش شما تحت کدامیک از این سرفصلها ارائه میشود.
- استفاده از آخرین نسخه پادویش. اگر باگ شما قبلا کشف شده و در آخرین نسخه پادویش حل شده است به شما امتیازی تعلق نخواهد گرفت. بنابراین حتما قبل از ارسال گزارش، آخرین نسخه پادویش را دانلود کرده و باگ خود را روی آن تست کنید.
- مشخص کردن دقیق محصول دارای آسیبپذیری. در گزارش خود شماره نسخه پادویش مورد تست را به دقت قید نمایید. (شماره نسخه یک عدد چهار رقمی مانند ۱.۲.۳۳۳.۴۴۴۴ است)
- شرح دقیق سناریوی باگ. بسیاری از باگهای ارسالی فاقد یک متن ساده تشریح موضوع هستند که کار بررسی را سخت میکند. اگر حوصله توضیح کاری که کردید را ندارید، انتظار نداشته باشید دیگران بتوانند منظور شما را تشخیص دهند. بنابراین هر گزارش ارسالی باید دقیقا سناریوی منجر به بازتولید باگ را به صورت گام به گام ذکر کند.
- ارسال فایلهای لازم به پیوست. در اغلب موارد علاوه بر توضیحات متنی، لازم است فایل اکسپلویت خود را نیز برای ما ارسال کنید.
- امنیت اطلاعات ارسالی. با توجه به اهمیت موضوع برای امنیت کاربران، لطفا گزارشها را فقط برای ایمیل اعلام شده ارسال نمایید و همه فایلهای پیوست را به صورت رمزدار ارسال نمایید.