آسیبپذیری اجرای گذرای واحد پردازش مرکزی
آسیبپذیریهای اجرای گذرای واحد پردازش مرکزی (به انگلیسی: Transient execution CPU vulnerability) آسیبپذیریهایی در سامانههای رایانهای هستند که با سوءاستفاده از بهینهسازی نظریای که در ریزپردازنده پیادهسازی شدهاست، باعث نشت اطلاعات محرمانه به یک شخص غیرمجاز میشوند. مثال قدیمی این دسته از آسیبپذیریها اسپکتر (به انگلیسی: Spectre) است که نام آن هم از روی این نوع حمله کانال جانبی تعیین شدهاست؛ اما از دی ۱۳۹۷ انواع مختلفی از این دسته حملات شناسایی شدهاند.
نگاه کلی
[ویرایش]رایانههای امروزی بسیاری از کارهای خود را به صورت موازی انجام میدهند و از واحدهای پیچیدهای با سرعت پردازشی متفاوت تشکیل شدهاند. این تفاوت در سرعت پردازشی باعث شدهاست تا برخی از اجزای رایانه برای انجام کارهای خود، نیاز به نتیجهٔ محاسبات بخش دیگری داشته باشند. اگر یک پردازش (مانند یک انشعاب (به انگلیسی: Branch)) برای انجام کار خود نیازمند نتیجهٔ یک پردازهٔ دیگر که سرعت کمتری دارد (مانند خواندن از حافظه) داشته باشد که هنوز تکمیل نشدهاست، ریزپردازنده ممکن است اقدام به پیشبینی نتیجهٔ این پردازش کرده و ادامهٔ عملیات دوم را به صورت وهمی (به انگلیسی: speculatively) با فرض درست بودن این انشعاب انجام میدهد. پیشبینی معمولاً بر اساس رفتار اخیر سیستم انجام میشود. وقتی که پردازهٔ کندتر واقعاً کار خود را به اتمام رساند، ریزپردازنده پیشبینی خود را با نتیجهٔ واقعی عملیات مقایسه میکند. اگر این پیشبینی درست بود، محاسباتی را که به صورت وهمی انجام دادهاست ادامه میدهد و اگر پیشبینی اشتباه بود، مجدداً ادامهٔ پردازش را با استفاده از نتایج واقعی عملیات کندتر انجام میدهد و پردازشهای وهمی خود را بازگردانی میکند. بهطور دقیقتر، یک دستور گذرا[۱] دستوری است که همراه با یک خطا از سوی پردازشگر پردازش شدهاست (به عنوان مثال در حملهٔ اسپکتر پیشبینی نادرست انشعاب خطای پردازشگر است) و میتواند با تأثیر بر ریز-معماری (به انگلیسی: micro-architectural) پردازشگر، حالت معماری پردازشگر را بدون برجا گذاشتن ردی (به انگلیسی: trace) از اجرای آن نمایان کند.
اگر بخواهیم بهطور دقیقتر بگوییم، مانند آن است که این دستور وهمی هیچگاه اتفاق نیفتاده است. با این حال، این اجرای وهمی میتواند حالت اجزائی از ریزپردازنده مانند حافظه نهان (به انگلیسی: cache) را تغییر دهد و این تغییر میتواند با یک پایش (به انگلیسی: monitoring) دقیق از زمانهای اجرای ریز-عملیاتها (به انگلیسی: subsequent operations) برای مهاجم عیان شود.
اگر یک مهاجم بتواند کدی که توسط پردازش وهمی اجرا میشود را به صورت دلخواه خود مرتب کند (حال چه با اجرای مستقیم دستورهایی که مهاجم به برنامه دادهاست یا با استفاده از گجتهای (به انگلیسی: gadget) موجود در سامانه مورد هدف) تا با توجه به مقادیر مختلف موجود در یک بخش محرمانه، تاثیرهای متفاوتی بر حالت حافظه نهان برجای گذارد، ممکن است بتواند محتوای این بخش محرمانه را تشخیص دهد.
با شروع از سال ۱۳۹۷ نمونههای مختلفی از این نوع آسیبپذیری کشف و در انتهای سال ۱۳۹۷ به صورت عمومی منتشر شدند.
خلاصه آسیبپذیریها و روشهای جلوگیری
[ویرایش]نوع جلوگیری | پیچیدگی | تاثیرگذاری | اثرات عملکردی پردازشی |
---|---|---|---|
سختافزار | کامل | کامل | هیچ-کم |
بهروزرسانی ریزبرنامههای سفتافزار | تا حدی | تا حدی-کامل | کم-زیاد |
سیستمعامل/ماشینمجازی | تا حدی | تا حدی-کامل | کم-زیاد |
بازسازی نرمافزارها | ضعیف | تا حدی-کامل | متوسط-زیاد |
روشهای سختافزاری نیاز به تغییر در طراحی واحد پردازش مرکزی دارند و به همین دلیل نیاز است تا منتظر نسل بعد از سختافزارها بمانیم، با این حال تقریباً تأثیری برروی کارایی سامانه برجای نمیگذارند. بهروزرسانی ریزبرنامهها، برنامهای که واحد پردازش مرکزی بر روی آن در حال اجراست را تغییر میدهد و نیاز است تا به ازای هر زوج سیستمعامل و واحد پردازش مرکزی، یک وصله (به انگلیسی: patch) منتشر و با سامانه یکپارچه شود. پیشگیریهای مبتنی بر سیستمهای عامل و ماشینهای مجازی در سطح سیستمعامل یا لایهٔ ماشین مجازی اعمال میشود و بسته به میزان بار وارد بر این بخش از سیستمعامل، میتواند تأثیر زیادی در کاهش کارایی سامانه داشته باشد. بازسازی نرمافزارها نیاز به دوبارهسازی همهی بخشهای برنامه دارد و معمولاً تأثیر نامطلوبی بر کارایی سیستم اعمال میکند.
نام آسیبپذیری
(نامهای دیگر) |
CVE | واحد پردازش مرکزی مورد تأثیر و پیشگیریها | ||||||
---|---|---|---|---|---|---|---|---|
Intel[۲] | AMD[۳] | |||||||
Ice Lake[۴] | Cascade Lake, Comet Lake |
Whiskey Lake, Amber Lake |
Coffee Lake (9th gen)[۵] |
Coffee Lake (8th gen)* |
Zen 1 / Zen 1+ | Zen 2[۶] | ||
Spectre v1 Bounds Check Bypass |
2017-5753 | بازسازی نرمافزار | بازسازی نرمافزار[۷] | |||||
Spectre v2 Branch Target Injection |
2017-5715 | سختافزار + سیستمعامل | ریزبرنامهسازی + سیستمعامل | ریزبرنامهسازی + سیستمعامل | ریزبرنامهسازی + سیستمعامل/ماشین مجازی | ریزبرنامهسازی + سیستمعامل/ماشین مجازی | ||
SpectreRSB[۸]/ret2spec[۹]Return Mispredict | 2018-15572 | سیستمعامل[۱۰] | ||||||
Meltdown Rogue Data Cache Load |
2017-5754 | ایمن | ریزبرنامهسازی | ایمن | ||||
Spectre-NG v3a | 2018-3640 | ایمن[۱۱] | ریزبرنامهسازی | |||||
Spectre-NG v4 Speculative Store Bypass |
2018-3639 | سختافزار + سیستمعامل/ماشین مجازی[۱۱] | ریزبرنامهسازی + سیستمعامل | سیستمعامل/ماشین مجازی | سختافزار + سیستمعامل/ماشین مجازی | |||
Foreshadow L1 terminal fault , L1TF |
2018-3615 | ایمن | ریزبرنامهسازی | ایمن | ||||
Spectre-NG Lazy FP state restore |
2018-3665 | سیستمعامل/ماشین مجازی[۱۲] | ||||||
Spectre-NG v1.1 Bounds Check Bypass Store |
2018-3693 | سیستمعامل/ماشین مجازی[۱۳] | ||||||
Spectre-NG v1.2 Read-only Protection Bypass (RPB) |
بدون CVE و همچنین تأیید نشده توسط اینتل | ایمن[۳] | ||||||
Foreshadow-OS L1 terminal fault (L1TF) |
2018-3620 | ایمن | ریزبرنامهسازی + سیستمعامل | ایمن | ||||
Foreshadow-VMM L1 terminal fault (L1TF) |
2018-3646 | |||||||
RIDL/ZombieLoad Microarchitectural Fill Buffer Data Sampling (MFBDS) |
2018-12130 | |||||||
RIDL Microarchitectural Load Port Data Sampling (MLPDS) |
2018-12127 | ایمن | ایمن [۱] | ایمن | ریزبرنامهسازی + سیستمعامل[۱۴] | |||
RIDL Microarchitectural Data Sampling Uncacheable Memory (MDSUM) |
2019-11091 | ایمن | ریزبرنامهسازی + سیستمعامل | |||||
Fallout Microarchitectural Store Buffer Data Sampling (MSBDS) |
2018-12126 | ایمن | ایمن [۲] | ایمن | ریزبرنامهسازی + سیستمعامل | |||
Spectre SWAPGS[۱۵][۱۶][۱۷] | 2019-1125 | مانند اسپکتر ۱ | ||||||
RIDL/ZombieLoad v2 Transactional Asynchronous Abort (TAA)[۱۸][۱۹][۲۰] |
2019-11135 | ایمن[۲۱] | ریزبرنامهسازی + سیستمعامل | |||||
RIDL/CacheOut L1D Eviction Sampling (L1DES)[۲۲][۲۳][۲۴] |
2020-0549 | ایمن | ||||||
RIDL Vector Register Sampling (VRS)[۲۲][۲۳] |
2020-0548 | |||||||
Load Value Injection (LVI)[۲۵][۲۶][۲۷][۲۸] | 2020-0551 | بازسازی نرمافزار | ||||||
Take a Way[۲۹][۳۰] | ایمن | بدون راهحل کنونی (نظرات مختلف[۳۱]) | ||||||
CROSSTalk Special Register Buffer Data Sampling (SRBDS)[۳۲][۳۳][۳۴] |
2020-0543 | ایمن | ریزبرنامهسازی | ایمن |
نسل هشتم معماری کافی لیک (به انگلیسی: Coffee Lake) در جدول بالا، به گسترهٔ وسیعی از واحدهای پردازش مرکزی اینتل که پیش از آن منتشر شدهاند هم اعمال میشود و به معماریهای مبتنی بر هستهٔ اینتل، پنتیوم ۴ (به انگلیسی: Pentium 4) و اینتل اتم (به انگلیسی: Intel Atom) با شروع از Silvermont محدود نمیشود.[۳۵][۳۶] گسترهٔ متفاوتی از ریزمعماریهای واحد پردازش مرکزی که در جدول بالا به آنها اشاره نشدهاند هم از این دسته آسیبپذیریها در امان نیستند که از این میان میتوان به پردازندههای آیبیام پاور (به انگلیسی: IBM POWER)، آرم (به انگلیسی: ARM)، میپس (به انگلیسی: MIPS) و دیگر واحدهای پردازش مرکزی اشاره کرد.[۳۷][۳۸][۳۹][۴۰]
یادداشت
[ویرایش]- 1.^ Stepping 5 of the 2nd Generation Intel® Xeon® Scalable Processors based on Cascade Lake microarchitecture is affected by both MSBDS and MLPDS.
منابع
[ویرایش]- ↑ Kocher, Paul; Horn, Jann; Fogh, Anders; Genkin, Daniel; Gruss, Daniel. "Spectre Attacks: Exploiting Speculative Execution" (PDF). Retrieved 2020-04-16.
- ↑ "Engineering New Protections Into Hardware". Intel (به انگلیسی). Retrieved 2019-06-12.
- ↑ ۳٫۰ ۳٫۱ "AMD Product Security | AMD". 2019-08-10. Retrieved 2019-08-10.
- ↑ Cutress, Dr Ian. "The Ice Lake Benchmark Preview: Inside Intel's 10nm". www.anandtech.com. Retrieved 2019-08-01.
- ↑ online, heise. "Intel Core i9-9900K mit 8 Kernen und 5 GHz für Gamer". heise online (به آلمانی). Retrieved 2018-10-09.
- ↑ Cutress, Ian. "AMD Zen 2 Microarchitecture Analysis: Ryzen 3000 and EPYC Rome". www.anandtech.com. Retrieved 2019-06-11.
- ↑ https://developer.amd.com/wp-content/resources/90343-B_SoftwareTechniquesforManagingSpeculation_WP_7-18Update_FNL.pdf
- ↑ "Spectre Returns! Speculation Attacks using the Return Stack Buffer" (PDF). www.usenix.org. Retrieved 2019-08-17.
- ↑ Maisuradze, Giorgi; Rossow, Christian (2018). "ret2spec: Speculative Execution Using Return Stack Buffers". Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. pp. 2109–2122. arXiv:1807.10364. Bibcode:2018arXiv180710364M. doi:10.1145/3243734.3243761. ISBN 978-1-4503-5693-0.
- ↑ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fdf82a7856b32d905c39afc85e34364491e46346
- ↑ ۱۱٫۰ ۱۱٫۱ "Engineering New Protections Into Hardware". Intel (به انگلیسی). Retrieved 2019-04-28.
- ↑ "INTEL-SA-00145". Intel.
- ↑ "Bounds Check Bypass Store (BCBS) Vulnerability (INTEL-OSS-10002)". Intel.
- ↑ "Intel Deep Dive CPUID Enumeration and Architectural MSRs". Intel. Retrieved 2020-01-02.
- ↑ "Bitdefender SWAPGS Attack Mitigation Solutions". www.bitdefender.com. Retrieved 2019-08-07.
- ↑ "Documentation/admin-guide/hw-vuln/spectre.rst - chromiumos/third_party/kernel - Git at Google". chromium.googlesource.com. Archived from the original on 7 August 2019. Retrieved 2019-08-07.
- ↑ Winder, Davey (6 August 2019). "Microsoft Confirms New Windows CPU Attack Vulnerability, Advises All Users To Update Now". Forbes. Retrieved 7 August 2019.
- ↑ "Cyberus Technology: TSX Asynchronous Abort". www.cyberus-technology.de (به انگلیسی). Retrieved 2019-11-12.
- ↑ at 18:02, Shaun Nichols in San Francisco 12 Nov 2019. "True to its name, Intel CPU flaw ZombieLoad comes shuffling back with new variant". www.theregister.co.uk (به انگلیسی). Retrieved 2019-11-12.
- ↑ Cimpanu, Catalin. "Intel's Cascade Lake CPUs impacted by new Zombieload v2 attack". ZDNet (به انگلیسی). Retrieved 2019-11-12.
- ↑ "Intel Deep Dive TSX Asynchronous Abort". Intel (به انگلیسی). Retrieved 2020-01-02.
- ↑ ۲۲٫۰ ۲۲٫۱ "MDS Attacks: Microarchitectural Data Sampling". mdsattacks.com. Retrieved 2020-01-27.
- ↑ ۲۳٫۰ ۲۳٫۱ "IPAS: INTEL-SA-00329". Technology@Intel (به انگلیسی). 2020-01-27. Retrieved 2020-01-28.
- ↑ "CacheOut". cacheoutattack.com. Retrieved 2020-01-29.
- ↑ at 17:00, Thomas Claburn in San Francisco 10 Mar 2020. "You only LVI twice: Meltdown The Sequel strikes Intel chips – and full mitigation against data-meddling flaw will cost you 50%+ of performance". www.theregister.co.uk (به انگلیسی). Retrieved 2020-03-10.
- ↑ "LVI: Hijacking Transient Execution with Load Value Injection". lviattack.eu. Retrieved 2020-03-10.
- ↑ "INTEL-SA-00334". Intel (به انگلیسی). Retrieved 2020-03-10.
- ↑ "Deep Dive: Load Value Injection". software.intel.com. Retrieved 2020-03-10.
- ↑ "Take A Way: Exploring the Security Implications of AMD'sCache Way Predictors" (PDF).
{{cite web}}
: نگهداری CS1: url-status (link) - ↑ March 2020, Paul Alcorn 07. "New AMD Side Channel Attacks Discovered, Impacts Zen Architecture". Tom's Hardware (به انگلیسی). Retrieved 2020-03-07.
- ↑ Alcorn, Paul (March 9, 2020). "New AMD Side Channel Attacks Discovered, Impacts Zen Architecture (AMD Responds)". Tom's Hardware. Retrieved 2020-06-10.
{{cite web}}
: نگهداری CS1: url-status (link) - ↑ "CROSSTalk". VUSec (به انگلیسی). Retrieved 2020-06-09.
- ↑ "Deep Dive: Special Register Buffer Data Sampling". software.intel.com. Retrieved 2020-06-09.
- ↑ "INTEL-SA-00320". Intel (به انگلیسی). Retrieved 2020-06-09.
- ↑ "INTEL-SA-00088". Intel (به انگلیسی). Retrieved 2018-09-01.
- ↑ "INTEL-SA-00115". Intel (به انگلیسی). Retrieved 2018-09-01.
- ↑ "Meltdown and Spectre Status Page". wiki.netbsd.org. Retrieved 2019-09-29.
- ↑ Ltd, Arm. "Speculative Processor Vulnerability | Cache Speculation Issues Update". ARM Developer (به انگلیسی). Retrieved 2019-09-29.
- ↑ "About speculative execution vulnerabilities in ARM-based and Intel CPUs". Apple Support (به انگلیسی). Retrieved 2019-09-29.
- ↑ "Potential Impact on Processors in the POWER Family". IBM PSIRT Blog (به انگلیسی). 2019-05-14. Retrieved 2019-09-29.
پیوند به بیرون
[ویرایش]- Vulnerabilities associated with CPU speculative execution
- A systematic evaluation of transient execution attacks and defenses
- A dynamic tree of transient execution vulnerabilities for Intel, AMD and ARM CPUs
- Transient Execution Attacks by Daniel Gruss, June 20, 2019
- CPU Bugs
- Intel: Refined Speculative Execution Terminology