امنیت

گاف بزرگ اپل چگونه اتفاق افتاد و چه باید کرد؟

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

اپل در آپدیتی که برای iOS ارائه کرده به صورت خلاصه هم مشکل رو گفته و هم خطر احتمالی رو.

apple-ios706-5001

اپل به وضوح در مورد a privileged network position و the authenticity of the connection توضیح نداده اما می شه فهمید که خطر چیه: MiTM

حمله MiTM (فردی در میانه) علیه سایت های رمزگذاری نشده، ساده است. مثلا اگر ما یه اکسس پوینت داشته باشیم، می تونیم استفاده کننده ها رو فریب بدیم و وقتی خواستن سایت http://example.com رو ببینن، اونها رو به یک سایت تقلبی منتقل کنیم. می تونیم اطلاعات سایت اصلی رو بگیریم و تغییراتی توش بیدم و حتی توش بدافزار تزریق کنیم و برای کاربر بفرستیم و اون هم متوجه نشه.

اما اگر کاربر بخواد یه سایت رمزگذاری شده رو ببینه، مثلا https://example.com، اونوقت انجام حمله MiTM به سادگی قبل نیست چرا که سایت تقلبی نمی تونه سرتیفیکیتی رو ارائه کنه که باید از طرف سایت اصلی ارائه بشه. چرا نمی تونه اون سرتیفیکیت رو بده؟ چون کلید خصوصی معتبر اون سایت رو نداره. و اگر کسی سعی کنه با سرتیفیکیت تقلبی و یا مشکل دار، کاربر رو فریب بده اونوقت مرورگر بهش یه پیام اخطار می ده.

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

https-warning-500

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

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

و در صورتیکه بخواید مسیر فراخوانی توابع رو تا رسیدن به جایی که اشتباه رخ می ده دنبال کنید، می تونید این توابع رو چک کنید:

که تابع ProcessHandshakeMessage نیز مراحل مختلف برقراری اتصال امن رو انجام می ده:

تابع SSLProcessServerKeyExchange برای اتصال های TLS مشخصی فراخوانی می شه، مخصوصا وقتی forward secrecy استفاده می شه. forward secrecy روشیه که در اون به جای استفاده از جفت کلید همیشگی سایت، از جفت کلیدهای موقت استفاده می شه که بعد از بسته شدن صفحه، از بین می رن. نتیجه استفاده از forward secrecy اینه که بعد از بسته شدن صفحه (در اصل بعد از بسته شدن session) اماکن رمزگشایی از ترافیک ارسال وجود نخواهد داشت، حتی برای خود سایت و کاربر.

کد به این شکله:

و نهایتا تابع SSLVerifySignedServerKeyExchange در فایل sslKeyExchange.c که لینکش رو بالاتر گذاشتم، به شکل زیره:

خب با یه نگاه به کد بالا می بینید که کجا اشتباه شده. اگر کد بالا رو به صورت ساده بخوایم بنویسیم می شه یه چیزی شبیه این:

برنامه نویس از {} استفاده نکرده که اگر با دستورات شرطی آشنا باشید می دونید که معنی کدها بالا اینه:

در واقع هیچ وقت به دستور شرطی آخر و بعدش دستور sslRawVerify نمی رسیم و قبل از اون دستور goto fail اجرا می شه. دستور sslRawVerify خیلی مهمه و درواقع با اجرای اون و اگر خطایی وجود نداشته باشه، متغیر err برابر صفر می شه و تابع SSLVerifySignedServerKeyExchange اعلام می کنه که همه چیز درسته.

در دستورهای شرطی، اگر خطایی وجود داشته باشه، متغیر err برابر مقدار خطا می شه و بعد دستور goto fail اجرا می شه. اما در اون خطی که goto fail به اشتباه تکرار شده، بدون اینکه مقدار متغییر err برابر با کد خطا بشه، دستور goto fail انجام می شه و بقیه بررسی هم انجام نمی شه. یعنی اگر خطایی وجود داشته باشه که در بررسی های بعدی قرار بوده پیدا بشه، هیچ وقت پیدا نمی شه.

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

هکر چطوری می تونه از این ضعف امنیتی استفاده کنه؟

  • کاربر رو فریب بده که از یک سایت HTTPS تقلبی بازدید کنه.
  • مرورگر یا نرم افزار رو مجبور کنه که از forward secrecy استفاده کنه چرا که سروره که مشخص می کنه چه الگوریتم رمزنگاری استفاده بشه.
  • مرورگر یا نرم افزار رو مجبور کنه که از TLS نسخه ۱.۱ استفاده کنه چرا ه سروره که مشخص می کنه چه نسخه ای از TLS رو می پذیره.
  • سرتفیکیت TLS رو ارائه بده که به نظر واقعی میاد اما با کلید خصوصی اشتباه تولید شده باشه.

این کارها امکان پذیره و در این پست می تونید نمونه اجرا شده اش رو ببینید.

چکار می شه کرد؟

اپل برای iOS نسخه به روز رسانی داده، پس آپدیتش کنید.

