روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ محققین چهار دانشگاه آمریکا مقالهای را منتشر کردند که در آن به تفصیل حملهای بالقوه و جذاب روی زیرسیستمهای گرافیک کامپیوتر توضیح داده شده است. گفته میشود مشخصاً هدف این حمله، جیپییوهای منسجم تولیدشده توسط دو شرکت AMD و Intel بوده است. با ما همراه باشید تا این حمله را به بیانی ساده توضیح دهیم.
حمله GPU.zip نام داشته و اشاره دارد به دو قابلیت اصلی آن: 1) سرقت اطلاعات محرمانه از سیستم گرافیک و 2) اکسپلویت آسیبپذیریهای الگوریتم فشردهسازی داده. این حمله در عین حال که بسیار باشکوه و پیچیده به نظر میرسد اما اجرایی کردنش به این سادگیها نیست.
در مورد الگوریتمهای فشردهسازی
پیش از اینکه به خود حمله GPU.zip بپردازیم، بیایید برخی ابعاد الگوریتمهای فشردهسازی را بررسی کنیم. این الگوریتمها میتوانند به طور گستردهای به به الگوریتمهای فشردهسازی بااتلاف (مانند mp3) و الگوریتمهای فشردهسازی بدون اتلاف (مانند rar یا zip) طبقهبندی شوند. مورد دوم دادهها را طوری فشرده میکند که بتوانند تماماً ریستور شوند. سادهترین متود فشردهسازی ذخیره دادهی تکرارشده تنها یک بار است و بعد باید نشان داد کدام مجموعه کاراکترها یا اعداد خاص باید جاگذاری شوند.
برای مثال طول این مقاله باید مشخصاً به ضبط همه مکانهایی که کلمه «داده» ظاهر شده و ذخیره همین کلمه تنها یک بار محدود شود. از منظر امنیت اطلاعات، الگوریتمهای فشردهسازی انواع آسیبپذیری دارند. بیایید تصور کنیم داریم با استفاده از فشردهسازی در اینترنت یک سری داده منتقل میکنیم. حجم اطلاعات به این بستگی دارد که الگوریتم فشردهسازی چقدر مؤثر عمل میکند- هر قدر فشردهسازی بهتر، سایز داده کوچکتر. سال 2002 نشان داده شد که این قابلیت میتواند برای سرقت اطلاعات محرمانه حتی اگر داده رمزگذاریشده بود اکسپلویت شود. یکی از حملات نسبتاً اجرایی که این احتمال را تأیید میکند سال 2012 نشان داده شد.
کاشف به عمل آمد که در برخی موارد، اگر اطلاعات بین مرورگر و سرور همزمان در دو فرم فشرده و رمزگذاریشده منتقل شود، الگوریتم فشردهسازی میتواند حتی اگر الگوریتم رمزگذاری هک هم نشده باشد اطلاعات محرمانه را افشا کند. چنانچه مهاجمین درخواستهای متعددی را به سرور بفرستند میتوانند ببینید چطور سایز دادههای فشردهشده بر اساس محتوا تغییر میکند. و از این همینجاست که میتوانند کاراکتر به کاراکتر اطلاعات محرمانه را محاسبه کنند. هنوز معلوم نشده آیا فشردهسازی چکنشدهی دادههای زیرسیستم گرافیکی همچنین به نشت محرمانهها منجر میشود یا خیر.
در مورد قابلیتهای گرافیک کامپیوتر
میخواهیم از زیرسیستم گرافیکی بگوییم- یا سادهتر: ویدیو کارتها. هرچند اغلب مستقیم در پردازنده ادغام میشوند. GPUهای گسسته در واقع ماژولهای جداگانه رایانشی هستند که معمولاً رم مخصوص به خود را دارند. گیمرهای کامپیوتری با این شرایط که جدیدترین بازی در اجرای ویدیو کار نه چندان قوی دست و پنجه نرم میکند آشنا هستند: نرخ رفرش فریم پایینتر از حد استاندارد است، تصویر دیگر روان نیست و گاهی حتی در کسری از ثانیه فریز هم میشود. دو دلیل برای این رفتار وجود دارد: اغلب ویدیو کارت نمیتواند محاسبات لازم را برای ساخت تصاویر سه بعدی را با سرعت لازم و کافی مدیریت کند. اما گاهی دادههای لازمه از رم اصلی به کندی به مموری زیرسیستم گرافیک منتقل میشوند. این مشکل با استفاده از الگوریتمهای فشردهسازی داده میتواند حل شود. گیمها برای فشردهسازی بافتها از الگوریتمهای فشردهسازی بااتلاف استفاده میکنند.
نویسندگان این مقاله دریافتند که دست کم در جیپییوهای منجسم AMD و Intel، فشردهسازی بدون اتلاف نیز (برای انتقال داده گرافیکی که باید روی نمایشگر نشان داده شود) استفاده میشده (منظور دسکتاپ، پنجرههای مرورگر و غیره است). این الگوریتمها نمیتوانند غیرفعال شوند و تازه اختصاصی هم هستند- فقط خود تولیدکننده میداند چطور کار میکنند. محققین آنها را در حالت "جعبه سیاه" مطالعه کردند: وجود الگوریتم فشردهسازی بر اساس علائم غیرمستقیم، مانند مقدار دادههای منتقل شده از RAM به حافظه ویدئویی، که بسته به تصویر متفاوت بود، تعیین شد. انتقال الگوهای گرافیکی که تماماً از پیکسلهای سیاه، پیکسلهای سیاه و سفید به ترتیب خاص و الگوهای تصادفی ساخته شدهاند، نشان میدهد که وقتی دادههای بهراحتی قابل فشردهسازی به سیستم ویدئویی ارسال میشوند، اطلاعات کمتری بین رم اصلی و حافظه ویدئویی منتقل میشود: درست طوری که فشردهسازی داده باید کار کند.
محوریت اصلی این تحقیق، مهندسی معکوس این الگوریتمهای فشردهسازی داده که اختصاصی هم هستند است. پژوهش حاضر برای درک ساز و کار دقیق چنین الگوریتمهایی لازم بود- برای مثال درک اینکه چطور دادههای گرافیکی پیش از فشردهساز به بلاکها تقسیم میشوند. محققین پی بردند که الگوریتمهای مختلف بسته به تولیدکننده یا حتی مدل زیرسیستم گرافیکی به کار میروند. مشکل این است که زمان لازم برای فشردهسازی داده نیز به خود داده بستگی دارد. اگر مجموعهای از اطلاعات با قابلیت فشردهسازی ضعیف (دادههای تصادفی بدون هیچ عنصر تکراری) داشته باشیم، زمان پردازش در مقایسه با «دادههای ساده» متفاوت خواهد بود. در همین حال، یک مهاجم میتواند این زمان را اندازهگیری کند - به عنوان مثال، با ایجاد یک صفحه وب خاص.
زیبایی... و بیفایدگی حمله GPU.zip
تصور کنید شخصی یک صفحه وب مخرب ایجاد میکند که حاوی درخواستی برای جاسازی صفحه دیگری است که میخواهد دادهها را از آن بدزدد. این شخص توانایی اندازهگیری زمان لازم برای رندر صفحه خود را در مرورگر دارد، اما نه بیشتر. برای مثال، اگر پنجرهای با ایمیل کاری هدف در صفحه تعبیه شده باشد، مهاجم به محتوای آن پنجره دسترسی نخواهد داشت. چرا؟ چنین اقدامی کاملاً توسط قانون خطمشی همان مبدأ ممنوع است - برای مثال میتوانید کدی را برای ردیابی اقدامات کاربر در سایت قرار دهید، اما در صفحه وب «خارجی» تعبیهشده کار نخواهد کرد. با این حال یک استثنا وجود دارد: قوانین یک ظاهر طراحی شده را می توان در صفحه تعبیه شده اعمال کرد. نویسندگان حمله GPU.zip از این مزیت استفاده و شروع به اعمال الگوهای گرافیکی خاص در صفحه هدف کردند. این منجر به تغییراتی در زمان مورد نیاز برای پردازش دادههای گرافیکی فشرده شد و در نتیجه مدت زمان رندر صفحه را که قابل اندازه گیری است کمی تغییر داد.
ما نهایتاً به پیادهسازی عملی این حمله رسیدیم. ساز و کار آن چنین است: مهاجم یکجورهایی کاربر را فریب میدهد که به وبپیج مخرب سر بزند. صفحه حاوی کدی است که پیج دیگری را از سایتی تماماً متفاوت جاگذاری کرده- در این مورد منظور صفحه اصلی ویکیپدیا است. بیایید فرض بگیریم کاربر مرورگر اکانت ویکیپدیا دارد و لاگین کرده. نام کاربری او روی صفحه جاگذاریشده نمایش داده خواهد شد. با اپلای کردن افکتها در این صفحه و اندازهگیری زمانی که میبرد تا رندر انجام شود، مهاجم میتواند محتوای صفحه هدف را از همین یک پارامتر به تنهایی بازسازی کند. به طور جزئیتر، مهاجمین میتوانند نام کاربری را دریافت کنند. به این روش بازدیدکننده سایت مخربشان را نیز شناسایی میکنند (حتی اگر بازدیدکننده سعی کند برای مثال ناشناس باقی بماند).
این یک حمله معمولی کانال جانبی است: مهاجم از یک پارامتر غیرمستقیم استفاده میکند که میتواند زمان لازم را برای ارائه یک صفحه وب به منظور سرقت دادههایی که به آنها دسترسی ندارند اندازهگیری کند. اما اکنون، بیایید در مورد غیرعملی بودن این حمله بحث کنیم… محتوای صفحه وب مورد نظر پیکسل به پیکسل بازسازی می شود. مهاجم دارای یک تایمر و قابلیت تغییر اندکی ظاهر صفحه در مرورگر است. در نتیجه، نیم ساعت طول می کشد تا پردازنده AMD Ryzen با گرافیک یکپارچه، نه کل صفحه، بلکه فقط یک قطعه کوچک را بازسازی کند. در یک پردازنده اینتل، الگوریتم حتی کندتر کار میکند - بازسازی بیش از سه ساعت طول میکشد! این یعنی قربانی احتمالی باید صفحه را باز کرده و مدتی آن را فراموش کند بدون آنکه آن را ببندد در طول همه این مدت صفحه رفرش خواهد شد و همین روی سیستم لود سنگینی میآورد.
با این همه، دقت بازسازی داده بالاست (بین 97 تا 98 درصد) و مهمتر اینکه این متود حتی وقتی حجم بیشتری از دادههای دیگر از طریق ویدیو کارت انتقال داده میشود هم کار میکند. محققین در پسزمینه ویدیو یوتیوب پلی میکنند. برخلاف مطالعات قبلی، این حمله به طور مطمئنی حتی با مقدار قابل ملاحظهای از چنین نویزهای پسزمینهای هم کار میکند. استدلال آخر در مقابل اجرایی بودن این حمله به طور خاص این است که بیشتر وبسایتها نمیتوانند در وبپیجهای دیگر جاگذاری شوند (اگر آنها محتوای محرمانه را نمایش ندهند). این یعنی نمیتوانید از پیامهای ایمیل یا مکالمات چت به طور مخفیانه اسکرینشات بگیرید. نمونه صفحه ویکیپدیا به این دلیل انتخاب شد که پرونده خاصی بود: جایی که در آن وبسایت با نام کاربری قابلرؤیت میتواند جاساز شود.
اگر بخواهیم خلاصهاش کنیم: بر خلاف آسیبپذیریهای سختافزاری نمیشود با اطمینان گفت توسعهدهندگان جیپییو در این مورد اشتباه کردهاند. ما داریم در مورد تعاملات به شدت پیچیده میان اجزای مختلف حرف میزنیم- که ویژگیهایشان میتوانند برای سرقت داده مورد اکسپلویت قرار گیرند. خود این سرقت به خودی خود نگرانکننده نیست اما تحقیقات بعدی شاید نشانگر متود مؤثرتری باشند. امید است توسعهدهندگان جیپییو این مقاله را مورد توجه قرار داده و الگوریتمهایی را اتخاذ کنند که دادههای حساس را نشت نمیدهند. کیفیت این مقاله هم نباید نادیده گرفته شود: محققین با فراموش کردن لحظهایِ دشواریهای اجرایی، متود سرقت دادهها از راه دور را نشان داده و از اطلاعات محرمانه اسکرینشات گرفتند. همه اینها از طریق بررسی جزء به جزء قابلیت کوچک در عملکرد جیپییوها میسر شد و تولیدکنندگان دوست ندارند در مورد عملکرد CPUهای خود اطلاعاتی را علنی و عمومی کنند. این مقاله گرچه اکنون عواقب اجرایی ندارد اما همچنان پر از نکته مفید است که باید آویزه گوش کرد.
منبع: کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.