گزارش فصلینگاهی گذرا به گزارش‌های آسیب‌پذیری در پلتفرم باگ‌بانتی راورو ۱۴۰۳مشاهده گزارش
گپ‌وگفتی با شکارچی آسیب پذیری تمام‌وقت؛ برنا نعمت‌زاده ( bornan )

گپ‌وگفتی با شکارچی آسیب پذیری تمام‌وقت؛ برنا نعمت‌زاده ( bornan )

۲,۷۵۹

در این بلاگ‌پست، به سراغ یک شکارچی‌ آسیب‌پذیری تمام‌وقت رفته‌ایم تا با او گپ‌وگفت کوتاهی داشته باشیم؛ برنا نعمت‌زاده ( bornan@ )

برنا ۷ سال است که در حوزه‌ی امنیت سایبری فعالیت می‌کند. متخصص تست نفوذ و محقق امنیتی برنامه‌های تحت وب است. یک شکارچی آسیب پذیری تمام‌وقت است. تجربه‌های متعدد و متنوعی در سطح جهانی دارد؛ کشف و شکار باگ در برنامه‌ی باگ بانتی گوگل، مایکروسافت و … . آموخته‌ها و تجربه‌هایش را نیز از طریق تدریس در حوزه‌ی باگ بانتی با دیگران به اشتراک می‌گذارد.

داخل پرانتز: این گپ‌وگفت در شهریورماه ۱۴۰۱ با برنا نعمت‌زاده انجام شده است. و تنها برخی آمار آن از تجربه‌های جهانی برنا، قبل از انتشار با هماهنگی او به‌روز شده‌ و به متن اضافه شده‌اند.

_ ممکن است که خودت را برایمان معرفی کنی؟ اگر بخواهی فقط در چند جمله، خود را معرفی کنی، چه می‌گویی؟

من برنا نعمت زاده هستم و ۷سالی ست که در حوزه‌ی امنیت اپلیکیشن‌ها فعالیت دارم. کارم را با برنامه‌نویسی وب شروع کردم. به خاطر علاقه‌ای که به این حوزه داشتم، بعدش به سراغ تست امنیتی اپلیکیشن‌ها رفتم و چند سالی ست که در زمینه‌ی باگ بانتی فعالیت دارم.

_ چه شد که شکارچی آسیب‌پذیری شدی؟ چطور و چرا وب را انتخاب کردی؟

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

_ در مسیر شکارچی آسیب‌پذیری شدن و شکارچی آسیب‌پذیری ماندن، چه چالش‌هایی را پررنگ و قابل‌توجه می‌بینی؟

