اسپکتر (آسیب‌پذیری امنیتی)
سازوکار

اسپکتر یک آسیب است که یک برنامه را جهت دسترسی به محل‌های دلخواه در فضای حافظه برنامه ترغیب می‌نماید. یک مهاجم ممکن است محتوای حافظه در دسترس را بخواند و سپس به‌طور بالقوه توانایی دسترسی به داده‌های حساس را داشته باشد.
علی‌رغم یک آسیب‌پذیری با اصلاح ساده، اسپکتر کاغذ سفید یک کلاس کامل از آسیب‌پذیری‌های بالقوه است. تمام این آسیب‌پذیری‌ها بر اساس استفاده از اثرات جانبی ناشی از اجرای سوداگرانه، ابزارهای متداول پنهان کردن حافظه و بالا بردت سرعت اجرا در ریزپردازندههای مدرن هستند. به ویژه، مراکز اسپکتر پیش‌بینی انشعاب، که یک مورد خاص از اجرای سوداگرانه است. بر خلاف آسیب‌پذیری مربوط به ملتداون که در همان زمان آشکار شد، اسپکتر به مشخصات خاصی از سیستم مدیریت و حفاظت از حافظه یک پردازنده تکیه نمی‌کند، بلکه آن یک ایده کلی تر است.
نقطه آغاز کاغذ سفید حمله زمانبندی کانال جانبی است که در ماشین‌های پیش‌بینی انشعاب در میکروپروسسورهای مدرن با قابلیت اجرای خارج از نوبت استفاده می‌شود. در حالی که در سطح معماری ثبت شده در کتاب‌های پردازنده داده که، هرگونه نتیجه نادرست تشخیص داده شده جهت حذف کردن پس ازاین واقعیت، اجرای سوداگرانه ای که حاصل می‌شود ممکن است همچنان مانند خطوط حافظه پنهان بارگذاری و تأثیرات جانبی را به همراه داشته باشد و در نتیجه می‌توانند بعدها بر جنبه‌های غیر کاربردی محیط محاسبات تأثیر بگذارند. اگر چنین تأثیرات جانبی وجود داشته ولی محدود به زمان دسترسی به حافظه نباشند، برای یک برنامه مخرب قابل مشاهده است، و می‌توان آن را طوری مهندسی کرد تا به داده‌های حساس نگه داشته شده توسط فرایند قربانی بستگی داشته باشند، سپس این اثرات جانبی می‌توانند منجر به تشخیص داده‌های حساس شوند. این اتفاق می‌تواند با وجود ترتیبات رسمی امنیتی در سطح معماری که به صورت طراحی شده کار می‌کنند رخ دهد. در این مورد، کاهش، بهینه‌سازی سطح ریز معماری در اجرای کد (می‌تواند) اطلاعات غیر ضروری جهت صحت اجرای برنامه عادی را نشت دهد.
مقاله اسپکتر یک حمله را در چهار مرحله اصلی ارائه می‌دهد:
مرحله اول، نشان می‌دهد که منطق پیش‌بینی انشعاب در پردازنده‌های مدرن می‌تواند جهت موفقیت یا شکست قابل اعتماد بر اساس کارکرد داخلی یک برنامه مخرب آموزش داده شود.
در ادامه، تفاوت متعاقب بین موفقیت‌ها و خطاهای حافظه پنهان را می‌توان به صورت قابل اطمینانی زمان‌بندی کرد، بنابراین آنچه که باید یک تفاوت غیرکاربردی ساده باشد، در واقع می‌تواند به یک کانال مخفی تبدیل شود که اطلاعات را از عملکردهای داخلی یک فرایند غیر مرتبط استخراج کند.
سومین مرحله، مقاله نتایج را با استفاده از برنامه‌نویسی بازگشتی و سایر اصول با یک نمونه برنامه ساده و یک قطعه کد جاوا اسکریپت که تحت یک مرورگر sandboxing اجرا می‌شود، ترکیب می‌کند. در هر دو مورد، کل فضای آدرس فرایند قربانی (به عبارتی محتویات یک برنامه در حال اجرا) به سادگی با سوء استفاده از اجرای سوداگرانه انشعابات شرطی در کد تولید شده توسط یک مفسر موجود یا ابزارهای جاوا اسکریپت موجود در یک مرورگر موجود قابل خواندن است. ایده اصلی این است که کدهای موجود را در مکانهایی جستجو کنید که حدس جهت دست یابی به داده‌های غیرقابل دسترسی وجود دارد، دستکاری پردازنده در وضعیتی که اجرای سوداگرانه مجبور شود با آن داده تماس پیدا کند و سپس زمان اثر جانبی پردازنده را اگر دستگاه‌های آماده پیش ساخته آن واقعاً خط حافظه نهان را بارگیری کرده باشند، تسریع نماید.
سرانجام، مقاله با تعمیم حمله به هر وضعیت غیرعملی فرایند قربانی نتیجه‌گیری می‌نماید. به‌طور خلاصه حتی در مورد اثرات غیر کاربردی و مبهم مانند تأخیر در داوری خط باس بحث می‌شود.
تفاوت اساسی بین اسپکتر و ملتداون در این است که می‌توان از اسپکتر برای دستکاری یک فرایند جهت آشکارسازی داده‌های خود استفاده کرد. از طرف دیگر، از ملتداون می‌توان برای خواندن حافظه ممتاز در فضای آدرس فرایند استفاده کرد که حتی خود این فرایند نیز قادر به دستیابی به آن نیست (در برخی از سیستم عامل‌های حافظت نشده این امر شامل داده‌های متعلق به هسته یا سایر فرایندها می‌باشد).
مقاله ملتداون دو آسیب‌پذیری را از این رو مشخص می‌نماید: ملتداون به طرق متفاوتی از حملات اسپکتر متمایز است، بویژه این که اسپکتر نیاز به انطباق در محیط نرم‌افزار فرایند قربانی دارد، اما بطور گسترده‌تری برای پردازنده‌ها اعمال می‌شود و توسط KAISER کاهش نمی‌یابد."