هرچیزی که لازمه در مورد «۲۸ بار بک اسپیس» بدونین

این روزها همه دارن از باگ ۲۸ تا بک اسپیس‌ حرف می‌زنن. باگی بعضی‌ها می‌نویسن اجازه می‌ده به هر لینوکسی دسترسی پیدا کنین. هر چقدر هم نویسند‌ه‌ای از منطق و لینوکس دورتر باشه، خطرات بزرگتری رو براش قائل می‌شه. این باگ اولین توسط اسماییل ریپول و هکتور مارکو کشف شده و اینجا نگاهی دقیق داریم به اجزاش برای کسانی که دوست دارن بدونن واقعا ماجرا چی بوده و چه عواقبی داره.

آیا باگ واقعا وجود داشته؟

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

باگ ۲۸ تا بک اسپیس چی بوده؟

این باگ وقتی کار می‌کرده که شما گراب داشته باشین و روی گراب پسورد گذاشته باشین. اتفاقی که خیلی کم می‌افته. گفته می‌شه در وضعیتی که قراره گراب از شما پسورد بپرسه، ۲۸ بار بک اسپیس رو بزنین سیستم کرش می‌کنه و شما به خط فرمانی می‌رین که دستورات بسیار محدودی داره که به منظور تعمیر سیستم گراب یا بوت کردن سیستم عامل‌هایی که روی کامپیوتر نصب شده تعبیه شده‌اند.

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

آیا هکرها به هر لینوکسی دسترسی پیدا کردن؟

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

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

  2. عدم درک دنیای لینوکس و ویندوز و امنیت. اصولا این باگ داره در لایه‌ قبل از بوت شدن لینوکس اتفاق می‌افته و از طریق دسترسی فیزیکی. یک اصل خیلی خیلی مهم در دنیای امنیت هست که هیچ وقت نباید فراموشش کنین! این اصل می‌گه لایه اول امنیت،‌ امنیت فیزیکی است. در دنیای امنیت می‌گن اگر حمله کننده به «فیزیک» دستگاه مورد حمله دسترسی داشته باشه، صحبت کردن از هر شکل دیگه امنیت بی‌معنی است. این باگ – که خیلی هم ضایع بوده – به شما اجازه می‌داده که به هارد کامپیوتری که بهش دسترسی فیزیکی دارن دسترسی پیدا کنین. این مساله در همه سیستم‌های دیگه هم صادقه. اگر شما دسترسی فیزیکی دارین اصولا نیازی به این باگ نیست، کافیه هارد رو در بیارین و توی یک کامپیوتر دیگه بذارین یا با یک یو اس بی دیسک لایو یا یک سی دی لایو کامپیوتر رو بوت کنین یا هر روش دیگه. در این سطح تنها بحث امن کننده اطلاعات شما می‌تونه رمزنگاری باشه ولی سخت افزار رو هیچ چیز نمی‌تونه از حملات فیزیکی حفاظت کنه.

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

