بستن آگهی

چند روز پیش اپل صدمین را منتشر کرد آپدیت iOS 7.0.6، انتشار آن را به اطلاع شما رساندیم. شاید خیلی ها تعجب کرده باشند که این به روز رسانی برای iOS 6 قدیمی (نسخه 6.1.6) و Apple TV (نسخه 6.0.2) نیز منتشر شده است. این یک وصله امنیتی است، بنابراین اپل نمی تواند تنها بخشی از دستگاه های خود را به روز کند. علاوه بر این، این مشکل بر سیستم عامل OS X نیز تاثیر می گذارد. به گفته سخنگوی اپل، ترودی مولر، به روز رسانی OS X در اسرع وقت منتشر خواهد شد.

چرا این همه تبلیغات پیرامون این به روز رسانی وجود دارد؟ یک نقص در کد سیستم اجازه می دهد تا تأیید سرور در انتقال ایمن در لایه رابطه ای مدل مرجع ISO/OSI دور زده شود. به طور خاص، خطا اجرای بد SSL در بخشی است که تأیید گواهی سرور انجام می شود. قبل از اینکه به توضیح بیشتر بپردازم، ترجیح می دهم مفاهیم اساسی را شرح دهم.

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

حالا به طور خلاصه به گواهی سرور می رسم. در زندگی واقعی، گواهی شما می تواند مثلاً یک کارت شناسایی باشد. همه چیز بر اساس رمزنگاری نامتقارن است، جایی که هر موضوع دارای دو کلید است - خصوصی و عمومی. تمام زیبایی در این واقعیت نهفته است که پیام را می توان با کلید عمومی رمزگذاری کرد و با کلید خصوصی رمزگشایی کرد. این بدان معنی است که فقط صاحب کلید خصوصی می تواند پیام را رمزگشایی کند. در عین حال، هیچ نگرانی در مورد انتقال کلید مخفی به هر دو طرف ارتباط وجود ندارد. سپس گواهی، کلید عمومی موضوع است که با اطلاعات آن تکمیل شده و توسط مرجع صدور گواهینامه امضا می شود. در جمهوری چک، یکی از مراجع صدور گواهی، برای مثال، Česká Pošta است. به لطف گواهی، آیفون می تواند تأیید کند که واقعاً با سرور داده شده در ارتباط است.

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

static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa,
SSLBuffer signedParams, uint8_t *signature, UInt16 signatureLen)

{
   OSStatus err;
   …

   if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
       goto fail;
   if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
       goto fail;
       goto fail;
   if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
       goto fail;
   …

fail:
   SSLFreeBuffer(&signedHashes);
   SSLFreeBuffer(&hashCtx);
   return err;
}

در شرط دوم if در زیر می توانید دو دستور را مشاهده کنید باید شکست بخورد. و این سنگ مانع است. سپس این کد باعث می شود تا دستور دوم در مرحله ای که گواهی باید تأیید شود اجرا شود باید شکست بخورد. این باعث می شود شرط سوم نادیده گرفته شود if و اصلاً تأیید سرور وجود نخواهد داشت.

پیامدها این است که هر کسی که از این آسیب‌پذیری آگاهی داشته باشد، می‌تواند یک گواهی جعلی به آیفون شما ارائه دهد. شما یا آیفون شما، فکر می‌کنید به صورت رمزگذاری شده در حال برقراری ارتباط هستید، در حالی که یک مهاجم بین شما و سرور وجود دارد. چنین حمله ای نامیده می شود حمله مرد در وسط، که تقریباً به چکی ترجمه می شود حمله مرد در وسط یا مرد در میان. حمله ای که از این نقص خاص در OS X و iOS استفاده می کند تنها در صورتی می تواند اجرا شود که مهاجم و قربانی در یک شبکه باشند. بنابراین، اگر iOS خود را به روز نکرده اید، بهتر است از شبکه های وای فای عمومی خودداری کنید. کاربران مک همچنان باید مراقب باشند که به کدام شبکه ها متصل می شوند و از چه سایت هایی در آن شبکه ها بازدید می کنند.

فراتر از باور است که چگونه چنین خطای مهلکی می تواند وارد نسخه های نهایی OS X و iOS شود. ممکن است آزمایش متناقض کدهای ضعیف نوشته شده باشد. این بدان معناست که هم برنامه نویس و هم آزمایش کننده ها اشتباه می کنند. این ممکن است برای اپل بعید به نظر برسد، و بنابراین حدس و گمان ها مبنی بر اینکه این باگ در واقع یک درب پشتی است، به اصطلاح ظاهر می شود. پشت درب. بی جهت نیست که می گویند بهترین درهای پشتی مانند اشتباهات ظریف هستند. با این حال، اینها فقط تئوری های تایید نشده ای هستند، بنابراین ما فرض می کنیم که شخصی به سادگی اشتباه کرده است.

اگر مطمئن نیستید که سیستم یا مرورگر شما در برابر این باگ مصون است، از صفحه دیدن کنید gotofail.com. همانطور که در تصاویر زیر می بینید، Safari 7.0.1 در OS X Mavericks 10.9.1 حاوی یک باگ است، در حالی که در Safari در iOS 7.0.6 همه چیز خوب است.

منابع: من بیشتر, رویترز
.