آسیب پذیری Janus با شماره مرجع (CVE-2017-13156) یک نقص جدید کشف شده در برنامههای اندرویدی میباشد که قادر است کد برنامههای اندرویدی را بدون هیچ تغییری در signature شان تغییر دهد.
این نقص موجب تغییر کد در برنامههای مورد اطمینان اندروید میشود و قادر است کد مخرب را در برنامه نصب کرده و سپس anti-malware را کنار بزند.
ریشه اصلی این مشکل از جایی شروع میشود که یک فایل میتواند به طور همزمان هم یک فایل معتبر APK باشد و هم یک فایل معتبر DEX. آسیب پذیری Janus به اتکر اجازه میدهد تا بایتهای اضافی را به فایلهای APK و DEX اضافه کند. فایل APK یک zip archive است که میتواند شامل بایتهای دلخواه در ابتدا باشد.
در مورد آسیب پذیری Janus،ا JAR signature فقط ورودیهای zip را بررسی میکند و هنگام محاسبه یا تایید signature برنامهها بایتهای اضافی را محاسبه نخواهد کرد. قسمت دیگر پکیجهای Zip فایلهای DEX میباشد که میتواند شامل بایتهای دلخواه در انتها بعد از بخشهای string ،class و تعاریف متدها شود.
به طور اساسی زمان نصب Android فایل APK بارگذاری میشود سپس فایل DEX را پیدا و استخراج کرده و کد را اجرا میکند. اتکر یک فایل DEX آلوده در یک فایل APK ایجاد کرده و بدون تاثیر گذاشتن روی signatureها کد را با فایل DEX تزریق میکند.
اگرچه برنامههای اندرویدی، به صورت خودکار دارای امضا هستند، اما در نهایت بهروزرسانی برنامهها، با تاییدیه امضا میسر میباشد. هنگامی که یک کاربر، برنامهای را بهروزرسانی مینماید، اندروید این امضا را با امضای قبلی مقایسه میکند. بنابراین اتکرها میتوانند با استفاده از آسیب پذیری Janus برای گمراه کردن فرایند بهروزرسانی و همچنین دریافت کد تایید نشده اقدام نمایند.