درباره‌ی شکارچی آسیب پذیری (یا به‌اصطلاح خودمانی‌تر همان هانتر)بودن باید بگویم که کسی که خودش را هانتر می‌داند، یک سری معیارها و فاکتورها را باید داشته باشد و یک سری چالش ها در این مسیر قطعا وجود دارند. از چالش‌هایی که می‌توانم به آن‌ها اشاره کنم، این است که در بحث شکار آسیب‌پذیری، ما رقیب‌های زیادی داریم. مخصوصا دوستانی که در سطح بین‌المللی فعال هستند و کار می‌کنند، خیلی از این شکارچی‌های رقیب جهانی، از تکنیک‌های مشابه و رایجی استفاده می‌کنند که ما هم می‌خواهیم از همان‌ها استفاده کنیم، یا به سراغ دامنه هایی می‌روند که ما هم قطعا روی همان ها وقت می‌گذاریم. چالش اصلی‌ای که وجود دارد، به نظرم این است که ما بتوانیم یک‌سری تکنیک، سناریو یا متدولوژی برای خودمان داشته باشیم که کم‌تر با موقعیت "گزارش تکراری" مواجه شویم، بتوانیم گزارش های بهتری را ارائه دهیم و بتوانیم از رقبایی که در این سطح داریم، جلوتر باشیم. به نظرم این مسئله یکی از رایج‌ترین و بزرگ‌ترین چالش‌هایی ست که این مسیر دارد. مثلا من هم شاهد بوده‌ام که خیلی از افراد که فعالیت در این مسیر را شروع می‌کنند، مدتی آسیب‌ پذیری پیدا می‌کنند و گزارش می‌فرستند و وقتی با "تکراری شدن" گزارش‌ها مواجه می‌شوند، می‌گویند: "چرا همه‌اش تکراری می‌شود؟" و "چرا در چند ماهی که کار کرده‌ام، یک گزارش تایید شده ندارم؟" یک علتش این است که خب همه دارند روی همین دامنه ها و همین آسیب پذیری ها کار می‌کنند. این‌که "چگونه بتوانیم این چالش را پشت سر بگذاریم و موفق شویم" بستگی به هانتر دارد؛ که دقیقا چگونه تست می‌کند؟ چه سناریویی را استفاده می کند؟ و چه متدولوژی‌ای را دارد؟ و مورد بعدی به نظرم حفظ پیوستگی در کار است. ممکن است وقتی ما داریم روند شکار یک آسیب پذیری را طی می‌کنیم، به دلایلی آسیب پذیری پیدا نشود و نتوانیم گزارشی بفرستیم. اگر این پیوستگی رعایت شود، به مرور می‌تواند حتی شخص را به موفقیت برساند. نه این‌که آدم بخواهد جا بزند و بگوید: "این حوزه اصلا فایده ندارد و خسته‌کننده است."

به صورت کلی اگر بخواهم آن‌چه که گفتم را خلاصه کنم، می‌شود: پیوستگی و به روز بودن در مطالبی که ارائه می‌شود. چون اکثر هانترهایی که در این زمینه فعالیت دارند، مدام خودشان را به روز می‌کنند، متدولوژی خودشان را دارند، سعی می‌کنند در اپلیکیشن‌ها سناریوهایی را امتحان کنند که به ذهن کمتر هانتری رسیده باشد. جمله‌ای که من، خودم، همیشه برآن تاکید دارم این است که "هانتر باید خارج از جعبه فکر کند". هانتر باید بتواند حملات ترکیبی که نیاز به chain دارد را پیاده‌سازی بکند، تا بتواند یک سناریو خوب را گزارش دهد و پول خوبی به دست بیاورد. "پیوستگی" ، "آپدیت بودن" و همین‌طور "علاقه‌ی شخصی" واقعا می تواند در این زمینه کمک کنند.

_ از نظر شما آیا می‌شود به شکارچی آسیب‌پذیری بودن، به‌عنوان یک شغل تمام‌وقت نگاه کرد؟ چه مزیت‌ها و چه چالش‌هایی را در آن می‌بینی؟

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

_ در فرهنگ لغت شخصی برنا، "هک" چطور تعریف می‌شود؟

"هک" از نظر من یعنی؛ خارج از جعبه فکرکردن. من از این جمله خیلی استفاده می‌کنم. جمله‌‌ی قشنگی هم هست. این‌که من بتوانم خارج از چارچوبی که تعیین شده در یک اپلیکیشنی که دارم تست می‌کنم، پیش خودم فکرکنم و ببینم که "چه راهکار یا روشی وجود دارد که من بتوانم این مکانیزم‌ها را دور بزنم؟ و آسیب پذیری را اکسپلویت کنم؟" . این دید بهم کمک می‌کند که بتوانم آسیب پذیری های بهتری را کشف کنم و گزارش‌های خیلی بهتری را ارائه دهم.

_ آسیب پذیریی‌ محبوبت چیست؟