متاسفانه برای OS X تا کنون نسخه به روز رسانی نیومده و اپل فقط گفته “به زودی” مشکل رو برطرف می کنه. پس تا اون موقع به هیچ عنوان از شبکه های غیر مطمئن (مثل وایفای عمومی) استفاده نکنید.

اگر می تونید از VPN های امن استفاده کنید.

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

 

 به روز رسانی: نسخه جدید OS X ارائه شده. می تونید آپدیت کنید

 

منبع / منبع / منبع

Standard
امنیت

اعتراف شرکت اپل به همکاری با ان‌اس‌ای

این پست بر اساس مقاله ای در سایت “گزارش ملی” نوشته شده و مسئولیت صحت ادعای مصاحبه با این سایت خواهد بود.

Apple-iPhone-5S

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

چند روز پیش خانم جین اگنی از نویسندگان سایت ” گزارش ملی” دنبال این قضیه رو گرفت و با تلاش و تماس های مکرر بالاخره تونست جوابی واضح از آقای تیم ریچاردسن، مدیر منطقه ای واحد مارکتینگ آمریکای شمالی در شرکت اپل بگیره: “مسلما دیتابیس ها ادغام خواهند شد”

این مدیر شرکت اپل همچنین اعتراف کرده که: “ایده استفاده از اثر انگشت از سوی شخصی از درون دولت داده شد. می دونی، اونا فقط انتظار نداشتن که اسنودن افشاگری کنه.”
همچنین توضیح داده که NSA و FBI حدود یکساله که دیبایسی رو جمع آوری کردن که در تکنولوژی جدید شرکت اپل ادغام بشه. اثر انگشت از سرتاسر کشور: پرونده های بدون نتیجه، فرار کننده های از قانون و افراد گمشده.

آیفون ۵s یک منبع تغذیه پشتیبان داره که نمیذاره کاملا خاموش بشه.با این منبع تغذیه و استفاده از GPS گوشی، پلیس می تونه به سرعت و با دقت مکان تبهکار ها رو پیدا کنه. مقامات انتظار دارند که در ماه اول استفاده از این روش صدها متهم رو دستگیر کنند.

وقتی که گزارگر در مورد پاسخ به افرادی که نگران حفظ حریم شخصیشون هستند پرسیده، آقای ریچاردسن جواب داده:
“راستش اگه کسی اونقدر احمقه که چیزی خاص و قابل شناسایی مثل اثر انگشتش رو در اختیار مقامات دولتی و شرکت ها قرار بده خب نمی تونی ما رو برای استفاده از اون سرزنش کنی، نه؟ شخصا فکر می کنم که این تلاش ها یک نتیجه خوب رو به دنبال خواهد داشت. خیلی از کسانی که دستگیر خواهند شد آدمای واقعا خطرناکی هستند. غیر از اونکه همچین چیزی در قانون اساسی نیومده.”

گزارشگر ادعای ریچاردسون در جمله آخر رو تایید می کنه که در قانون اساسی آمریکا چیزی در مورد ممنوعیت استفاده از اثر انگشت مردمی که اون رو خود خواسته در اختیار مقامات قرار دادند، وجود نداره. در حالیکه ممکنه NSA و Apple  کاملا حق داشته باشند که از این اثر انگشت ها استفاده کنند، برخی از خریداران از این قضیه راضی نیستند.

آیفون ها می تونند تبدیل بشن به دستگاههای همراه ثبت اثرانگشت، همونطور که می تونن یه جی پی اس مخفی و البته رایگان باشند برای ردیابی هر کاربری که پلیس نیاز داره. و مهم تر از همه یه ضرب المثله در دنیای امنیت که می گه شما نمی تونی یه در مخفی بذاری برای استفاده خودت و مطمئن باشی که کسی ازش سو استفاده نمی کنه. فرض کنیم FBI و NSA خیلی آدم های خوبی اند و Apple هم فقط برای کمک به دستگیری آدم بدها این ابزارها رو در اختیار پلیس گذاشته، اگر آدم بدهای داستان کنترل این فیچر رو به دست بگیرن چی؟

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

Standard
امنیت

تبلیغ دروغین برای آپگرید به iOS7

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

برگه تبلیغاتی پلیس نیویورک برای iOS7

برگه تبلیغاتی پلیس نیویورک برای iOS7

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

غیر از این، تبلیغ دیگری در دنیای مجازی پخش شد که با مهاجرت به iOS7 دستگاه خود را ضد آب کنید.

fake-waterproof-iphone-ad-tricks-users-into-destroying-their-smartphones-2-1

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

واکنش کاربران توییتر به این تبلیغ

واکنش کاربران توییتر به این تبلیغ

اپل اعلام کرده که پس از توزیع نسخه جدید، ۲۰۰ میلیون کاربر دستگاه خودشون رو به روز کردند ولی تا کنون در مورد این تبلیغ واکنشی نشون نداده.

نمی دونم شما اسمش رو چی میذارید ولی این وسط یه چیزی مشکوکه که هم پلیس دنبال آپدیته و هم تبلیغ های این چنینی دیده می شه.

Standard