پشتپرده بکدور اپلیکیشن دیوار؛ کد مشکوک چگونه وارد نسخه رسمی شد؟
کشف کدی با قابلیتهای بکدورگونه در نسخه رسمی اپلیکیشن اندروید دیوار، این اپلیکیشن را در کانون یک بررسی امنیتی قرار داده است. دیوار پس از شناسایی این مشکل، از کاربران خواست اپلیکیشن خود را بهروزرسانی کنند.
بررسی فایلهای APK اپلیکیشن اندروید دیوار از وجود کدی با قابلیتهای بکدورگونه در نسخههای رسمی این اپلیکیشن حکایت دارد؛ نسخههایی که کاربران از مسیر رسمی دیوار دریافت و نصب یا بهروزرسانی کردهاند. تحلیلهای فنی نشان میدهد این کد میتوانسته با دریافت یک پوش مخصوص فعال شود و از یک سرور، دستور دریافت کند. با این حال، هنوز مشخص نیست این کد چگونه وارد فرایند تولید و انتشار دیوار شده و آیا در عمل از آن برای حمله به کاربران استفاده شده است یا خیر.
هفته گذشته پلتفرم دیوار پس از شناسایی یک آسیبپذیری امنیتی در برخی نسخههای اندروید، نسخههای تحت تأثیر را غیرفعال و از کاربران خواست اپلیکیشن خود را به نسخه ۱۱.۱۵.۰ یا بالاتر بهروزرسانی کنند. این شرکت علاوه بر اطلاعرسانی عمومی، برای برخی کاربران پیامک هشدار ارسال کرد و تأکید داشت نسخه جدید فقط از منابع رسمی دریافت شود.
بکدور در اپلیکیشن رسمی دیوار؛ کد مشکوک چگونه وارد APK شد؟
ماجرای کشف یک کد مشکوک در اپلیکیشن اندروید دیوار، پرسشهای مهمی درباره امنیت زنجیره تولید، ساخت و انتشار این اپلیکیشن مطرح کرده است. بر اساس بررسیهایی که روی فایلهای باینری APK انجام شده، کد مورد بحث در نسخههایی از اپلیکیشن وجود داشته که از مسیر رسمی دیوار منتشر شدهاند و کاربران نیز آن را از طریق نصب یا بهروزرسانی رسمی دریافت کردهاند.
این موضوع باعث میشود سناریوی نصب یک نسخه جعلی از دیوار، دستکم بر اساس شواهد فعلی، کنار گذاشته شود و تمرکز بررسیها به مسیر تولید و انتشار خود اپلیکیشن منتقل شود.
کد مشکوک چگونه به اپلیکیشن دیوار رسید؟
یکی از مهمترین پرسشها در این ماجرا این است که کد مورد بحث در چه مرحلهای وارد اپلیکیشن شده است. در حال حاضر چند سناریو مطرح است و شواهد موجود هنوز امکان تعیین قطعی یکی از آنها را فراهم نمیکند. یک احتمال این است که کد از داخل مجموعه دیوار و توسط فردی که به محیط توسعه یا تولید نرمافزار دسترسی داشته، به اپلیکیشن اضافه شده باشد. البته چنین احتمالی به معنای تصمیم یا اقدام سازمانی دیوار نیست و میتواند ناشی از اقدام یک فرد، باقیماندن یک قابلیت داخلی یا ورود کدی باشد که نباید به نسخه نهایی راه پیدا میکرد.
سناریوی دیگر، دسترسی یک فرد بیرونی به بخشی از زیرساخت توسعه یا انتشار دیوار است. این دسترسی میتواند، برای مثال، از طریق سرقت اطلاعات ورود یا دسترسی به حسابهای توسعهدهندگان، سیستمهای کاری یا مخزن کد اتفاق افتاده باشد. بنابراین وجود کد مشکوک در نسخه رسمی اپلیکیشن را میتوان یک یافته فنی دانست، اما درباره هویت فرد یا گروهی که آن را وارد برنامه کرده، هنوز نمیتوان با قطعیت اظهار نظر کرد.
سه مسیر احتمالی برای ورود کد به APK
از نظر فنی، ورود چنین کدی به اپلیکیشن میتواند از چند مسیر انجام شده باشد. یکی از سادهترین حالتها، تغییر مستقیم کد منبع برنامه است؛ یعنی کد مشکوک در همان مرحله توسعه به پروژه اضافه شده باشد.
مسیر دیگر، دستکاری فرایند ساخت یا Build است. در این حالت ممکن است کد از طریق ابزارهای مورد استفاده در فرایند ساخت، وابستگیهای نرمافزاری یا سایر اجزای زنجیره تولید وارد نسخه نهایی شده باشد.
احتمال سوم به مرحله انتشار مربوط میشود؛ یعنی فایل ساختهشده در مسیر انتشار دستکاری شده باشد. در چنین سناریویی، اگر APK نهایی با امضای معتبر دیوار منتشر شده باشد، موضوع دسترسی به زیرساخت یا سرویس امضای اپلیکیشن و کلیدهای مرتبط با آن نیز اهمیت پیدا میکند.
نکته مهم این است که صرف دسترسی به وبسایت دیوار برای ساخت یک نسخه دارای امضای معتبر کافی نیست و برای بررسی چنین سناریویی باید زنجیره ساخت و امضای اپلیکیشن نیز بررسی شود.
بکدور اپلیکیشن دیوار چگونه فعال میشود؟
بر اساس تحلیل مطرحشده از فایل APK، کد مورد بحث یک مسیر فعالسازی مشخص دارد. این مسیر با دریافت یک پوش مخصوص میتواند فعال شود و اپلیکیشن پس از پردازش محتوای پیام، یک آدرس کدگذاریشده را استخراج میکند.
در ادامه، برنامه میتواند از این آدرس دستور دریافت کند. پاسخ سرور نیز در شرایط مشخص میتواند باعث نوشتن فایل و فراخوانی متدی شود که امکان اجرای دستور را فراهم میکند.
این بخش از تحلیل اهمیت زیادی دارد، زیرا نشان میدهد موضوع وجود چند خط کد بدون کاربرد مشخص نیست و برای آن یک مسیر ارتباطی و فعالسازی در نظر گرفته شده است.
با این حال، این قابلیت به خودی خود به معنای دسترسی کامل مهاجم به گوشی نیست. اجرای این مسیر در محدوده دسترسیهای خود اپلیکیشن انجام میشود و شواهد مطرحشده نیز روتشدن دستگاه یا در اختیار گرفتن کامل سیستمعامل را اثبات نمیکند.
آیا هر کاربر دیوار در معرض حمله بوده است؟
یکی از نکات مهم این بررسی، تفاوت میان «وجود بکدور در اپلیکیشن» و «امکان فعالکردن آن توسط هر فرد» است.
بر اساس تحلیل موجود، صرف داشتن یک حساب معمولی دیوار یا ارسال یک لینک برای کاربر، برای فعالکردن این مسیر کافی نیست. عامل حمله باید بتواند پوشی با محتوای موردنظر را به اپلیکیشن برساند.
به همین دلیل، دسترسی به کد یا محیط توسعه و دسترسی به زیرساخت ارسال پوش را باید دو موضوع جداگانه در نظر گرفت. حتی این احتمال نیز وجود دارد که این دو دسترسی در اختیار افراد متفاوتی بوده باشد.
آیا دیوار هک شده است؟
یافتههای موجود هنوز مشخص نمیکنند کد دقیقا از چه مسیری وارد اپلیکیشن شده است. آنچه فعلاً میتوان گفت این است که کدی با قابلیتهای بکدورگونه در نسخه رسمی اپلیکیشن شناسایی شده و این نسخه از مسیر رسمی در اختیار کاربران قرار گرفته است اما اینکه آیا مهاجم به زیرساخت دیوار نفوذ کرده، یک فرد داخلی کد را اضافه کرده یا فرایند ساخت و انتشار دستکاری شده، همچنان نیازمند بررسی بیشتر است.
وجود یک بکدور در APK تنها بخشی از ماجراست. پرسش مهمتر این است که آیا این قابلیت واقعا فعال شده و مورد سواستفاده قرار گرفته است یا خیر.
برای پاسخ به این پرسش باید مشخص شود آیا پوش فعالکننده واقعا ارسال شده است، این پیام برای چه کاربرانی فرستاده شده و در چه زمانی ارسال شده است. همچنین بررسی سرورهای مرتبط میتواند مشخص کند چه دستورهایی از طریق این مسیر ارسال شده و آیا در دستگاه کاربران فایلی نوشته یا دستوری اجرا شده است یا خیر.
در صورت اثبات استفاده عملی از این مسیر، دامنه و آثار حادثه نیز باید بهصورت جداگانه بررسی شود.
چرا انتشار یک آپدیت امنیتی بهتنهایی کافی نیست؟
انتشار نسخه اصلاحی میتواند مسیر اجرای کد مشکوک را مسدود کند اما برای حل ریشهای چنین حادثهای کافی نیست. اگر منشأ ورود کد به اپلیکیشن مشخص نشود، همان مسیر ممکن است دوباره مورد سواستفاده قرار گیرد. به همین دلیل، بررسی محیطهای توسعه و سیستمهای Build، مخازن کد، ابزارها و وابستگیهای مورد استفاده در فرایند تولید، زیرساخت انتشار و سرویسهای امضای اپلیکیشن اهمیت زیادی دارد.
در صورتی که مشخص شود حسابهای کاربری یا اطلاعات دسترسی توسعهدهندگان به سرقت رفته است، باید دسترسیهای موردنظر مسدود و اعتبارنامهها و کلیدهای مرتبط نیز تعویض شوند. از سوی دیگر، بررسی لاگها و زیرساختهای ارتباطی برای مشخصکردن اینکه آیا بکدور واقعاً مورد استفاده قرار گرفته است یا خیر، بخش مهم دیگری از فرایند پاسخ به این حادثه خواهد بود.
ماجرای بکدور دیوار چه چیزی را نشان میدهد؟
این حادثه بار دیگر اهمیت امنیت زنجیره تأمین نرمافزار را نشان میدهد. امنیت یک اپلیکیشن به کد نهایی آن محدود نمیشود و محیط توسعه، حسابهای توسعهدهندگان، مخازن کد، وابستگیها، فرایند Build، سیستم امضا و حتی مسیر انتشار نیز بخشی از سطح حمله محسوب میشوند.
در ماجرای اپلیکیشن دیوار، شواهد موجود نشان میدهد کد مورد بحث در نسخه رسمی اپلیکیشن به کاربران رسیده است اما پاسخ به پرسش اصلی، یعنی اینکه چه کسی، از چه مسیری و با چه سطحی از دسترسی این کد را وارد برنامه کرده است، هنوز نیازمند بررسی بیشتر است.
همچنین مشخصشدن اینکه آیا این مسیر در عمل برای اجرای حمله علیه کاربران مورد استفاده قرار گرفته یا در اپلیکیشن وجود داشته، یکی از مهمترین بخشهای تحقیقات بعدی خواهد بود.