آسیب پذیری های منطقی وب و حملات DOM همیشه موردعلاقه‌ام هستند. هرسایتی را که بخواهم تست کنم، این هارا در اولویت می گذارم. این گونه نیست که حملات دیگر را تست نزنم، حتی ممکن است خیلی از حملات تکنیکال دیگه‌ای که وجود دارد را با این‌ها Chain (زنجیر) کنم و یک سناریوی حمله‌ی درست‌وحسابی را گزارش دهم. ولی خب این دو دسته برای من خیلی اهمیت دارند؛ به خاطر این‌که افراد کمتر به سراغشان می‌روند و می‌شود سناریوهای جالبی را هم با آن‌ها پیاده‌سازی کرد.

_ چند وقت پیش خبردار شدیم که به کنفرانس بلک‌هت دعوت شده‌ای. جای افتخار داشت و تبریک می‌گوییم. دوست داریم که اگر ممکن است درموردش بیش‌تر برایمان بگویی. چه شد که دعوت شدی؟ آیا موفق شدی که بروی؟ چالش‌هایی داشتی؟

چندوقت پیش Microsoft ایمیلی زده بود و تعدادی از دوستان را برای یک دورهمی در کنفرانس دعوت کرده بودند. افتخار بسیار بزرگی هم بود. افرادی که در این ۴سال اخیر آسیب پذیری Validی ثبت کرده بودند که در ازای آن پولی را هم دریافت کرده بودند، به این مراسم دعوت شده بودند. که متاسفانه من نتوانستم حضور داشته باشم. بابتش حس بدی داشتم که نتوانستم در این مراسم حضور داشته باشم و با بقیه‌ی Researcher های دنیا که در این زمینه واقعا Top هستند، تعاملی داشته باشم. ولی درکل افتخار بزرگی برایم بود.

_ چه حیف...

به‌طورکلی ممکن است که از تجربه‌هایت در سطح جهانی‌ برایمان بیش‌تر بگویی؟

در سطح جهانی تجربه‌های متفاوتی داشتم که چند نمونه را برایتان تعریف می‌کنم:

امسال، جزو هانترهای برتر گوگل شدم.

یک نمونه، مایکروسافت بود. یک آسیب‌پذیری گزارش داده بودم. بعد از اینکه گزارش را دریافت کردند، این آسیب‌پذیری را بستند و Not Applicable خورد. علتش را این‌گونه بیان کردند که این آسیب پذیری به دیزاین این اپلیکیشن ربط دارد و چیزی نیست که بتوانیم به عنوان یک آسیب پذیری درنظر بگیریم.

نکته‌ای که باید درنظر داشته باشیم این است خیلی از آسیب‌ پذیری‌ها و حملات منطقی‌ای که ما می‌خواهیم گزارش دهیم، ممکن است جزئی از دیزاین و Functionality اپلیکیشن باشند. به همین دلیل است که این نکته اهمیت پیدا می‌کند که ما documentation اپلیکیشن را خوب بخوانیم. من هم documentation را خوانده بودم و کاملا آگاهی داشتم که چه چیزی از documentation است و چه چیزی نیست. با این حساب بعد از این که ریپورتم ریجکت شد، بی‌خیال نشدم و سعی کردم که دوباره توضیح بدهم. چون خیلی وقت‌ها چیزی که باید درنظر بگیریم، این است که ممکن است تیم امنیتی اشتباه متوجه شده باشند. نکته‌ای که یک هانتر باید درنظر بگیرد، این است که بتواند توضیح خوبی را ارائه دهد و موضوع را کاملا باز کند و اثبات کند که آسیب پذیری ربطی به دیزاین ندارد. بعد از این‌که توضیحات مختلف و بیش‌تری دادم، ریپورتم اکسپت شد و توانستم بانتی بگیرم.

تجربه‌ی دیگری که داشتم و برایم جالب بود، کشف یک آسیب پذیری در یکی از سرویس‌های گوگل بود. بدون این‌که از burp suite استفاده بکنم، چندین Functionality جالب داشت این سایت، که با استفاده از همان‌ها من می‌توانستم یک مکانیزم امنیتی را دور بزنم. گزارشش را برای گوگل فرستادم و اکسپت کردند. از من این تجربه‌ی جالبی برایم بود. سعی می‌کنم رایتاپش را هم بنویسم تا دوستان ببینند که چگونه می‌شود با بازی با منطق وب اپلیکیشن، آسیب پذیری‌های مختلفی را کشف کرد.

