یک نقص امنیتی جدید در تراشه های سری M اپل کشف شده است که می تواند جهت استخراج کلیدهای مخفی مورد استفاده در عملیات رمزنگاری مورد سوء استفاده قرار گیرد. این آسیب پذیری GoFetch نام دارد و مربوط به یک حمله کانال جانبی ریزمعماری است که از ویژگی DMP (پیش واکشی (prefetcher) وابسته به حافظه داده) به منظور نفوذ به پیاده سازی های رمزنگاری در زمان ثابت (constant-time) و بدست آوردن داده های حساس از حافظه CPU استفاده میکند. اپل در دسامبر 2023 از این یافته ها مطلع گردید.
پیش واکشی (Prefetcher)، یک تکنیک بهینه سازی سخت افزاری است که پیش بینی میکند یک برنامه در حال اجرا به چه آدرس هایی از حافظه در آینده نزدیک نیاز خواهد داشت و داده ها را بر این اساس از حافظه اصلی به حافظه پردازنده منتقل میکند. هدف از این رویکرد، کاهش تأخیر دسترسی حافظه به برنامه میباشد.
DMP نوعی تکنیک پیش واکشی است که محتویات حافظه را بر اساس الگوهای دسترسی مشاهده شده قبلی در هنگام تعیین مواردی که باید از قبل واکشی شوند در نظر میگیرد. این رفتار آن را در برابر حملات مبتنی بر cache ، آسیب پذیر میکند که Prefetcher را فریب می دهد تا محتویات مرتبط با فرآیند قربانی را که غیرقابل دسترس میباشند، آشکار کند.
آسیب پذیری GoFetch همچنین بر حمله ریزمعماری دیگری به نام Augury متکی است که از DMP برای افشای داده ها به صورت speculative (گمانه زنی یا پیش بینانه) استفاده می کند.
تیمی متشکل از هفت دانشگاه از جمله دانشگاه های ایلینویز، تگزاس، کالیفرنیا، برکلی، واشنگتن، کارنگی ملون و موسسه فناوری جورجیا، اعلام کردند که DMP، بارگیری داده های دلخواه از حافظه را فعال میکند که شبیه یک پوینتر (pointer) به نظر میآید.
این ویژگی به صراحت الزامات پارادایم برنامه نویسی زمان ثابت (constant-time) را نقض میکند که ترکیب داده ها و الگوهای دسترسی به حافظه را ممنوع خواهد کرد.
مانند سایر حملات از این نوع، انجام حمله مستلزم آن است که قربانی و مهاجم دو فرآیند متفاوت را در یک ماشین و در یک کلاستر CPU قرار دهند. مهاجم به طور خاص می تواند هدف را برای دانلود یک برنامه مخرب که از GoFetch سوء استفاده می کند، فریب دهد.
علاوه بر این، در حالی که مهاجم و قربانی حافظه مشترکی ندارند، مهاجم می تواند هر کانال جانبی ریزمعماری در دسترس خود را نظارت کند، به عنوان مثال تأخیر حافظه پردازنده.
GoFetch به طور خلاصه نشان می دهد که حتی اگر قربانی با پیروی از پارادایم زمان ثابت، داده ها را به درستی از آدرس ها جدا کند، DMP از طرف قربانی دسترسی به حافظه وابسته را ایجاد می کند و آن را مستعد حملات استخراج کلید خواهد کرد.
به عبارت دیگر، یک مهاجم می تواند از تکنیک پیش واکشی (Prefetcher)، سوء استفاده کند تا بر داده هایی که از قبل واکشی شدهاند تأثیر بگذارد، بنابراین فرصتی را جهت دسترسی به داده های حساس ایجاد میکند. این آسیب پذیری پیامدهای جدی به دنبال دارد چرا که حفاظت های امنیتی ارائه شده توسط برنامه نویسی زمان ثابت در برابر حملات کانال جانبی زمان بندی را کاملاً خنثی میکند.
آسیب پذیری GoFetch نشان می دهد که DMP به طور قابل توجهی تهاجمی تر از آنچه قبلا تصور می شد عکل میکند و خطر امنیتی بسیار بیشتری را به همراه دارد.
ماهیت اساسی این نقص امنیتی بدان معناست که نمی توان آن را در CPUهای موجود اپل برطرف کرد و توسعه دهندگانِ کتابخانه های رمزنگاری میبایست اقدامی را جهت جلوگیری از شرایطی که به سوء استفاده از آسیب پذیری GoFetch منجر میشود، به انجام رسانند. از سوی دیگر، از کاربران خواسته می شود تا سیستم های خود را به روز نگاه دارند.
با این حال، در تراشههای M3 اپل، فعال سازیِ زمانبندیِ مستقل از داده ([1]DIT) ، DMP را غیرفعال میکند. این کار در پردازنده های M1 و M2 امکان پذیر نیست.
اپل در مستندات خود خاطرنشان کرد که سیلیکون این شرکت (Apple silicon)، زمان بندی مستقل از داده (DIT) را ارائه میکند که در آن پردازنده، دستورالعملهای خاصی را در مدت زمان ثابتی تکمیل مینماید. با فعال بودن DIT، پردازنده بدون توجه به داده های ورودی، از طولانی ترین و بدترین زمان ها برای تکمیل دستورالعمل استفاده میکند.
اگرچه روشن کردن DIT از افشای اطلاعات مبتنی بر زمان جلوگیری به عمل میآورد، اما به توسعه دهندگان توصیه میشود « از شاخه های شرطی و مکان های دسترسی به حافظه بر اساس مقدار داده های مخفی اجتناب کنند» تا به طور مؤثر مانع از استخراج کلید توسط مهاجم شوند.
این توسعه زمانی صورت پذیرفت که گروه دیگری از محققان دانشگاه فناوری Graz در اتریش و دانشگاه Rennes در فرانسه حمله جدیدی به واحد پردازش گرافیکی (GPU[2]) را شناسایی کردند که بر مرورگرها و کارتهای گرافیک محبوب تأثیر میگذارد و از کد جاوا اسکریپت ساخته شده ویژه در یک وب سایت برای استخراج اطلاعات حساس مانند رمز عبور استفاده میکند.
این تکنیک که نیازی به تعامل کاربر ندارد، به عنوان اولین حمله کانال جانبی حافظه پنهان GPU از داخل مرورگر توصیف شده است.
از آنجایی که محاسبات GPU می تواند مزایایی را برای محاسبات درون وب سایت ها ارائه دهد، سازندگان مرورگر تصمیم گرفتند GPU را از طریق APIهایی مانند WebGL و استاندارد WebGPU آتی، مورد استفادهء جاوا اسکریپت قرار دهند.
محققان ginerlukas علیرغم محدودیت های ذاتی محیط جاوا اسکریپت و WebGPU، حملات اولیه جدیدی را ایجاد کردند که حملات کانال جانبی حافظه پردازنده را با کارایی قابل مقایسه با حملات سنتی به CPU امکان پذیر می سازد.
عامل تهدید می تواند از طریق یک حمله، امکان استخراج کلیدهای AES[3] یا استخراج ارزهای دیجیتال را در حین جستجوی کاربران در اینترنت فراهم کند. سیستم عامل ها و مرورگرهایی که استاندارد WebGPU را اجرا می کنند طیف وسیعی از دستگاه های GPU را تحت تاثیر قرار می دهند.
محققان به عنوان اقدامات متقابل، پیشنهاد می کنند که دسترسی به کارت گرافیک سیستم میزبان از طریق مرورگر، به عنوان یک منبع حساس در نظر گرفته شود و وب سایت ها موظف باشند پیش از استفاده، از کاربران اجازه بگیرند (مانند دوربین یا میکروفون).
[1] data-independent timing
[2] graphics processing unit
[3] Advanced Encryption Standard