بدون اجازه، بدون صدا؛ حمله‌ای که امنیت گوشی‌تان را تهدید می‌کند

سارقان با حمله Pixnapping ، بدون نیاز به اجازه خاصی در کمتر از ۳۰ ثانیه اطلاعات حساسی مثل کدهای تائید دومرحله‌ای را می‌ربایند.

کد خبر: ۷۱۵۶۳۲

تاریخ: ۲۴ مهر ۱۴۰۴ - ۱۷:۲۳

به گزارش صراط به نقل از خبرانلاین، این روزها حمله جدیدی گجت‌های اندرویدی را تهدید می‌کند که این قابلیت را دارد که در کمتر از ۳۰ ثانیه، کدهای تأیید دومرحله‌ای (۲FA)، موقعیت زمانی مکانی و دیگر داده‌های خصوصی افراد را به‌صورت کاملا مخفیانه‌ای سرقت کند.

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

طبق گفته محققان، Pixnapping روی گوشی‌های گوگل پیکسل و سامسونگ گلکسی S۲۵ اجرا شده و این احتمال وجود دارد که در آینده نزدیک به سراغ مدل‌های دیگر هم برود. در ماه گذشته میلادی گوگل در بروز رسانی‌اش، تلاش‌هایی برای حل این مشکل انجام داد، اما به گفته پژوهشگران نسخه اصلاح‌شده این حمله حتی با نصب آن به‌روزرسانی‌ها نیز کار می‌کند.

شبیه گرفتن اسکرین‌شات، اما دقیق‌تر

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

گروهی از محققان در اطلاع‌رسانی بیشتر دراین‌باره نوشتند: «هر چیزی که با باز کردن اپلیکیشن هدف، قابل‌رویت است، می‌تواند توسط اپلیکیشن مخرب و از طریق Pixnapping دزدیده شود؛ پیام‌های چت، کدهای تائید دومرحله‌ای (۲FA)، پیام‌های ایمیل و غیره ازآنجاکه قابل‌مشاهده هستند، همگی در معرض خطر قرار دارند؛ اگر اپلیکیشن، اطلاعات محرمانه‌ای داشته باشد که هرگز روی صفحه نشان داده نشود (مثلاً یک کلید مخفی که تنها ذخیره می‌شود)، آن اطلاعات توسط Pixnapping قابل سرقت نخواهد بود.»

این نوع حمله جدید، به‌نوعی یادآور حملات GPU.zip است که در سال ۲۰۲۳ میلادی این امکان را برای وب‌سایت‌های مخرب فراهم می‌کرد تا نام کاربری، رمز عبور و سایر داده‌های تصویری حساس نمایش داده شده توسط دیگر وب‌سایت‌ها را بخوانند. حمله GPU.zip با بهره‌جویی از کانال‌های جانبی، در پردازنده‌های گرافیکی (GPU) همه سازندگان عمده کار می‌کرد. گرچه نقاط ضعف و آسیب‌پذیری که GPU.zip از آن‌ها استفاده می‌کرد، هرگز به‌صورت کلی رفع نشدند ولی مرورگرها توانِ اجرای iframe ها را محدود کردند تا این نوع حملات مسدود شوند. (iframe عنصری در HTML است که به یک وب‌سایت اجازه می‌دهد تا محتوای سایت دیگری را در صفحه خود تعبیه کند.)

Pixnapping هم روی همان کانال جانبی‌ که GPU.zip از آن استفاده می‌کرد تمرکز کرده؛ یعنی زمان دقیق لازم برای رندر شدن یک فریم روی صفحه، هدف‌گذاری شده است.

آلن لینگهاو وانگ، نویسنده ارشد مقاله پژوهشی منتشر شده درباره Pixnapping، توضیح داد: «این به اپلیکیشن مخرب اجازه می‌دهد تا اطلاعات حساس نمایش داده‌شده توسط اپلیکیشن‌ها یا وب‌سایت‌های دیگر را پیکسل به پیکسل بدزدد. ازنظر مفهومی، مثل این است که اپلیکیشن مخرب در حال گرفتن اسکرین‌شات از محتواهایی باشد که نباید به آن‌ها دسترسی داشته باشد. حملات ما در سطح end-to-end تنها زمان رندر هر فریم عملیات گرافیکی را اندازه می‌گیرند تا مشخص کنند آیا پیکسل سفید است یا غیر سفید.»
حمله سه مرحله‌ای Pixnapping

حمله Pixnapping در سه مرحله اصلی انجام می‌شود:

