یک هک هوشمندانه از طریق حافظه خارجی

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

اوریل گان میگوید: این موضوع بستری برای حملههای هکری فراهم میسازد که تا به امروز کسی به آن توجهی نکرده است و مطلبی هم در این باره نوشته نشده است. از این رو توسعه دهندهها باید به شیوه استفاده از حافظه خارجی توجه کافی داشته باشند. او همچنین به این نکته اشاره میکند که بیشتر برنامههایی که چک پوینت (Check Point) بررسی کرده است واجد شرایط این سبک از حملهها هستند.

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

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

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

گان میگوید: این برنامه ها قادر به جایگزینی اطلاعات هستند و میتوانند محتوای ثبت شده روی حافظه خارجی را طوری دستکاری کنند که به برنامههای ذخیره شده در حافظه دست پیدا کنند.

توسعه دهندهها باید همیشه هنگام استفاده از حافظه خارجی دقت کافی داشته باشند

گوگل راهنماییهایی را به توسعه دهندگان پیشنهاد میدهد و آنها را ترغیب میکند که کدهای حساس را روی حافظه خارجی قرار ندهند. اما نه تنها بسیاری از برنامه‎‌ها از این دستورالعملها استفاده نمیکنند بلکه خود گوگل هم در چنین مسالهای ایمن نیست. تحقیقات انجام شده نشان میدهد که فایلهایی که از برنامه مترجم گوگل یا همان google translate در حافظه خارجی ذخیره میشوند می توانند بر روی تعدادی از برنامهها تاثیر داشته باشند. در حال حاضر گوگل در حال بررسی این قضیه است و سعی میکند توضیح دهد مشکل از کجاست.

گان می گوید: Google Translate در دستگاه من به دوربین دسترسی دارد و من اگر بتوانم کد آن را بشکنم و کد خودم را وارد کنم، کد نوشته شده توسط من نسبت به برنامه Google Translate ارجحیت پیدا میکند و به این صورت به دوربین من دسترسی پیدا خواهد کرد. این درحالیست که من هیچ اجازهای به این برنامه ندادهام.

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

در آخرحملات MITD یا همان  man-in-the-disk نشان میدهد که چگونه ساختار سیستمی میتواند نتایج ناخواستهای پدیدآورد. دلیل وجود حافظه خارجی برمیگردد به دورانی که فضای کافی در دستگاه وجود نداشت و از کارت SD برای جبران این قضیه استفاده میشد. این روزها وقتی توسعه دهندهها به صورت غیر منطقی از حافظه خارجی استفاده میکنند، راه را برای نفوذ حملههای احتمالی بازمیگذارند. این قضیه به این راحتیها حل نمیشود مگر اینکه گوگل سازوکاری فراهم کند که کنترل ذخیرهسازی در دستگاه اندرویدی به شکل دیگری عمل کند. البته این قضیه هم بیشک موجب تداخلهایی در کارکرد دستگاه اندرویدیتان میشود.

گان میگوید: این کار دور از ذهنیست که از هر توسعهدهندهای انتظار داشته باشید که امنیت برنامهای که توسعه میدهد را رعایت کند، دستورالعملهای خوبی وجود دارند. توسعهدهندهها هم همینطور. اما این دو همیشه دست در دست هم حرکت نمیکنند.