رکن چهارم – سامانههای لینوکس، بیاسدی، سولاریس و سایر سامانههای متنباز دارای یک آسیبپذیری ارتقاء امتیاز محلی هستند که این آسیبپذیری «تصادم پشته» نام گرفته است. این آسیبپذیری به مهاجم اجازه میدهد کدهای مخرب خود را با دسترسیِ ریشه اجرا کند.
اکثر توزیعهای لینوکس در حال حاضر این آسیبپذیری را وصله کردهاند دیگر سامانهها نیز باید هرچه سریعتر اقدام به بهروزرسانی کنند. این آسیبپذیری دارای شناسهی CVE-۲۰۱۷-۱۰۰۰۳۶۴ بوده و اگر مهاجم در سامانهی آسیبپذیر حضور داشته باشد، خطرات ناشی از آن بسیار افزایش خواهد یافت. محققان امنیتی اشاره کردند در حال حاضر مهاجمان میتوانند این آسیبپذیری را با اشکالات دیگر، بهطور مثال آسیبپذیری که اخیراً در Sudo کشف شد، ترکیب کرده و بر روی سامانهی آسیبپذیر، دستورات خود را با دسترسیهای سطح بالا اجرا کنند.
این آسیبپذیری در ناحیهی پشته کشف شده که یکی از بخشهای مدیریتی در حافظه است. در سال ۲۰۰۵ و ۲۰۱۰ حملاتی علیه پشته انجام شد که به دنبال آن راهکار حفاظتِ صفحه ارائه شد. در این آسیبپذیری جدید، تلاش میشود این راهکار که در سال ۲۰۱۰ میلادی معرفی شده، دور زده شود.
محققان امنیتی گفتند: «بهرهبرداری اثبات مفهومی که ما توسعه دادیم، باعث میشود از محدودهی پشته خارج شده و به بخشهایی از حافظه دسترسی داشته باشیم که قبلاً نمیتوانستیم کدهای آن را اجرا کنیم.» در زمان طراحی، قابلیتی در پشته در نظر گرفته شده است که میتواند اندازهی پشته را در صورتی که یک برنامه نیاز داشت، گسترش دهد. با اینحال اینک مشاهده میکنیم که این ویژگی یک تهدید امنیتی محسوب میشود.
محققان در مشاورهنامهی این آسیبپذیری اشاره کردند: «اگر اشارهگر پشته مربوط به یک پردازه بتواند از بخش حمله به ناحیهی دیگری از حافظه بدون وقوع خرابیِ صفحه حرکت کند، در ادامه پردازه میتواند از این بخش از حافظه نیز بهعنوان بخشی از گسترهی پشته استفاده کند. مهاجم میتواند در این بخش اضافی از پشته بنویسد و نواحی حافظهای جانبی را درهم بشکند و یا اینکه در بخشهای دیگری از حافظه نوشته و باعث درهم شکستن بخش افزودهشدهی پشته بشود.
فرض بر این است که راهکار حفاظتِ صفحه جلوی چنین شرایطی را با استفاده از صفحات نگاشتنشده در پایین و ابتدای پشته میگیرد و در صورت دسترسی به این نواحی، وقفه و استثناء رخ میدهد و یا پردازه با خطای SIGSEGV خاتمه مییابد. محققان امنیتی گفتند: «متأسفانه حفاظتِ صفحه در حد چند کیلوبایت کافی نیست. اگر اشارهگر پشته بتواند به مکانی جلوتر از حفاظتِ صفحه پرش کند، دیگر هیچ استثنائی مبنی بر وقوع خرابیِ صفحه صادر نشده و پشته به نواحی دیگری از حافظه گسترش مییابد.»
این شرکت امنیتی هنوز بررسی نکرده که آیا این آسیبپذیری از راه دور نیز قابل بهرهبرداری است یا خیر. محققان امنیتی گفتند: «ما در بررسیهای خودمان تنها یک برنامه را تجزیه و تحلیل کردیم و تمرکز اصلی ما بر روی ارتقاء امتیاز محلی بود. مسلماً ممکن است برنامههای راه دور نیز دارای این آسیبپذیری باشند و از راه دور نیز بتوان از آن بهرهبرداری کرد.»
در مشاورهنامهی این آسیبپذیری اشاره شده، کد اثبات مفهومی که توسعه داده شده است، از ۴ مرحلهی پشت سرهم تشکیل شده که در این فرآیند، باید تخصیص حافظه بهشکلی صورت گیرد که تا زمان اتمام عملیات، این حافظه آزاد نشود. این ۴ مرحله عبارتند از: تصادم پشته با نواحی دیگر حافظه، اجرای اشارهگر پشته به بخش ابتدایی پشته، پرش از روی قسمت حفاظتِ صفحه و درهم شکستن پشته و یا نواحی دیگر حافظه.
محققان امنیتی توصیه کردند تا زمانیکه وصلههایی بهطور کامل برای این آسیبپذیری منتشر شود، حتماً اندازهی بخش حفاظتِ صفحه را حداقل تا ۱ مگابایت افزایش دهیم. آنها همچنین پیشنهاد کردند برای جلوگیری از حرکت اشارهگر پشته به نواحی دیگر حافظه، تمامی کدهای ناحیهی کاربر با گزینهی fstack-check مجدداً کامپایل شوند. محققان این آسیبپذیری را با درجهی اهمیت بالا در نظر گرفتند و اعلام کردند با زنجیرهای از آسیبپذیریها، مهاجم میتواند از یک کاربرِ خارجی به ریشه تبدیل شود.