مرحله اول:

اپلیکیشن مخرب با استفاده از API های اندروید، اپلیکیشن هدف را فراخوانی می‌کند. این فراخوان‌ها را می‌توان برای اسکن دستگاه آلوده و در راستای یافتن اپلیکیشن‌های موردنظر هم به کار گرفت. این فراخوان‌ها درعین‌حال می‌توانند اپلیکیشن هدف را وادار کنند تا داده‌های مشخصی که به آن دسترسی دارد را نمایش دهد (مثلا یک رشته پیام در یک پیام‌رسان خاص یا کدهای دومرحله‌ای برای یک سایت مشخص). این اقدام باعث می‌شود تا اطلاعات موردنظر به "خط لوله رندر اندروید" (سیستمی که با دریافت پیکسل‌های هر اپلیکیشن، آن‌ها را بر روی صفحه به نمایش درمی‌آورد) ارسال شوند؛ از جمله فراخوان‌های مورداستفاده اندروید می‌توان به activities،intents و tasks اشاره کرد.

مرحله دوم:

Pixnapping، روی پیکسل‌های منفردی که اپلیکیشن هدف به خط لوله رندر فرستاده، عملیات گرافیکی را انجام می‌دهد. این عملیات مختصات پیکسل‌های موردنظر را انتخاب کرده و به بررسی این موضوع می‌پردازد که آیا رنگ آن مختصات سفید است یا غیر سفید؛ یا به‌صورت کلی‌تر، آیا رنگ برابر با رنگ c هست یا نه (برای یک رنگ دلخواه c).

وانگ دراین‌باره توضیح داد: «مثلاً تصور کنید که مهاجم می‌خواهد پیکسلی که بخشی از صفحه نمایش که یک رقم کد دومرحله‌ای در Google Authenticator در آن رسم می‌شود را بدزدد؛ اگر در آنجا هیچ‌چیزی رسم نشده باشد، این پیکسل سفید است و اگر بخشی از کد دومرحله‌ای در آنجا رندر شده باشد، غیر سفید خواهد بود. در ادامه، اگر پیکسل موردنظر غیر سفید باشد، مهاجم می‌خواهد کارهای گرافیکی‌ای که زمان رندر آن طولانی باشد انجام دهد و اگر سفید باشد، می‌خواهد که زمان این کار کوتاه باشد. اپلیکیشن مخرب این کار را با باز کردن برخی فعالیت‌های مخرب در جلوی اپلیکیشن قربانی که در مرحله اول باز شده بود، انجام می‌دهد.»

مرحله سوم:

در این مرحله مدت‌زمانی که هر مختصات برای گرفتن رندر نیاز دارد، اندازه‌گیری می‌شود و با ترکیب زمان‌ها برای هر مختصات، در حمله تصویر ارسال‌شده به خط لوله رندر، پیکسل به پیکسل بازسازی خواهد شد. درواقع مهاجم چیز شفافی را جلوی اپلیکیشن هدف رندر می‌کند و در ادامه با بهره‌گیری از یک حمله زمانی که در واقع سوءاستفاده از فشرده‌سازی داده گرافیکی GPU است، تلاش می‌کند تا رنگ پیکسل‌ها را معلوم کند. این خواسته که:" به من پیکسل‌های یک اپلیکیشن دیگر را بده" اصلاً کار ساده‌ای نیست و به همین خاطر هم زمان‌بر خواهد بود و ممکن است آن‌قدر کند باشد که در بازه ۳۰ ثانیه‌ای اپلیکیشن گوگل Authenticator نگنجد.

ریکاردو پاکاگنلا، یکی دیگر از نویسنده‌های این مقاله، با جزئیات بیشتری در مورد این حمله توضیح داد:

مرحله ۱: اپلیکیشن مخرب، اپلیکیشن هدف را فراخوانی می‌کند تا محتوای تصویری حساس روی صفحه رندر شود.
مرحله ۲: اپلیکیشن مخرب از API های اندروید، برای رندر روی محتوای بصری استفاده کرده و یک کانال جانبی (مثل GPU.zip) را فعال می‌کند تا براساس رنگ پیکسل‌های رندر شده در مرحله اول نشتی ایجاد شود (مثلاً اگر رنگ پیکسل برابر c باشد فعال گردد)
مرحله ۳: اپلیکیشن مخرب اثرات جانبی مرحله ۲ را رصد می‌کند تا مثلا به این نتیجه برسد که آیا رنگ آن پیکسل‌ها، c بوده یا خیر و هر بار یک پیکسل را رصد می‌کند.

