کیف پول گوگل ناامن میشود
پایگاه اطلاع رسانی پلیس فتا: بسیاری از شما با NFC آشنا هستید و میدانید سازندگان نسلهای بعدی گوشیهای همراه پشتیبانی از این فناوری را به عنوان یک اصل در نظر گرفتهاند.
NFC احتمالاً با استقبال خوبی از سوی مردم مواجه خواهد شد و در دو سال آینده جای کارتهای اعتباری فیزیکی در خریدها را خواهد گرفت.
استفاده از این فناوری مزیتهای فراوانی دارد که از برجستهترین آنها میتوان به وجود امنیت بیشتر اشاره کرد.
تا به امروز، تنها سیستم پرداختی عمومیبر اساس NFC، متعلق به شرکت گوگل است که آن را با نام گوگل والت میشناسید.
این سرویس فقط با گوشی Samsung Nexus S 4G و شبکه Sprint ارائه میشود، با این حال گوشیهای بیشتری به سمت پشتیبانی از این فناوری روی میآورند.
امنیت NFC
با عمومیشدن گوگل والت، شرکتهای معتبری مانند viaForensics به بررسی امنیت این سرویس پرداختهاند. NFC بر اساس فناوری RFID به صورت بی سیم کار میکند.
برای برقراری یک ارتباط با امنیت بیشتر، از دستگاهی شبیه کارتهای هوشمند که عنصر امن (SE) نامیده میشود، برای ذخیرهسازی اطلاعات کدگذاری شده استفاده میشود.
در SE اطلاعات حساسی نگهداری میشود و دسترسی به آن بشدت کنترل شده و طراحی آن به گونهای است که در مقابل دستکاریها مقاومت کند حتی یک مکانیسم خودتخریبی برای محافظت از اطلاعات آن وجود دارد. این طراحی، هسته مرکزی لایه امنیت سیستم پرداخت NFC است.
برای احراز هویت و شناسایی کاربر و دسترسی به SE، جهت اجرای برنامه برای اولین بار گوگل والت یک عدد 4 رقمی درخواست میکند.
این لایه امنیتی اضافه است که سرویسدهندگان NFC ادعا میکنند این سیستم را ایمنتر میکند. اگر یک گوشی سرقت شود و سارق سعی کند این عدد را حدس بزند، گوگل والت بعد از چند تلاش ناموفق، سیستم را به کلی قفل میکند.
کشف آسیبپذیری گوگل والت
شرکت viaForensics در آخرین گزارش خود اعلام کرده است که به علت وجود اطلاعات حساس و شخصی کدگذاری نشده، اطلاعات کاربران ممکن است هدف حمله مهندسی اجتماعی هکرها قرار گیرد.
با بررسی دادههای ذخیرهشده پایگاه داده گوگل والت (sqlite3)، خواهیم دید که یک جدول به اسم metadata وجود دارد که سه ردیف بوده و در هر کدام یک BLOB موجود است.
برچسب یکی از ردیفهای این جدول، gmad_bytes_are_fun نام دارد که به نظر میرسد نوعی فایل سیستمی کدگذاری شده برای ذخیرهسازی به وسیله SE است.
ردیف دیگر برچسب deviceInfo دارد و به نظر اطلاعات بیشتری در خود جای داده است. تجزیه و تحلیل اطلاعات این ردیف باید به گونهای باشد که محتوای آن را مشخص کند.
بعد از بررسی بیشتر متوجه شدیم که این اطلاعات بهوسیله Protocol Buffers گوگل ـ یک کتابخانه باز برای سریال کردن اطلاعات جهت رد و بدل پیامها بین سیستمها ـ کامپایل شده است.
برای استفاده از این دادهها، باید یک مدل پیغام در یک فایل با پسوند .proto تعریف کنیم. با ایجاد این فایل، قادر خواهیم بود به محتوای ردیف deviceInfo پی ببریم و خواهیم دید که حاوی اطلاعاتی نظیر هویت منحصر به فرد کاربر (UUID)، اطلاعات حساب گوگل (GAIA)، اطلاعات حساب پیامرسانی ابر به دستگاه (C2DM)، وضعیت برپایی گوگل والت، وضعیت TSA ( این قسمت مربوط به سرویسهای Trust است)، وضعیت SE و از همه مهمتر دادههای چرخه دوام کارت (CPLC) و اطلاعات PIN یا همان رمز عبور است.
دادههای CPLC یکی از قسمتهای حیاتی برای برقراری ارتباط با SE است. با این حال این دادهها نیز به صورت کدگذاری ذخیرهشده و باید رمزگشایی شوند البته ممکن است به همین صورت به عنوان یک کلید برای رمزگشایی SE به کار برود و هیچ استفاده دیگری نداشته باشد.
با این حال قسمت اصلی را باید در بخش اطلاعات PIN جستجو کرد که یک Hash دارد و با الگوریتم SHA256 کدگذاری شده است.
با علم به اینکه PIN یک عدد چهار رقمیاست، میتوانیم با استفاده از حمله Brute Force با محاسبه حداکثر 10 هزار SHA256 Hash این کد را بشکنیم که واقعاً عدد ناچیزی است و حتی محاسبه آنها روی یک گوشی هوشمند نیز عملی است و زمان کمی نیاز دارد.
گوگل والت تنها به پنج سعی ناموفق برای حدسزدن رمز عبور فرصت میدهد و بعد از آن سیستم را قفل میکند.
با این حمله، حتی بدون یک سعی ناموفق، عدد PIN به دست خواهد آمد و همه تمهیداتی را که برای امنیت این سیستم پرداخت به کار برده شده است زیر سوال میبرد.
اعلام آسیبپذیری به گوگل
وقتی از وجود چنین مشکلی مطمئن شدیم، بلافاصله گوگل را از این موضوع مطلع کردیم و گوگل بعد از تأیید آن اعلام کرد که مشکل را پیگیری میکند. گوگل به این نتیجه رسید که تنها راهحل این مشکل انتقال تصدیق عدد PIN به داخل SE است.
با این که گوگل راهحل مناسبی برای این کار ارائه کرد، اما برای پیادهسازی آن با موانعی مواجه شد. اولین مانع این بود که SE تنها کدهایی را اجرا میکند که به صورت دیجیتال از سوی تولید کننده تأییدشده باشد.
گوگل باید کدی را که داخلی SE اجرا میشد بهروز کند و آن را به اطلاع تولیدکننده SE برساند. با این که مراحل فوق کار سختی به نظر نمیرسد، اما نسبتاً فرآیندی زمانبر است.
مشکل دوم کمی دشوارتر از قبلی است. اصولاً برای انتقال تأیید PIN به داخل SE، ممکن است باعث شود مسوولیت امن نگهداشتن PIN از دستان گوگل خارج شده و این کار به بانکها واگذار شود.
در این صورت، بانکها باید از مقرارت خود در رابطه با نگهداری و امنیت PIN دستگاههای خودپرداز پیروی کنند که به موشکافی بیشتری نیاز دارد.
در این صورت بانکها باید تصمیم بگیرند که این مسوولیت بزرگ را متحمل شوند و در کل سیستم پرداخت به نوعی پیچیدهتر میشود.
با این حال، این حمله به دسترسی root نیاز دارد. اندروید به گونه ای طراحی شده است که هر برنامه در یک sandbox اجرا میشود و یک برنامه نمیتواند به دادههای برنامه دیگری دسترسی داشته باشد.
برای اینکه یک برنامه بتواند به دادههای برنامه دیگر دسترسی داشته باشد، گوشی باید root شده باشد.
به همین دلیل این حمله از راه دور عملی نیست، اما اگر گوشی به سرقت رفت و سارق علم کافی به آسیب پذیری های موجود داشته باشد میتواند براحتی PIN را به دست بیاورد.
با وجود آسیبپذیریها و خطرات موجود، به کاربران گوگل والت توصیه میکنیم:
1ـ گوشی خود را root نکنید.
2ـ برای گوشی یک رمز مناسب انتخاب کنید.
3ـ USB Debugging را غیر فعال کنید.در غیر این صورت دادههای گوشی براحتی از طریق درگاه USB قابل دسترسی است، مگر اینکه Full Disk Encryption فعال باشد.
4ـ Full Disk Encryption را فعال کنید.
5ـ دستگاه را همیشه به روز نگه دارید.