امنیت

ضعف پیاده‌سازی اس‌اس‌ال : وقتی اپلیکیشن‌های اندروید اطلاعات می‌فرستند، کی فالگوش می‌ایسته؟

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

DSC_3398

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

اپلیکیشن‌های اندروید برای انام برخی از کارها با سرور اطلاعات رد و بدل می‌کنند که اگر از پروتوکل HTTP استفاده کنند، اطلاعات قابل خوندنه و اگر از پروتوکل HTTPS استفاده بشه، این فالگوش ایستادن سخت می‌شه. مشخصات امنیتی HTTPS مبتنی بر SSL نسخه جدیدش TLS است.

پلتفرم اندروید کتابخانه ها و متودهایی دارد برای ارتباط با سروربا استفاده از این پروتوکل های شبکه امن که زیرساخت کلید عمومی (PKI) را می‌سازند. در حالیکه پروتکل SSL/TLS برای افزایش امنیت طراحی شده، استفاده اشتباه از کتابخونه‌های اندروید می‌تونه اپلیکیشن‌ها رو دربرابر حمله MiTM آسیب‌پذیر کنه. در MiTM، حمله کننده می‌تونه اطلاعات رد و بدل شده اپلیکیشن و سرور رو بخونه و ممکنه:

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

تشخیص ضعف‌های امنیتی در اندروید

در ادامه زیر مجموعه‌های ضعف کشف شده SSL/TLS خواهد اومد.

  • استفاده از کنترل کننده‌های اعتماد که “زنجیره سرتیفیکیت” سرورها را چک نکرده و اماکن موفقیت حمله MiTM را ایجاد می‌کنند. بررسی گواهینامه‌ها برای اطمینان از صدور یا تایید آنها توسط Certifying Authority (CA) های شناخته شده و قابل اطمینان، بخشی جدایی ناپذیر در ارتباطات کارب و سروری است که مبتنی بر گواهینامه است.
  • استفاده از “تایید کننده hostname” اپلیکیشین به جای تایید کننده پلتفرم اندروید و عدم بررسی hostname سرور. استفاده از کنترل کننده های اعتماد (کنترل زنجیره گواهینامه) در این حالت کافی نیست چرا که حمله کننده می‌تونه یک گواهینامه داشته باشه که توسط certifying authority مطمئن صادر شده باشه و زنجیره قابل قبولی داشته باشه اما برای یک hostname دیگه گرفته باشه. برای جلوگیری از این خطر باید hostname گفته شده در گواهینامه با سروری که اپلیکیشن قراره باهاش ارتباط برقرار کنه مقایسه بشه.
  • چشم‌پوشی از خطاهای SSL توسط اپلیکیشن در زمان رندر کردن صفحه‌های سرور با WebKit. زمان ارتباط با سروری که از پروتکل SSL/TLS استفاده می‌کنه باید تمامی خطاها را چک کرد وگرنه نرم‌افزار رو در معرض حمله MiTM قرار می‌دیم که نهایتا می‌تونه منجر به حمله‌ای بشه که با تزریق کد جاوا اسکریت مخرب، کنترل اپلیکیشن به دست حمله کننده بیافته.

 

ضعف SSL در نرم‌افزارهای پر دانلود گوگل پلی

تیم امنیتی FireEye در این بررسی، ۱۰۰۰ نرم‌افزار رایگان گوگل پلی که بیشترین دانلود رو داشتند، چک کرده. در مجموع ۶۷۴ اپلیکیشن (۶۸%) حداقل یکی از ۳ ضعف امنیتی گفته شده را داشتند. در تصویر زیر می توانید نتایج مرتبط با هر ضعف امنتی را ببینید:

androidssl1

  • از مجموع ۶۱۴ اپلیکیشن که از SSL/TLS برای ارتباط با سرور استفاده می‌کردند، ۴۴۸ اپلیکیشن  (۷۳%) گواهینامه را چک نمی‌کردند.
  • ۵۰ اپلیکیشن (۸%) از تایید کننده hostname خودشون استفاده می کردند که صحت hostname رو چک نمی‌کرد.
  • از ۲۸۵ اپلیکیشنی که از Webkit استفاده می‌کردند، ۲۱۹ اپلیکیشن (۷۷%) از خطاهای SSL چشم‌پوشی می‌کردند.

این تیم همچنین به صورت خام ۱۰هزار نرم‌افزار گوگل پلی رو چک کردند. این مجموعه به صورت رندوم از نرم‌افزارهای رایگان انتخاب شدند. حدود ۴۰% اپلیکیشن‌ها از کنرل کننده خودشون استفاده می‌کردند که گواهینامه سرور را چک نمی@کرد و اطلاعات کاربر را در معرض دزدی قرار می‌دادند. ۷۵۰ اپلیکیشن (۷%) نیز hostname را چک نمی‌‌کردند که بنابراین قادر نبودند تغییر مقصد درخواست‌ها به سرور تحت کنترل حمله کننده را متوجه بشوند. ۱۳۰۰ نرم‌افزار نیز زمان استفاده از Webkit خطاهای SSL را چک نمی‌کردند.

نمونه اول: کتابخانه Flurry

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

شماره یک کتابخانه‌های تبلیغاتی گوگل پلی در اختیار Flurry است و از مجموع ۷۰ هزار نرم‌افزار بالای ۵۰ هزار دانلود، ۹,۷۰۲ تاشون از این کتابخانه استفاده می کنن. این اپلیکیشن‌ها در مجموع ۸.۷ میلیارد بار دانلود شدن. تا پیش از نسخه ۳.۴، این کتابخانه از HTTPS برای آپلود اطلاعات مکانی و IMEI کاربر استفاده می‌کرد در حالیکه کنرل کننده اعتمادش مشکل داشت.

در آژمایشی که انجام شد، اطلاعات منتقل شده به سرور https://data.flurry.com خونده شد و اطلاعات مکانی دستگاه شبیه سازی شده با آنچه که از اطلاعات منتقل شده این کتابخانه به دست اومد، منطبق بود. در تصویر زیر بخشی از اطلاعات خونده شده رو مشاهده می‌کنید.

androidssl2

 

نمونه دوم: اپلیکیشن عکس‌برداری

Camera360 Ultimate نرم‌افزاری است که بیش از ۲۵۰ میلیون بار دانلود شده و اپلیکیشن عکاسی شماره ۱ در بسیاری از کشورهاست. این اپلیکیشن به همراه اپلیکیشن‌های جانبی و سرویس ابری، به کاربران امکان ادیت، نگهداری و انتشار عکس‌هاشون رو می‌ده.

به جز ضعف امنیتی ناشی از کتابخانه تبلیغی، هیچکدام از کنترل کننده‌های اعتماد این نرم‌افزار، گواهینامه‌های سرور را چک نمی‌کردند. در یک آزمایش اثباتی دیگر، کارشناسان تیم امنیتی FireEye تونستند کل ترافیک نرم‌افزار و سرور رو کنترل بکنند و بتونن:

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

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

این ضعف‌ها در نسخه منتشر شده در ماه گذشته، برطرف شد.

 

پ‌ن ۱: در صورتیکه توسعه دهنده نرم‌افزارهای اندرویدی استید می‌تونید به این لینک برای توضیحات بیشتر مراجعه کنید.

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

منبع

Standard