خیلی طولانی بود؛ حال نداشتم بخونم: به هر کی که خودشو محقق امنیت معرفی میکنه اعتماد نکنید. قبل از لایک و ریتوییت، درستیسنجی کنید.
داستان از کجا شروع شد؟
اخیراً نتایج یک مقالهی تحقیقاتی در رسانهها و شبکههای اجتماعی مطرح شد که در یک دانشگاه ژاپنی انجام شده و حدود ۲۷ مارکت اندروید مختلف رو از جنبههای امنیتی مورد تحلیل و مقایسه قرار میده. البته مقاله جدید نیست و حدود یک سال و نیم پیش یعنی اواخر ۲۰۱۷ در مجموعه مقالات دومین ورکشاپACM SIGSOFT منتشر شده. اما گویا اخیراً در ایران بهش پرداخته شده.
نکتهای که مقاله رو برای ایرانیها جذاب کرده اینه که مارکت کافهبازار هم در این مقاله بررسی شده و رتبهی امنیتی خوبی رو، بالاتر از گوگلپلی کسب کرده. [لینک دانلود مقاله]
بعد توی توییتر یهو یه رشته توییت نظرم رو جلب میکنه:
توییتی که ظاهراً یک گروه تحقیقاتی-امنیتی منتشر کرده و گفتهی همبنیانگذار بزرگترین مارکت اندروید ایرانی رو زیر سوال میبره، قطعاً توییت خیلی جذابیه و عجیب نیست که تا حالا بیشتر از ۴۲۰ بار لایک و ۱۳۸ بار ریتوییت شده. مخصوصاً که با اسکرینشاتها و اعداد و ارقام همراه شده و اعتبار بالایی رو القا میکنه.
متن کامل رشتهتوییتها رو میتونید از اینجا ببینید.
اما چرا ادعا شده که تحلیل مدیر کافهبازار گولزننده هست و تونسته از یک مقالهی تحقیقاتی سوءاستفاده کنه؟
خوشبختانه سنجش ادعای این توییتها کار سختی نبود. با یک جستجوی ساده در سایت Google Scholar میتونید مقاله رو پیدا کنید و یک نسخهی رایگان از اون رو دانلود کنید.
من نمیخوام وارد جزئیات این مقالهی تحقیقاتی بشم. چون خیلی طولانی میشه و خودتون میتونید به متن مقالهای که در بالا لینکش رو گذاشتم مراجعه کنید.
اما خلاصهاش اینه که محققان دانشگاه واسیدا ابتدا حدود ۱۳ مارکت رو انتخاب و crawl کردن. بهعلاوه اطلاعات ۱۴ مارکت دیگه رو هم از datasetهای آمادهی AndroZoo انتخاب کردن. بعد این apkهای بهدستاومده از مارکتها رو از بعضی جنبههای امنیتی مورد تحلیل قرار دادن.
اما بررسی ادعاهای توییتها
سعی کردم درستی هر کدوم از توییتها رو چک کنم، که در ادامه نتیجهاش رو میبینید.
واقعیت:
خب هر کسی که دانش ابتدایی ریاضی داره میدونه که تعداد اپهای مارکت تاثیری در نسبت اپهای مخرب به اپهای سالم نداره. و این نسبت هست که مهمه، نه تعداد مطلق. (اگه باور ندارید میتونید از سوپرمارکت سر کوچهتون بپرسید که وام ۲۰ میلیونیِ ۴ درصدی براش جذابتره یا وام ۱۰۰ میلیونیِ ۲۵ درصدی!)
توضیحات بیشتر:
ممکنه یکی ادعا کنه که چون اپهای گوگلپلی بیشتره، پس طبیعیه که بدافزارهای بیشتری هم داشته باشه. این حرف درسته و بدیهیه. اما چیزی که برای مخاطب نهایی مهمه اینه که با چه احتمالی اپی که دانلود و نصب میکنه ممکنه بدافزار باشه.
مثلاً اگر یک مارکت ۱۰۰۰ تا اپ داشته باشه که ۵۰۰تاش مخرب هست، به احتمال ۵۰٪ هر اپ ممکنه مخرب باشه. و اگه مارکتی ۱۰۰،۰۰۰ اپ داشته باشه که ۱۰۰۰تاش مخربه، این احتمال به ۱٪ میرسه. اگرچه تعداد اپهای مخربش دو برابره، اما کاربر خیال راحتتری داره.
در مورد کافهبازار هم همینطور. اینکه تعداد اپهاش کمتره، فرق چندانی از این جهت ایجاد نمیکنه. مهم اینه که نسبت اپهای مخرب به کل اپهاش هم، از نسبت معادل در گوگلپلی کمتر بوده.
نکتهی فرعی دیگهای که باید بهش توجه کرد اینه که توسعهدهندگان بدافزار همیشه مارکتی رو برای نشر بدافزارهاشون هدف قرار میدن که بیشترین مخاطب رو داشته باشه. مثلاً یک بدافزارنویس نمیاد اپ رو توی Amazon Appstore قرار بده، چون محبوبیت Google Play خیلی بیشتره. برای بدافزارنویسهای ایرانی هم طبعاً کافهبازار مقصد شمارهی یک هست نسبت به استورهای دیگه، حتی گوگلپلی.
نکتهی دیگهای که شاید جالب باشه اینه که در زمان انجام اون تحقیق که حدود یک سال و نیم پیش بوده، ادعا شده که تعداد اپهای کافهبازار حدود ۵۰ هزار اپ هست. (یا دقیقتر، محققین موفق به crawlکردن حدود ۵۰هزار اپ از کافهبازار شدند.) همچنین اپهای گوگلپلی حدود ۳.۶ میلیون بود. یعنی اپهای گوگلپلی حدود ۷۰ برابر اپهای کافهبازار بوده. جای تعجب هم نداره، چون تقریباً تمام کشورها مخاطب گوگلپلی هستند. اما مخاطب کافهبازار فقط ایرانه.
اما در سال ۲۰۱۹ نسبت تعداد اپهای گوگلپلی به کافهبازار به حدود ۱۷برابر رسیده. علت اون از یک طرف کاهش اپهای گوگلپلی پس از تغییر سیاست گوگلپلی در قبال توسعهدهندهها و ازکارانداختن حدود یک میلیون اپ، و از طرف دیگه رشد اپهای کافهبازار به حدود دو برابر یعنی ۱۶۵هزار اپ هست.
اما قسمتهای جالبتر ماجرا.
واقعیت:
خب این نشون میده که ایشون مقاله رو اصلاً کامل نخوندن. یا اینکه نخواستن درست بخونن.
اگر به متن مقاله مراجعه کنید، اولین معیار مقایسه در بخش ۳.۱ از مقاله اینه که آیا اپهای هر مارکت قبلاً توسط انتیویروس آنلاین VirusTotal بررسی شدن یا نه. نتیجه این میشه که ۷۵٪ از اپهای کافهبازار قبلاً توسط این انتیویروس بررسی نشدند. (که با توجه به تحریمها عجیب نیست.)
اما دقیقاً در بخش بعد (۳.۲) میاد همهی اپهای اسکننشده توسط VirusTotal (که شامل بیش از ۶۰ انتیویروس تجاری میشه) رو در این سایت آپلود میکنه تا از لحاظ ایمنی بررسیشون کنه. و علیرغم این، اپهای بازار همچنان نرخ بسیار پایین بدافزارها رو کسب میکنند. محققان اینطور نتیجهگیری میکنند که معیار اولیهشون معیار مناسبی برای سنجش نبوده!
در نتیجه این حرف که «۷۵٪ از اپهای کافهبازار اصلاً پویش نشدهاند»، اساساً حرف نادرستیه. همچنین اون چیزی که در مورد روششناسی گفته شده. چون متوجه روششناسی مقاله نشدند.
توضیحات بیشتر:
مقاله ابتدا در بخش ۳.۱ توضیح میده که این معیار که «اپها قبلاً توسط انتیویروس VirusTotal بررسی شده باشن» رو به طور شهودی بر پایهی این فرض درنظر گرفته که اپها هرچه بیشتر بررسی شده باشن، احتمالاً باید امنتر باشن:
بر همین مبنا MD5 hash فایلهای apk رو در VirusTotal چک میکنه. بعد از بررسی، مشخص میشه که کافهبازار با نرخ ۷۵٪ بیشترین نرخ اپ اسکننشده توسط مجموعه انتیویروسهای VirusTotal رو داشتند، و بیان میکنه که این موضوع نشون میده که اپهای بازار بهطور بالقوه دارای آسیبپذیریهای برطرفنشده هستند:
اما در بخش بعد (۳.۲) و پس از بهدستآوردن نرخ فوق، اپهای اسکننشده رو به VirusTotal آپلود میکنه تا سلامتشون رو بررسی کنه:
که نتیجهاش این میشه که میزان بالایی از اپهای کافهبازار همچنان بدافزار نیستند. یا اینکه حداقل توسط انتیویروسهای مربوطه [به اشتباه] بدافزار تشخیص داده نشدن. که خیلی ادعای منطقیایه، اما افرادی به هر دلیلی، روی بخش آخر این جمله تمرکز میکنن!
یعنی در نهایت بعد از دیدن نرخ کمِ بدافزارها در کافهبازار (علیرغم ۷۵٪ اپ اسکننشده)، نتیجهگیری کرده که فرضشون در بخش ۳.۱ اشتباه بوده.
همچنین معنیش اینه که باید به تیم تخصصی app review در کافهبازار دستمریزاد گفت و نشوندهندهی اینه که عزم کافهبازار برای حذف اپهای مخرب جدی هست.
واقعیت:
طبق مطالبی که در بالا گفتم، جملهی دوم یعنی «ما میدانیم که اگر اپی در این سامانهها وجود نداشته باشد به معنی امن بودن یا حتی به معنی استعداد امنیت آن اپ نیست» حرف بیپایهایه. چون محققین تمامی اپها رو در VirusTotal چک کردند.
همچنین، اینکه ملاک بدافزاربودن اپ در این مقاله تشخیص توسط ۱۰ بررسیکننده (از بین ۶۰ انتیویروس) درنظر گرفته شده، تصمیم محققین بوده و در مقاله بیان کردند که میخواستند محافظهکار باشن.
اما مسئله اینجاست که دقیقاً همین ملاک برای سنجش سایر مارکتها هم بهکار رفته. از نتایج هم صرفاً برای مقایسهی نسبی مارکتها استفاده شده، نه برای فهمیدن تعداد دقیق بدافزارها در هر مارکت.
توییت ۶/۸ و ۷/۸:
خب اینجا هم توییتکنندگان یا مقاله رو درست نخوندن، یا به هر دلیل دارن منظور مقاله رو برعکس جلوه میدن.
واقعیت:
مقاله در بخش ۴ به بررسی multi-released apps میپردازه، یعنی اپهایی که همزمان در چند مارکت ریلیز شدند.
وقتی در جملهی بالا بیان میکنه که تحلیل در سطح کد انجام نشده، منظور تحلیل اپها از منظر multi-releasedبودن هست. چون از جنبهی بدافزاربودن، اپها در بخش ۳ توسط انتیویروسها مورد بررسی کامل قرار گرفتند و اینجا صرفاً از یک جنبهی جدید بررسی میشن.
در مورد ادعای «امکان دستکاری اینستاگرام (یا هر اپ دیگهای) و انتشار مجددش در مارکت»، اگر از هر برنامهنویس اندروید بپرسید به شما میگه که ادعای مضحکی هست. توضیحات فنی بیشترش رو در زیر آوردم.
توضیحات بیشتر:
مقاله در بخش ۴، اپهای ریلیزشده روی چند مارکت (multi-released apps) رو بررسی میکنه. بعضیهاشون رو خود توسعهدهنده چندجا ریلیز کرده و بعضیها رو تولیدکنندگان بدافزار با نیت شوم repackage کردند. و گفته که چون تفکیک این دو نوع سخته، ما مستقیماً تفکیکشون نمیکنیم، بلکه از جنبههای مختلفی مثل بدافزاربودن، استفاده از License Verification Library (LVL)i، و امضای دیجیتال بررسی میکنیم.
بعد میگه که بررسی اینها یا میتونه از طریق اسم بسته (package name) باشه، یا بهصورت باینری (APK MD5 hash). و اشاره میکنن که هر کدوم مزایا و معایب خودش رو داره، اما استفاده از هر دو روش نقاط ضعف همدیگه رو کم میکنه.
به طور خلاصه؛
در بخش ۴.۱ به کشف اپهای multi-released بر مبنای هر دو روش (نام بسته و MD5) میپردازن.
در بخش ۴.۲، یک heat-map از اپهای multi-released روی ماکتها بر مبنای اسم بسته به دست میارن.
یک نکتهی جالب در مورد کافهبازار اینه که نرخ اپهای مشترک بین کافهبازار و گوگلپلی پایین بوده:
در بخش ۴.۳ به بررسی نرخ بدافزارهای multi-released بر مبنای MD5 میپردازن. یعنی اپهایی که روی چند مارکت (حتی روی گوگلپلی)، یکسان و در عین حال بدافزار هستند. نه اپهای نرمالی که بعداً به صورت بدافزار repackage شدن.
در بخش ۴.۴ به بررسی اپهای پولی که به صورت رایگان در جای دیگه منتشر شدن میپردازه، و همچنین نرخ استفاده از تکنیک LVL در اپها رو بررسی میکنه.
بخش ۵.۴ که بخش مهمیه، به بررسی certificate یا امضای دیجیتالی اپهای multi-released میپردازه. با این دیدگاه که اپهایی که اسم بستهی یکسان اما امضای متفاوت دارن، احتمالاً توسط افراد نامناسب repackage شدن و احتمالاً مشکلدار هستن. (اگرچه ممکنه خود توسعهدهنده اینکار رو به دلایل فنی یا به اشتباه کرده باشه، اما در مجموع احتمالش کمه.)
همچنین اپهایی که اسم بستهشون عوض شده، در بررسی امضای دیجیتال از قلم میافتن.
در این بخش متوجه شدن که (بدیهتاً) اپهای multi-released با امضای متفاوت، نرخ بدافزار بالاتری دارن.
توضیح در مورد امضای دیجیتال در اپها (و ادعای امکان دستکاری اینستاگرام)
برای اونهایی که آشنایی ندارن، سعی میکنم خیلی ساده توضیح بدم. امضای دیجیتال اپها به این صورته که هر توسعهدهندهی اپ یک certificate خاص خودش رو میسازه و اپهاشو با کلید اون certificate امضا میکنه. بهطوری که همهی نسخههای یک اپ، با یک کلید یکسان امضا میشن.
حالا اگه یک شخص خارجی، اپ یک توسعهدهندهی دیگه مثل اینستاگرام رو برداره و تغییرش بده (فرضاً بهش ویروس اضافه کنه یا هر تغییر دیگهای)، دیگه نمیتونه اپ رو با همون کلید امضا کنه. چون به کلید توسعهدهنده دسترسی نداره.
تاثیر این موضوع در اینه که اگه شما یک نسخهی اصلی از اپ (مثلاً اینستاگرام یا هر اپ دیگهای) رو روی گوشی داشته باشید، و بعد از طریق یک کانال یا مارکت غیرمعتبر، یک نسخهی دستکاریشده از اون اپ رو دریافت کنید و بخواهید نصب کنید، سیستمعامل اندروید اجازهی این کار رو نمیده، چون کلیدها متفاوت هست. تنها راه نصب نسخهی دستکاریشده، حذف اپ قبلی و نصب نسخهی جعلی هست. پس با دیدن این ارور، بدون دلیل اپ قبلی رو حذف نکنید!
پس اگر یک نسخه از اپی رو داشته باشید و یک apk بهروزتر از اون اپ رو از یک کانال دیگه دریافت کرده باشید و اندروید هم اجازهی بهروزرسانی به شما بده، معنیش اینه که امضاهای اونها با هم سازگار هست، و معنی اونهم اینه که این دو apk توسط یک توسعهدهنده package شدند.
در نتیجه این ادعا که «اینستاگرام ممکنه دستکاری و در یک مارکت منتشر شده باشه» از پایه ادعای بیمعنیای هست. چون هر مارکت کوچکی هم اگر اینکار رو بکنه، خیلی زود آشکار میشه و برای مارکت رسوایی بهبار میاره. چه برسه به مارکت ۴۰ میلیونی کافهبازار. بماند که در پژوهش فوق اگر اپی مثل اینستاگرام دستکاری شده بود، [قاعدتاً] توسط انتیویروسهای VirusTotal باید تشخیص داده میشد.
سوالی که به ذهن میرسه اینه که منتشرکنندهی این توییت آیا با این تکنیک ابتدایی برنامهنویسی در اندروید آشنا نیست؟
برگردیم به بخش دوم توییت ۷ و نیز توییت ۸:
واقعیت:
مشکلِ تشخیص بدافزارهای ایرانی (یا بهطور کل غیرانگلیسیزبان) در همهی مارکتها وجود داره. منظور بدافزارهاییه که بهطور سیستمی قابلتشخیص نیستن. در نتیجه یا باید بهطور انسانی بررسی بشن و یا از طریق گزارشات متوجهشون بشیم. اتفاقاً کافهبازار به خاطر داشتن تیم بررسی فارسیزبان بهترین گزینه برای تشخیص این نوع بدافزارهاست!
در مورد شفافیت سازوکار بررسی اپها در کافهبازار، قوانین اینجا شرح داده شده:
http://developers.cafebazaar.ir/fa/app-publish-guidelines/
توضیحات بیشتر:
این نکتهی جالبیه. بله، خیلی از انتیویروسها و انجینهای آنلاین طبیعتاً قادر به تشخیص بدافزارهایی نیستند که مخاطب فارسیزبان رو فریب میدن. و این مشکل توی گوگلپلی هم وجود داره.
خودم این تجربه رو داشتم که اپهایی رو از روی گوگلپلی نصب کنم که بهطور واضح کلاهبردار بودن. مثلاً یکی برای کاری که انجام نمیداد درخواست پرداخت آنلاین میکرد، و دومی بهجای انجام کاری که در توضیحاتش اومده بود، صرفاً تبلیغات نشون میداد و کاربر رو به سمت اپ دیگهای هدایت میکرد.
حدسم این بود که گوگلپلی به غیر از نرمافزارهای تشخیص اتوماتیک بدافزار، تستر فارسیزبان برای بررسی برنامهها نداره. (یا اگر داره، دقت کافی برای بررسی اون تعداد اپ رو به خرج نمیدن، و به نظرات و شکایات کاربران بسنده میکنن.)
یک مزیت کافهبازار اینه که (با وجود تحریمهای ایران برای استفاده از سرویسهای انتیویروس تجاری خارجی) تیم و ابزارهایی نظیر Lookout و غیره برای بررسی اپها داره که اپها رو نه فقط از جنبههای تخلف (مثل فیشینگ و کلاهبرداری)، بلکه از سایر جنبههای کارایی و کاربردپذیری بررسی میکنن.
منظور این نیست که کافهبازار حتماً از این لحاظ از گوگلپلی بهتره و اصلاً اپ فیشینگ نداره. فرایند بررسی نمیتونه با قطعیت همهی اپهای مشکلدار رو تشخیص بده. اما اگه قرار باشه روی «عدم تشخیص بدافزارهای ایرانی توسط انجینها» بحث کنیم، طبعاً کافهبازار مارکت معقولتری برای مقابله با این نوع اپها هست.
در مورد شفافیت در سازوکار این بررسیها، روند کافهبازار مدتهاست که مستند شده. اگه با توسعهدهندههای اندروید سروکار داشته باشید، حتماً از سختگیریهای کافهبازار برای انتشار اپ (و بعضاً انتقادهای منصفانه یا غیرمنصفانهشون) شنیدهاید.
اگر منظور توییت از شفافیت اینه که روال دقیق بررسی اپ به همراه جزئیات و ابزارهای تست اعلام بشه، طبعاً این اتفاق نه تنها در کافهبازار، بلکه در گوگلپلی هم نمیفته. چون باعث میشه که بدافزارنویسها بهروز بشن و بتونن از تکنیکهای جدید برای دورزدنشون استفاده کنن. گوگلپلی هم به مستندکردن روال کلی و معیارهای پذیرش اپ بسنده کرده.
همچنین بدافزارهای پیچیدهتر که در زمان بررسی و انتشار، رفتار نرمالی دارند، اما بعد از کسب نصبهای زیاد، تغییر رفتار میدن، نه تنها از مارکت کافهبازار حذف میشن، بلکه به همراه توسعهدهندگانشون در لیست سیاهی قرار میگیرن تا درخواست حذفشون از روی گوشی از طریق نوتیفیکیشن یا از داخل اپ بازار به کاربر اعلام بشه. تا به حال صدها مورد اپ متخلف معرفی شده، که نشوندهندهی تلاش مستمر این مجموعه برای سالمنگهداشتن این مارکت هست.
نکات بالا، به همراه تحقیقاتی شبیه به این، به نظر من ملاک دقیقتری برای قضاوت یک مارکت هستند، در مقایسه با احساسات سلیقهای افراد نسبت به اپهای خاص. اگر فکر میکنید که اپی متخلف هست، ابتدا مطمئن بشید. بعد اون رو از طریق اپ بازار گزارش کنید تا بررسی دقیق روش انجام بشه. اگر رسیدگی نشد، اونوقت از مجراهای دیگه موضوع رو پیگیری کنید.
مثلاً در بخش ۵ از همین مقاله به شاخصگذاری امنیتی مارکتها بر مبنای معیارهای مختلف پرداخته شده. در نمودار زیر رابطهی بین شاخص امنیت و رنک الکسای مارکتها رو میبینید:
و اما در مورد ورکشاپ ACM
دوست دارم این اهل فنی که از نظرشون این ورکشاپ ACM SIGSOFT از سطح کیفی بالایی برخوردار نیست، معرفی بشن.
اما طبعاً این تحقیق کامل و بدون نقص نیست و نویسندگانش (که از آزمایشگاه امنیت دانشکدهی مهندسی ارتباطات، زیرمجموعهی دانشگاه Wasedaی ژاپن هستند) هم چنین ادعایی نکردند. اگر با کارهای تحقیقاتی آشنا باشید، میدونید که مقالههای اینچنینی نقطهی شروع برای تحقیقات بعدی و بزرگتر و جامعتر هستند. از طرفی کار تحقیقاتی مشابه که به بررسی اپاستورها پرداخته باشه خیلی کم هست.
جمعبندی:
به هر ادعایی که در شبکههای اجتماعی (از جمله در همین نوشته) میشه اعتماد نکنید و درستیسنجی کنید.
متوجه اثر حرفهایی که منتشر میکنیم باشیم. آیا دانش کافی در اون زمینه داریم؟ آیا بدون ملاحظه هر حرفی رو منتشر یا بازنشر میکنیم؟ نقدمون منصفانهست؟ آسیبی که به یک برند وارد میشه به حقه یا به ناحق؟ مسئولیتش رو میپذیریم؟