جمع بندی

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

  • بهزاد

    تازه اگه کسی پسورد گراب رو رد کنه و موفق بشه سیستم رو بوت کنه برای لاگین باز به پسورد نیاز داره معمولا. درست نمیگم؟

    • jadijadi

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

      • میثم

        البته همونطور که خودت گفتی توی مطلب راه حلش encrypt کردن اطلاعات هستش که توی ویندوز۷ به بعد به راحتی با bitlocker قابل انجام و در دسترس هست. ولی خوب اصولا تجربه نشون داده آدما حافظه خوبی توی بخاطر سپردن پسووردهاشون ندارن مخصوصا اگه زمانی نسبتا طولانی مجبور به استفاده ازش نباشن و خوب ادامه داستان هم معلومه….

    • اگه بتونه کامندی که برای بوت کرنل استفاده میکنه رو ادیت کنه، نه.
      معمولا یه init=/bin/bash تهش بذاری میفرستت تو شل سینگل یوزر با دسترسی روت.

      منتها مساله اینه که تو دسترسی فیزیکی اگه داشته باشی دیگه تمومه. مگه اینکه همه چی رو رمزگذاری کنی.

  • Mahyar Pasar Zangene

    جادی جان ویندوز هم بوت لودر داره که اسمش NTLDR هست اگر بوت سکتور مناسب رو بهش بدی سیستم عامل غیر ویندوز هم لود می کنه از ویندوز ان تی به بعد تا همین ویندوز ۱۰ ماکروسافت از NTLDR استفاده می کنه

    • میثم

      تاجایی که من میدونم ntldr فقط برای ویندوز ۲۰۰۰ و xp بود وبعدش با اومدن ویستا بوت لودر ویندوز شده BCD تاحالا

      • jadijadi

        ممنون اصلاح می کنم.

    • jadijadi

      ممنون. اصلاح می کنم

  • parsa

    سلام

  • Ahmad Shadifar

    من امروز بعد از مدت ها روی لپتاپم به ویندوز 7 ی که نصب بود لاگین کردم و بعد از آپدیت به ویندوز 10 موقع بوت شدن به صورت پیش فرض رفت روی لینوکس.
    خیلی برام جالب بود که کامند لاین روت جلوم بود. دلیلش هم عدم مونت شدن پارتیشن ویندوز به خاطر فست بوت ویندوز بود.
    یکمی خیلی ضایع بود که دسترسی روت بدون زدن پسورد داده.
    من از اوبونتو 15.10 استفاده میکنم.روی 14.04 هم تست کردم .. همینطوری بود. در ضمن به روزرسانی هم کردم.
    این رو کسی تاحالا برخورد و رفع کرده؟!

    • jadijadi

      کامند روت نبوده احتمالا. کامند لاین گراب بوده که می گفته بیا تعمیر کن سیستم رو چون من سیستم عامل رو نمی بینم. ls /etc یا چنین چیزی می تونه مشخص کنه یا دو بار تب زدن.

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

    اگر پارتیشن‌ها رمزنگاری شده باشن که به این راحتی نمیشه. درسته؟ فقط با دونستن رمز میشه به اطلاعات دسترسی پیدا کرد و در صورت قوی بودن رمز و الگوریتم رمزنگاری دسترسی فیزیکی کمکی نمی‌تونه بکنه.

  • راستی در مورد UEFI هم میگفتی. لینوکس من با UEFI بوت میشه و اصلا GRUB نداره. الان هم که بیشتر سیستم‌ها پشتیبانی میکنن و اگر اشتباه نکنم بهتر و پیشنهاد شده تر از MBR هست پس مثلا سیستم من که لینوکس هم هست به هیچ شکل شامل این باگ نمیشه.

  • حسین

    میشه در مورد عکس پست توضیح بدی

    • jadijadi

      این باگ به یک بخش خنده دار از کد مربوط می شه که توش نوشته شده:

      if (key == 'b') // Does not checks underflows !!
      {
      cur_len--; // Integer underflow !!
      grub_printf ("b");
      continue;
      }

      می بینی که بدون چک کردن آندرفلو داریم متغیر رو کم می کنیم و یک کد رو جابجا می کنیم. توضیحات اصلی رو توی لینکی که دادم بخون ولی این داره می گه وقتی ۲۷ بار بک اسپیس می زنیم، چه اسمبلی ای برای اجرا توی حافظه برای اجرا شکل می گیره.

  • روزبه گرجی‌بیانی

    خیلی ممنون جادی عزیز!
    برای من که اطلاعی از کُنه موضوع نداشتم، بسیار مفید و قابل استفاده بود و در چند کانال تلگرامی به اشتراک گذاشتم.
    اما یک موضوع کوچک با عنوان مطلبت دارم. عناوینی با الگوی «هرچیزی که لازم است در مورد […] بدانید.»، خصوصاً با توجه به فضای تن‌آسایی که کوته‌مقالات یا استاتوس‌های فضای سایبر در ما انسان‌ها به‌وجود آورده، محدودکننده است. مرجع تشخیص «لزوم»، کی یا چی هست؟ و آیا مطلبی با این تعداد کلمات (صرف نظر از مختصر و مفید بودنش) می‌تونه چنان جامع و مانع باشه که مشمول توصیف «هرچیزی» بشه؟
    خلاصه بهانه دست ماهایی که منتظریم بگیم حالا دیگه همه چیز رو در مورد مطلبی می‌دونیم و از این به‌بعد بدون نیاز به مطالعه بیش‌تر و تحلیل روی موضوع، هر جایی در موردش می‌تونیم بریم بالای منبر، نده!

    • jadijadi

      کاملا درسته روزبه. درست بعد از انتشار خودم هم به این فکر کردم ولی دیگه چون منتشر شده بود،‌ عوض کردن تیتر معقول نبود (آدم ها روی یک تیتر کلیک می کنن بعد می رسن به یک مطلب با یک تیتر دیگه). این شد که بیخیال شدم. ولی موافقم کاملا.

  • Pingback: رادیو گیک شماره ۵۹ – ماشین بزن منو بکش راحتم کن! | کیبرد آزاد()