درکل در بین تجربه‌هایم، خیلی وقت‌ها هم پیش آمده که گزارشی را فرستاده‌ام و گاهی با این‌که آسیب پذیری هم valid بوده و به‌عنوان informative آن را بسته‌اند ربط داده‌اند به این‌که به دیزاین اپلیکیشن مرتبط است. ولی باز در طول صحبت‌ها و کامنت‌هایی که پیش آمد، توانستم آن‌ها را مجاب کنم که این آسیب پذیری valid است. ریپورت های هم بوده قطعا و زیاد هم از این ریپورت ها داشته ایم ریپورت‌های duplicate هم بوده‌اند، که برای سرویس‌های گوگل و مایکروسایف فرستاده‌ام. حتی می‌توانستم بابت این ها بانتی‌های خوبی هم بگیرم... . ولی نکته ای که باید درنظر داشته باشیم این است که فرد باید به صورت پیوسته و باعلاقه کارش را پیش ببرد. من همیشه در ذهن خودم با خودم می‌گویم که ممکن است گزارشی که می‌فرستم، duplicate بخورد یا شرایط دیگری برایش پیش بیاید. این‌که چیزی به دانشم اضافه شود و تجربه‌ام بالاتر برود، برایم ارزش‌مندتر است.

_ تجربه‌ی تدریس در حوزه‌ی امنیت سایبری، برایت چطور بوده؟ چه چالش‌هایی داشته؟ چه دغدغه‌هایی را بیش‌تر حس کرده‌ای؟

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

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

_ حرف و توصیه‌ای برای شکارچی‌های آسیب‌پذیری داری؟

حرفی که برای شکارچیان آسیب پذیری دارم این است که اول از همه لازم است که واقعا به این حوزه علاقه داشته باشید. منظورم از علاقه این نیست که بگویید "هک جذاب است." یا " جذاب است که آسیب پذیری پیدا کنم و گزارش بدهم و بانتی بگیرم.". نه! منظورم این است که وقتی دارید یک جمله‌ای را از یک آسیب پذیری می‌خوانید، اول از همه بروید و در کلی reference ( در منابع مختلف؛ یوتویوب، کتاب‌ها و ...) چک کنید تا بفهمید مفهوم آن دقیقا چیست. بعدش خیلی ساده برای خودتان توضیح دهید. طوری‌که اگر من و یا هر شخص دیگری از شما پرسیدیم: "مفهوم این جمله چیست؟" بتوانید خیلی ساده برای مخاطب توضیح دهید. این یعنی آن مفهوم را خوب فهمیده‌اید، یعنی آن‌قدر علاقه دارید که برای آن مفهوم وقت بگذارید.

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

_ نکته‌های قابل‌توجهی را بیان کردی. ممنون که وقتت را در اختیار ما گذاشتی برنای عزیز. امیدواریم که باز هم شاهد درخششت در سطح جهان باشیم. ؛)

برنا نعمت‌زاده، در قسمت‌هایی از مجموعه‌ی پخش‌زنده‌ی راورو به تحلیل و شکار آسیب پذیری‌‌های DOM پرداخته است:

قسمت ۱۷ از فصل ۰۲

قسمت ۱۸ از فصل ۰۲

بلاگ‌پست‌های مرتبط:

گپ‌وگفتی با متخصص امنیت دنیای صفرویک‌ها؛ علی امینی

گپ‌وگفتی با شکارچی آسیب پذیری؛ رضا شریف‌زاده

گپ‌وگفتی با شکارچی؛ علیرضا رضایی

چگونه توانستم آسیب پذیری ۶۰ میلیون تومانی Mass Assignment را برروی وبسایت راورو کشف کنم؟ (رایتاپ محمدجواد بناروئی)