MSCTF

یک محقق امنیتی گوگل به‌تازگی جزئیاتی از آسیب‌پذیری بی‌سابقه ۲۰ ساله را که روی همه نسخه‌های مایکروسافت ویندوز از ویندوز ایکس پی گرفته تا آخرین نسخه ویندوز ۱۰ تأثیر می‌گذارد، فاش کرده است.

این آسیب‌پذیری در روشی قرار دارد که مشتریان و سرورهای MSCTF با یکدیگر ارتباط برقرار می‌کنند، حتی به یک برنامه دارای سطح دسترسی پایین یا یک برنامه sandboxed اجازه می‌دهد داده‌ها را در یک برنامه دارای سطح دسترسی بالاتر بخواند و بنویسد.

MSCTF یک ماژول در (۱)TSF سیستم‌عامل ویندوز است که مواردی مانند روش‌های ورودی، layout صفحه‌کلید، پردازش متن و تشخیص گفتار را مدیریت می‌کند.

در یک nutshell، هنگامی‌که به سیستم دارای سیستم‌عامل ویندوز خود وارد می‌شوید، سیستم یک سرویس مانیتور CTF را راه‌اندازی می‌کند که به‌عنوان یک مرجع اصلی برای برقراری ارتباط بین کلیه مشتری‌ها کار می‌کند، که درواقع ویندوز برای هر فرآیند در همان جلسه اجرا می‌کند.

این محقق دراین‌باره توضیح می‌دهد: “شما ممکن است متوجه سرویس ctfmon در task manager شده باشید، این سرویس مسئول اطلاع‌رسانی به برنامه‌ها در مورد تغییرات در layout صفحه‌کلید یا روش‌های ورودی است. کرنل، برنامه‌ها را مجبور می‌کند تا هنگام شروع کار به سرویس ctfmon وصل شوند و سپس با سایر مشتری‌ها تبادل پیام کنند و از سرویس اخطارها را دریافت کنند.”

Tavis Ormandy از تیم Zero Project Google کشف کرد[۱] که ازآنجاکه هیچ کنترل دسترسی یا هیچ نوع تصدیق هویتی برای این تعامل وجود ندارد، هر برنامه، کاربر و حتی فرآیندهای sandboxed می‌توانند:

  • به جلسه CTF متصل شوند.
  • متن هر پنجره از هر جلسه‌ای را بخوانند و بنویسند.
  • شناسه آن‌ها، شناسه پردازش و HWND را جعل کنند.
  • به‌عنوان سرویس CTF خود را جا بزنند، برنامه‌های دیگر، حتی برنامه‌های دارای سطح دسترسی بالا را برای اتصال به خود فریب دهند.
  • فرار از sandbox ها و افزایش سطح دسترسی

Ormandy در پست وبلاگ منتشرشده در تاریخ ۱۳ اوت ۲۰۱۹ گفت[۲]: “کنترل دسترسی در CTF وجود ندارد، بنابراین می‌توانید به یک جلسه فعال کاربر دیگر متصل شوید و هر برنامه‌ای را تحت کنترل خود بگیرید، یا منتظر شوید که یک ادمین وارد شود و جلسه خود را در معرض خطر قرار دهد.”

“معلوم می‌شود که نزدیک به بیست سال این امکان وجود داشته است که به جلسات دسترسی داشت و مرزهای امنیتی NT را نقض کرد بدون آنکه کسی متوجه شود.”

در صورت بهره‌برداری، ضعف در پروتکل CTF می‌تواند به مهاجمان اجازه دهد تا به‌راحتی UIPI(2) را دور بزنند و به یک فرآیند بدون داشتن سطح دسترسی بالا اجازه دهد تا:

  • متن حساس را از هر پنجره‌ای از برنامه‌های دیگر بخواند، ازجمله کلمات عبور خارج از کادرهای گفتگو(۳) را
  • سطح دسترسی بالا به دست آورد.
  • کنترل UAC consent dialog را در اختیار گیرد.
  • دستورات را به جلسه کنسول ادمین ارسال کند.
  • با ارسال ورودی به پنجره‌های بدون sandbox، از IL/AppContainer sandboxe فرار کند.

Ormandy همچنین ویدئوی اثبات ادعای خود را منتشر کرده است که نشان می‌دهد چگونه می‌توان از این موضوع برای به دست آوردن افزایش سطح دسترسی در ویندوز ۱۰ بهره‌برداری کرد[۳و۴].

علاوه بر این، پروتکل CTF دارای نقص‌های فساد حافظه(۴) زیادی است که طبق گفته این محقق، می‌توان از آن در پیکربندی پیش‌فرض بهره‌برداری کرد.

Ormandy دراین‌باره می‌گوید: “حتی بدون این اشکالات، پروتکل CTF به برنامه‌ها اجازه می‌دهد تا ورودی را تبادل کرده و مطالب یکدیگر را بخوانند. بااین‌وجود، بسیاری از اشکالات پروتکل وجود دارد که امکان کنترل کامل تقریباً هر برنامه دیگر را فراهم می‌کنند. جالب است بدانید که چگونه مایکروسافت تصمیم می‌گیرد این پروتکل را مدرن کند.”

این محقق همچنین یک CTF Exploration Tool منبع باز و سفارش را در Github منتشر کرده است[۵] که وی برای کشف بسیاری از مسائل مهم امنیتی در پروتکل CTF ویندوز توسعه داده و از آن استفاده کرده است.

Ormandy مسئولانه یافته‌های خود را در اواسط ماه می ۲۰۱۹ به مایکروسافت گزارش داد و پس از عدم موفقیت مایکروسافت در ظرف ۹۰ روز از ابلاغ آن‌ها به‌منظور انتشار وصله‌ی مناسب برای آن، جزئیات این آسیب‌پذیری را برای عموم فاش کرد.

منابع

[۱] https://bugs.chromium.org/p/project-zero/issues/detail?id=1859

[۲] https://googleprojectzero.blogspot.com/2019/08/down-rabbit-hole.html

[۳] https://youtu.be/r3vrzzDpmhc

[۴] https://youtu.be/quenNNqoDBs

[۵] https://github.com/taviso/ctftool

[۶] https://thehackernews.com/2019/08/ctfmon-windows-vulnerabilities.html


(۱) Text Services Framework
(۲) User Interface Privilege Isolation
(۳) dialog boxes
(۴) memory corruption