آسیب‌پذیری اجرای گذرای واحد پردازش مرکزی

از ویکی‌پدیا، دانشنامهٔ آزاد

آسیب‌پذیری‌های اجرای گذرای واحد پردازش مرکزی (به انگلیسی: 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.

منابع[ویرایش]

  1. Kocher, Paul; Horn, Jann; Fogh, Anders; Genkin, Daniel; Gruss, Daniel. "Spectre Attacks: Exploiting Speculative Execution" (PDF). Retrieved 2020-04-16.
  2. "Engineering New Protections Into Hardware". Intel (به انگلیسی). Retrieved 2019-06-12.
  3. ۳٫۰ ۳٫۱ "AMD Product Security | AMD". 2019-08-10. Retrieved 2019-08-10.
  4. Cutress, Dr Ian. "The Ice Lake Benchmark Preview: Inside Intel's 10nm". www.anandtech.com. Retrieved 2019-08-01.
  5. online, heise. "Intel Core i9-9900K mit 8 Kernen und 5 GHz für Gamer". heise online (به آلمانی). Retrieved 2018-10-09.
  6. Cutress, Ian. "AMD Zen 2 Microarchitecture Analysis: Ryzen 3000 and EPYC Rome". www.anandtech.com. Retrieved 2019-06-11.
  7. https://developer.amd.com/wp-content/resources/90343-B_SoftwareTechniquesforManagingSpeculation_WP_7-18Update_FNL.pdf
  8. "Spectre Returns! Speculation Attacks using the Return Stack Buffer" (PDF). www.usenix.org. Retrieved 2019-08-17.
  9. 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.
  10. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fdf82a7856b32d905c39afc85e34364491e46346
  11. ۱۱٫۰ ۱۱٫۱ "Engineering New Protections Into Hardware". Intel (به انگلیسی). Retrieved 2019-04-28.
  12. "INTEL-SA-00145". Intel.
  13. "Bounds Check Bypass Store (BCBS) Vulnerability (INTEL-OSS-10002)". Intel.
  14. "Intel Deep Dive CPUID Enumeration and Architectural MSRs". Intel. Retrieved 2020-01-02.
  15. "Bitdefender SWAPGS Attack Mitigation Solutions". www.bitdefender.com. Retrieved 2019-08-07.
  16. "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.
  17. Winder, Davey (6 August 2019). "Microsoft Confirms New Windows CPU Attack Vulnerability, Advises All Users To Update Now". Forbes. Retrieved 7 August 2019.
  18. "Cyberus Technology: TSX Asynchronous Abort". www.cyberus-technology.de (به انگلیسی). Retrieved 2019-11-12.
  19. 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.
  20. Cimpanu, Catalin. "Intel's Cascade Lake CPUs impacted by new Zombieload v2 attack". ZDNet (به انگلیسی). Retrieved 2019-11-12.
  21. "Intel Deep Dive TSX Asynchronous Abort". Intel (به انگلیسی). Retrieved 2020-01-02.
  22. ۲۲٫۰ ۲۲٫۱ "MDS Attacks: Microarchitectural Data Sampling". mdsattacks.com. Retrieved 2020-01-27.
  23. ۲۳٫۰ ۲۳٫۱ "IPAS: INTEL-SA-00329". Technology@Intel (به انگلیسی). 2020-01-27. Retrieved 2020-01-28.
  24. "CacheOut". cacheoutattack.com. Retrieved 2020-01-29.
  25. 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.
  26. "LVI: Hijacking Transient Execution with Load Value Injection". lviattack.eu. Retrieved 2020-03-10.
  27. "INTEL-SA-00334". Intel (به انگلیسی). Retrieved 2020-03-10.
  28. "Deep Dive: Load Value Injection". software.intel.com. Retrieved 2020-03-10.
  29. "Take A Way: Exploring the Security Implications of AMD'sCache Way Predictors" (PDF).{{cite web}}: نگهداری CS1: url-status (link)
  30. March 2020, Paul Alcorn 07. "New AMD Side Channel Attacks Discovered, Impacts Zen Architecture". Tom's Hardware (به انگلیسی). Retrieved 2020-03-07.
  31. 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)
  32. "CROSSTalk". VUSec (به انگلیسی). Retrieved 2020-06-09.
  33. "Deep Dive: Special Register Buffer Data Sampling". software.intel.com. Retrieved 2020-06-09.
  34. "INTEL-SA-00320". Intel (به انگلیسی). Retrieved 2020-06-09.
  35. "INTEL-SA-00088". Intel (به انگلیسی). Retrieved 2018-09-01.
  36. "INTEL-SA-00115". Intel (به انگلیسی). Retrieved 2018-09-01.
  37. "Meltdown and Spectre Status Page". wiki.netbsd.org. Retrieved 2019-09-29.
  38. Ltd, Arm. "Speculative Processor Vulnerability | Cache Speculation Issues Update". ARM Developer (به انگلیسی). Retrieved 2019-09-29.
  39. "About speculative execution vulnerabilities in ARM-based and Intel CPUs". Apple Support (به انگلیسی). Retrieved 2019-09-29.
  40. "Potential Impact on Processors in the POWER Family". IBM PSIRT Blog (به انگلیسی). 2019-05-14. Retrieved 2019-09-29.

پیوند به بیرون[ویرایش]

  1. Vulnerabilities associated with CPU speculative execution
  2. A systematic evaluation of transient execution attacks and defenses
  3. A dynamic tree of transient execution vulnerabilities for Intel, AMD and ARM CPUs
  4. Transient Execution Attacks by Daniel Gruss, June 20, 2019
  5. CPU Bugs
  6. Intel: Refined Speculative Execution Terminology