مراحل ۲ و ۳ بسته به کانال جانبی‌ای که مهاجم قصد سوءاستفاده از آن را دارد، به‌صورت‌های متفاوتی پیاده‌سازی می‌شوند. ما در نمونه‌سازی‌هایمان بر روی گوشی‌های گوگل و سامسونگ، از کانال جانبی GPU.zip بهره بردیم. در استفاده از GPU.zip، اندازه‌گیری زمان رندر به ازای هر فریم برای تعیین اینکه آیا رنگ هر پیکسل برابر c هست یا نه کافی بود. البته این احتمال وجود دارد که در نمونه‌سازی‌های آتی این حمله، از کانال‌های جانبی دیگری که در آن‌ها کنترل مدیریت حافظه و دسترسی به تایمرهای دقیق لازم است، استفاده شود. احتمالا در آن صورت هم Pixnapping همچنان کار می‌کند و فقط لازم است تا مهاجم، نحوه پیاده‌سازی مراحل ۲ و ۳ را تغییر دهد.

آیا می‌توان در سی ثانیه، کد دومرحله‌ای را دزدید؟

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

در ادامه مقاله این پژوهشگران می‌خوانیم: «برای آنکه بتوان این کار را در ۳۰ ثانیه انجام داد، ما تعداد نمونه‌ها برای هر پیکسل هدف را به ۱۶ تا کاهش دادیم (در مقایسه با ۳۴ یا ۶۴ نمونه‌ای که در حملات پیشین استفاده می‌شد) و زمان بی‌کاری بین نشت پیکسل‌ها را از ۱٫۵ ثانیه به ۷۰ میلی‌ثانیه کاهش دادیم.»

ما از حمله End-to-End برای نشت ۱۰۰ کد دومرحله‌ای مختلف از Google Authenticator برای هر یک از گوشی‌های گوگل پیکسل استفاده کردیم. حمله ما عملیات بازیابی کامل کد ۶ رقمی دومرحله‌ای را در ۷۳٪، ۵۳٪، ۲۹٪ و ۵۳٪ از آزمایش‌ها به ترتیب بر روی گوشی‌های گوگل پیکسل‌های ۶، ۷، ۸ و ۹ به دست آورد. میانگین زمان بازیابی هر کد دومرحله‌ای به ترتیب ۱۴٫۳، ۲۵٫۸، ۲۴٫۹ و ۲۵٫۳ ثانیه برای گوشی‌های پیکسل ۶، ۷، ۸ و ۹ بود؛ ولی به دلیل نویز قابل‌توجه، نتوانستیم روی دستگاه سامسونگ گلکسی S۲۵ کدهای دومرحله‌ای را ظرف ۳۰ ثانیه به دست بیاوریم  و بررسی بیشتر چگونگی تنظیم حمله برای کار کردن روی این دستگاه را به بررسی‌های آینده موکول کرده‌ایم.

واکنش گوگل و اهمیت این تحقیق

یکی از نماینده‌های شرکت گوگل هم در واکنش به این موضوع نوشت: «ما در بولتن امنیتی اندروید سپتامبر یک پَچ برای CVE-۲۰۲۵-۴۸۵۶۱ صادر کردیم که تا حدی این رفتار را کاهش می‌دهد. در بولتن امنیتی دسامبر هم پچ اضافی دیگری را برای این آسیب‌پذیری منتشر خواهیم کرد؛ ولی تاکنون شاهد نشانه‌ای از سوءاستفاده واقعی در جهانِ واقعی نبوده‌ایم.»

به هر ترتیب، تحقیق درباره Pixnapping پژوهش سودمندی به نظر می‌رسد که محدودیت‌های امنیتی و حریم خصوصی گوگل را نشان می‌دهد که یک اپلیکیشن نصب‌شده نمی‌تواند به داده‌های متعلق به اپلیکیشن‌های دیگر دسترسی داشته باشد. بااین‌حال، چالش‌هایی که در پیاده‌سازی حمله برای دزدیدن داده‌های مفید در سناریوهای دنیای واقعی وجود دارند، احتمالا قابل‌توجه‌تر هستند. در عصری که نوجوانان می‌توانند راز شرکت‌های بزرگ را تنها با پرسیدن چند سؤال ساده بدزدند، حملات پیچیده‌تر و محدودتر احتمالا ارزش کمتری خواهند داشت.