Janus

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

این آسیب‌پذیری که Janus نامیده شده است به مهاجمان اجازه می‌دهد تا کد برنامه‌های اندروید را بدون تأثیر بر روی گواهی تأیید امضای خود تغییر دهند، که درنهایت به آن‌ها اجازه می‌دهد تا به‌روزرسانی‌های مخرب را برای برنامه‌های قانونی که به‌ظاهر مشابه برنامه‌های اصلی کار می‌کنند را گسترش دهند.

این آسیب‌پذیری (CVE-2017-13156) در تابستان سال ۲۰۱۷ توسط محققان امنیتی شرکت امنیت موبایل GuardSquare کشف[۱] و به گوگل گزارش شد. این آسیب‌پذیری به همراه ده‌ها آسیب‌پذیری دیگر توسط گوگل در بولتن امنیتی اندرویدِ ماه دسامبر ۲۰۱۷ وصله شد[۲].

این آسیب‌پذیری بر روی برنامه‌هایی که از طرح امضای APK نسخه ۱ استفاده می‌کنند و بر روی دستگاه‌هایی که دارای اندروید نسخه‌های ۵ (Lollipop) و ۶ (Marshmallow) هستند، تأثیر می‌گذارد.

آسیب‌پذیری Janus چگونه کار می‌کند؟

APK

این آسیب‌پذیری در روشی قرار دارد که اندروید فرآیند نصب APK را برای بعضی از برنامه‌ها مدیریت می‌کند، و امکان اضافه کردن بایت‌های اضافی از کد را به یک فایل APK بدون تأثیر بر امضای برنامه می‌دهد.

قبل از ادامه، شما باید برخی از اصول اولیه درباره فایل APK را بدانید.

یک فایل APK معتبر یک نوع فایل آرشیو است، درست مانند Zip، که شامل کد برنامه، منابع، دارایی‌ها، امضا‌ها، گواهینامه‌ها و فایل‌های manifest  می‌باشد.

نسخه‌هایِ پیشینِ سیستم‌عامل اندروید از یک ماشین مجازی فرآیند پشتیبانی می‌کنند که به اجرای آرشیوهای APK حاوی یک نسخه کامپایل شده از کد برنامه و فایل‌های فشرده‌شده با فرمت DEX کمک می‌کند[۳].

هنگامی‌که یک برنامه تحت اندروید یا به‌روزرسانی آن نصب شود، دستگاه شما اطلاعات سرآیند APK را بررسی می‌کند تا مشخص کند آیا آرشیو حاوی کدی در فایل‌های DEX فشرده‌شده هست یا نه.

اگر header می‌گوید آرشیو APK حاوی فایل‌های DEX است، ماشین مجازی فرآیند، کد را بر این اساس تفکیک کرده و آن را اجرا می‌کند؛ در غیر این صورت، کد را به‌عنوان یک فایل APK معمولی اجرا می‌کند.

به نظر می‌رسد که آرشیو APK می‌تواند هم‌زمان فایل‌های DEX و همچنین کد برنامه را شامل شود بدون آنکه بر روی اعتبار و یا امضای آن تأثیری بگذارد.

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

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

سناریوی حمله

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

به گفته محققان، ممکن است برخی کاربران به‌راحتی فریب داده شوند، زیرا برنامه تولیدشده دقیقاً مانند برنامه اصلی به نظر می‌رسد و دارای امضای مناسب می‌باشد.

البته حمله مردی در میان جالب‌تر است، چراکه به مهاجمان اجازه می‌دهد تا فایل نصب مخرب طراحی‌شده برای یک برنامه را طوری تنظیم کنند تا به‌روزرسانی‌های موردنظر را از طریق یک ارتباط HTTP رمز نشده دریافت کنند.

GuardSquare دراین‌باره این‌گونه توضیح می‌دهد: “هنگامی‌که کاربر یک به‌روزرسانی برنامه را دریافت می‌کند، runtime اندروید امضای برنامه موردنظر را با امضای نسخه اصلی مقایسه می‌کند. اگر امضاها مطابقت داشته باشند، runtime اندروید برای نصب به‌روزرسانی اقدام می‌کند.”

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

ازآنجاکه این آسیب‌پذیری بر روی نسخه ۷ یا Nougat و آخرین نسخه اندروید که از طرح امضای APK نسخه ۲ پشتیبانی می‌کند، تأثیرگذار نیست، به کاربرانی که دارای نسخه‌های سیستم‌عامل اندروید قدیمی هستند شدیداً توصیه می‌شود تا سیستم‌عامل خود را به‌روزرسانی کنند.

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

محققان همچنین به برنامه‌نویسان اندروید توصیه می‌کنند تا از طرح امضای نسخه ۲ استفاده کنند تا اطمینان حاصل شود که برنامه‌های آن‌ها تحت تأثیر این مشکل قرار ندارد.

منابع

[۱]https://www.guardsquare.com/en/blog/new-android-vulnerability-allows-attackers-modify-apps-without-affecting-their-signatures

[۲] https://source.android.com/security/bulletin/2017-12-01

[۳] https://en.wikipedia.org/wiki/Dalvik_(software)

[۴] https://thehackernews.com/2017/12/android-malware-signature.html