مشکل امنیتی جدی در ویندوزهای حتی آپدیت شده: اتم‌بُمبینگ

atombombing

آپدیت: کامنت ها رو هم بخونین. بعضی ها می گن این مساله به خاطر رسانه ها بزرگ نمایی شده و از اونی که هست خطرناکتر نشون داده شده

سه روز هم از مشکل حاد امنیتی لینوکس با عنوان گاو کثیف که با آپدیت حل می شد نگذشته که مشکلی پیچیده‌تر در ویندوز نشون داده شده؛ اینبار ظاهرا غیرقابل حل با آپدیت‌های فعلی: اتم بمبینگ یا همون AtomBombing.

محققین امنیتی تکنیکی رو نشون دادن که حمله کننده می‌تونه کد مخربش رو در ویندوزهای مختلف (حتی ده آپدیت آخر) تزریق کنه بدون اینکه ابزارهای معمول آنتی ویروس بتونن چیزی تشخیص بدن. مشکل اصلی اینجاست که این مساله مربوط به یک باگ خاص نیست که بشه حلش کرد بلکه ظاهرا معماری اشتباه باعث این مساله شده.

حمله از طریق جدول‌های اتم (Atom Tables) اتفاق می‌افته؛ قابلیتی که ویندوز به برنامه‌ها می‌ده تا اطلاعات مربوط به رشته‌های کاراکتری، آبجکت‌ها و بقیه انواع داده‌ رو ذخیره کنن و بهشون دسترسی داشته باشن. این جدول‌ها مشترک هستن و همه برنامه‌ها بهشون دسترسی پیدا می‌کنن (برای اطلاعات بیشتر وبلاگ مایکروسافت رو بخونین).

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

چنین حمله‌ای می تونه در شکل های دیگه باعث حملات مرد میانی، اسکرین شات گرفتن از صفحه دسکتاپ یوزر و دسترسی به پسوردهای ذخیره شده توی براوزر بشه.

در حال حاضر همه نسخه‌های ویندوز نسبت به این مساله آسیب پذیر هستن و به گفته لیبرمن

متاسفانه این مساله قابل پچ نیست چون مشکل در یک باگ نرم افزار یا کد اشتباه نیست – این مساله به خاطر شیوه طراحی سیستم عامل پیش اومده.

که البته امیدوارم مایکروسافت سریعا راه حلی براش پیدا کنه.

آیا نگران باشیم؟

