مدتیست در حال یادگیری NodeJS هستم و به تبع آن، یادگیری یک NoSQL database مانند MongoDB هم خالی از لطف نیست. ولی خب این نوع دیتابیسها که دوباره بهشت هکران (منظور همان cracker است: یعنی کسی که سعی در نفوذ به سیسمها به قصد سوءاستفاده و یا خرابکاری در آنها میکند – در ادامهی این مطلب هم به همین معنی به کار میرود. ) را فراهم آوردهاند، هیچ کانفیگ امنیتای بصورت دیفالت ندارند! البته باید این نکته را در نظر بگیریم، که دیتابیسهایی مثل MongoDB لزوما ناامن نیستد، بلکه تنها بصورت پیشفرض و در هنگام نصب اولیه هیچ تدبیر امنتیای را نمیاندیشند و این کار برنامهنویس است که خود موارد امنیتای آنها را لحاظ کند.
حالا از آنجایی که اخیرا زیاد در مورد این بهشت هکری خواندهام و تقریبا همهی برنامهنویسهای این حوضه و حتی کسانی که هرگز با این دیتابیسها کار نمیکنند هم در موردش صحبت میکنند، تصمیم گرفتم که کمی با سرویسهای ایرانیای که از MongoDB استفاده میکنند کلنجار بروم تا ببینم این مسئله چقدر صحت دارد.
قطعا قصد من دراینجا آموزش نحوهی پیدا کردن حفرههای امنیتی و بطور کلی مباحث فنی نیست (چون توی ایران ممنوعیت قانونی داره)، بلکه سعی در پرداختن به مسائلی مثل نحوهی برخورد با گزارش باگ و دیگر مسائل اینچنینی را دارم.
خب اول از همه باید بگم که سایت مورد نظر یک فروشگاه اینترنتی است که رتبهی الکسای زیر ۱۰۰۰ ایران را دارد.
بعد از اینکه کاملا از اینکه MongoDB روی سرورشان بصورت پیشفرض نصب و مورد استفاده قرار گرفته مطمئن شدم و متوجه شدم که هیچ کانفیگ امنیتی مثل بستن یا تغییر پورت دیفالت MongoDB یا حتی تعریف user_password برای دیتابیس صورت نگرفته. باز هم مطمئن نبودم که گزارش چنین مشکلی ممکنه چه عواقبی داشته باشه. یعنی برای چنین حسن نیتی باید به بسیاری از مشکلات و عواقب خطرناک! فکر میکردم، ولی در نهایت تصمیم گرفتم که بهشون ایمیل بزنم و زدم و گفتم که MongoDBشون به چه شکلی است.
بعد از حدود ۲۴ ساعت به ایمیلم پاسخ دادند؛ تشکر کرده بودند و درخواست جزئیات داشتند. ولی همان موقع که من بررسی کردم مشکلات رو برطرف کرده بودند و در واقع نتونستم به دیتابیسشون دسترسی پیدا کنم.
ولی خب بعد از جزئیات بیشتری که فرستادم! در نهایت بهم ایمیل زیر رو فرستادن:
قطعا من خودم را برای نتایج خشن و ترسناکی آماده کرده بودم و انتظار چنین برخوردی را نداشتم. ولی خب تجربهی لذتبخشی بود. مسلما شغل و دغدغهی من پیدا کردن و گزارش حفرههای امنیتی نیست، علاوه براینکه سوادش را هم ندارم. ولی مطمئنا حالا نگاه مثبی نسبت به این مسئله دارم.
میتونستن دست و دل بازتر برخورد کنن، همش ۵۰ هزار 😐
بله، خودمم انتظار بیشتر از این داشتم. ولی خب ظاهرا دنیا بر اساس انتظارات ما پیش نمیره 😐
درمورد اینکه اکثر پایگاه دادههای NoSQL به صورت پیشفرض امنسازی نشدن کاملا درست میگی. من خودم جدیدا خیلی از NodeJS استفاده میکنم، ابتدا از MongoDB استفاده میکردم و بعد رفتم سراغ RethinkDB … اما تو پروژه اخیرم، برخی از مسائل از جمله همین امنیت باعث شد که فعلا برم سراغ PostgreSQL.
در هر صورت، من همچنان RethinkDB رو هم دوست دارم. 😀
در مورد PostgreSQL خوندم ولی نسبت به RethinkDB وسوسهام کردی 🙂
دیدگاهت نسبت به در نظر گرفتن آپشنهای مختلف و محدود نکردن خودت خیلی خوبه؛ نمیدونم چرا بعضی از Developer ها بیهیچ دلیلی خودشون رو به یکی-دوتا زبان و فریمورک محدود میکنن و حتی حاضر نمیشن آپشنهای دیگه رو در نظر بگیرن.
کار کردن با تکنولوژیهای مختلف حتی بصورت جنبی (و نه برای پروژههای واقعی) حداقل دیدگاهتو بسط میده و در نهایت امر فان و سرگرمکنندهست 🙂
سلام
البته من با نظر شما در مورد تست تکنولوژی های مختلف موافقم فقط به شرطی که این پروژه ها بزارن !