بله ولی در عمل نمی‌تونیم کاری بکنیم. مطمئنا کسی به شما پیشنهاد نمی ده در این لحظه به لینوکس سوییچ کنین ولی خب در نهایت .. چه می دونم. راستش توصیه من به یک آدم معمول در جهان اینه که «نگران نباشین، زندگی همینه». اگر یک آدم مرسوم در دنیا هستین، منتظر بشین ببینین شرکت های بزرگ چه می کنن به زودی.

  • نگرانی آدم‌های معمولی (که از قرار حدود ۹۴٪ کل کاربران – نقل از netmarketshare) شاید با انتظار از طرف شرکت‌های بزرگ حل شه‌، اما بی‌خیالی دولت‌ها و نهاد‌هاشون چی؟ نکتهٔ وحشتناک‌ترش اینه که این مشکل از نسخه‌های قدیمی ویندوز وجود داره‌، و شاید خیلی قبل‌تر از این گزارش امنیتی پیدا شده باشه…

  • Hossein

    به نظرم این توضیح یکی از کارشناسان سنس توضیح مناسبی برای این موضوعه https://isc.sans.edu/forums/diary/Windows+Atom+Bombing+Attack/21651/

  • Saeed Bahmanian

    درود
    شوربختانه برای ویرایشگران تصویر راه لینوکسی وجود نداره و بیشتر راه‌ها به ویندوز می‌رسه.
    این مشکل رو ضد ویروسها نمی‌تونن پوشش بدن؟
    و مدتهاست منتظر ام چیزی درباره‌ی سربر و باج‌افزارها بنویسی.

  • س

    سلام
    متاسفانه اگر گزارش اصلی را دقیق بخوانید متوجه می‌شوید که اصلا باگ نیست و «مشکل امنیتی» هم نیست. طبیعتا هیچ نیازی به پچ ویندوز هم نیست.
    حقیقتش از دید من که در زمینه امنیت کار کردم کسی که این به قول خودش روش حمله را کشف کرده اصلا درک درستی از الفبای امنیت هم نداشته است: اینکه یک user پردازه‌ای که خودش اجرا کرده را تغییر دهد در همه سیستم عامل‌ها (منجمله لینوکس و …) مجاز و بی‌خطر است.

    گزارش سنز که دوستمان لینک دادند رفرنس خوبی است که بخوانید و متوجه شوید که – برخلاف باگ خطرناک لینوکس که پچ شده – این اتم‌بمبینگ هیچ مجوزی را دور نمی‌زنه، منجر به Privilege Escalation و Code Execution و … نمی‌شه و هیچ خطری هم ایجاد نمی‌کنه.

    • jadijadi

      چقدر خوب بود اگر توضیح دقیقتری می دادی برامون. خب در جایی هم از پریویلج اسکلیشن و اینها حرف نزدیم. صحبت اینه که یک کد مخرب می تونه کدش رو تزریق کنه مثلا توی براوزر. درسته؟ و خب این اون خطراتی که گفته شد رو ایجاد می کنه مثلا مرد میانی یا اسکرین شات یا اجرای برنامه توی براوزر و … و راه حلی هم نداره. این که مشکل امنیتی هست، نیست؟ (:

      خوشحال می شدم بگی کجای متن در واقع اشتباه است تا اضافه کنم به متن اصلی. اینکه دسترسی رو نمی شه بالا برد و اینها کاملا قابل قبوله ولی اینکه می شه کد اینجکت کرد و .. به نظرم طرف نشون داده که کرده.

      • س

        جادی جان کافی بود گزارش سنز را که گفتم بخوانی تا نیاز به توضیح من نباشه. (همون لینک حسین: https://isc.sans.edu/forums/diary/Windows+Atom+Bombing+Attack/21651/ )
        البته من هم تا جایی که تونستم توضیح دادم ولی ظاهرا کافی نبوده.
        اما برای تکمیل:
        تزریق کد در براوزری که خود کاربر اجراش کرده توسط خود کاربر مشکل امنیتی نیست. اسکرین شات گرفتن از صفحه کاربر توسط خودش مشکل امنیتی نیست.
        مشکل امنیتی زمانیه که من بتونم کد را داخل پردازه یک کاربر دیگر (یا یک سرویس با سطح دسترسی بالاتر) تزریق کنم.
        شما اگه دقت کنی لینوکس هم همینطوریه: مثلا هر برنامه‌ای که اجرا کرده باشی را می‌تونی دیباگ کنی و اطلاعات حافظه‌اش را بخوانی یا تغییر بدی. حالا این شد مشکل امنیتی جدی در لینوکس‌های حتی آپدیت شده؟
        مثلا از این طریق می‌توان به براوزر خودت کد اینجکت کنی و اطلاعات خودت را سرقت کنی. یا از صفحه اسکرین شات بگیری یا حمله مرد میانی روی خودت اجرا کنی!!
        این دقیقا کاریه که این محقق باهوش موفق شده انجام بده: حمله به خودش! و حمله‌ای که توصیف کرده به هیچ عنوان قادر به دور زدن هیچ مکانیزم امنیتی‌ای نیست.

        جاهای غلط در متن شما: جدول اتم هر کاربر مجزاست. به علاوه جهت حمله از تابع NtQueueApcThread استفاده شده که اصلا مخصوص اجرای کد APC در یک thread دیگر است (لینوکس هم معادل این تابع را داره) و کاملا چک می‌کنه که شما اجازه دسترسی به آن thread را دارید یا نه.

        البته من کمی هم دلخور شدم چون احساس کردم انتشار این متن از طرف شما بیشتر به خاطر کم اهمیت جلوه دادن باگ خطرناک لینوکس (گاو کثیف) بوده. اون باگ واقعی است و در خیلی از جاها غیرقابل پچ (مثل گوشی اندروید من یا مودم من یا … که آپدیت نمیاد براشون)
        این البته احساس من در مورد این متن هست، ولی این نکته را در مقاله‌ای که در مورد گاو کثیف نوشته بودی (نگران نباشید، پچ کنید) می‌شود به وضوح دید. یکی از خطرناکترین باگ‌های لینوکس را با مفهوم نگران نباشید بهش نگاه می‌کنی و اگر باگی در ویندوز باشه (یا اشتباها به نظر بیاد که باگه!) با چشم رسیدن دنیا به آخر.
        این را صرفا جهت تلنگری می‌گم که کمی فکر کنی و ببینی استانداردهات دوگانه نباشند و تبعیض قائل نشده باشی!

  • ExGen

    به هیچ وجه قبول ندارم
    جالبه که چقدر سریع اینجور اخبار گسترش پیدا میکنه. این روش تنها متد جدیدیه برای انتقال کد مخرب به پروسس های دیگه که بعد از اون این اطلاعات باید اجرا بشن تا نفوذ انجام بشه.
    حالا نکته اینجاست که در این ریسرچ برای اجرای کد مخرب از تکنیک NtQueueApcThread استفاده میشه که اصلا چیز جدیدی نیست و اکثر آنتی ویروس ها اونرو مانیتور میکنن
    درسته که انتقال اطلاعات مخرب به پروسس های دیگه چیز بدیه ولی به تنهایی کافی نیست. خیلی راه های دیگه وجود داره که این کد مخرب وارد برنامه مورد نظر بشه که بعضی از اونها هم حتی آسون تر هستند
    با توجه به نکات بالا و این نکته که ادعا شده مشکل ساختاری ویندوز باعث چنین مشکلی شده فکر میکنم محققان انسیلو در سطح متوسطی در این زمینه هستند و ترجمه مطلبشون و اونهم با این اشتیاق بیفایدست

  • romic soliny

    If you have write access to (the virtual memory of) another process you can create a remote thread there or issue an ALPC.
    Since Windows only grants access to other processes of your own userid you gain NOTHING: instead of this rather clumsy double indirect code execution you can run the shellcode direct in you own process!

    JFTR: instead of an atom string you can also use a registry entry, a (named) pipe, a mailslot, shared memory (for example the buffer used by OutputDebugString()), environment variables etc. to transfer a string from one process into another.

  • Pingback: حل مشکل آسیب پذیری گاو کثیف در سرورهای اوبونتو و دبیان – اخبار جدید سرگرمی جدید()

  • Pingback: حل مشکل آسیب پذیری گاو کثیف در سرورهای اوبونتو و دبیان - دسرآ()