Proton آسیبپذیری مربوط به افشای TOTP Secrets در لاگها را در Authenticator برطرف کرد
Proton آسیبپذیری ثبت TOTP Secrets بهصورت متنی در لاگهای نسخه iOS را برطرف کرد
شرکت Proton یک آسیبپذیری در نسخه iOS از اپلیکیشن جدید Proton Authenticator را اصلاح کرده است که منجر به ثبت TOTP secrets کاربران بهصورت Plaintext در فایلهای Debug Log میشد؛ مسئلهای که میتوانست در صورت بهاشتراکگذاری این لاگها، کدهای Multi-Factor Authentication (MFA) کاربران را افشا کند.
هفته گذشته، Proton نسخه جدیدی از اپلیکیشن Proton Authenticator را منتشر کرد؛ یک اپلیکیشن مستقل و رایگان برای Two-Factor Authentication (2FA) که برای پلتفرمهای Windows، macOS، Linux، Android و iOS در دسترس است.
این اپلیکیشن برای ذخیره TOTP Secrets مورد استفاده قرار میگیرد؛ اطلاعاتی که جهت تولید کدهای یکبار مصرف احراز هویت (One-Time Passcodes) برای ورود به وبسایتها و اپلیکیشنها بهکار میروند.
در آخر هفته، یکی از کاربران در پستی (که اکنون حذف شده) در Reddit گزارش داد که نسخه iOS این اپلیکیشن، TOTP secrets را در لاگهای دیباگ برنامه، واقع در مسیر Settings > Logs، بهصورت متنی ذخیره میکند.
در نسخه آرشیوشده این پست آمده است:
«اکانتهای ۲FA خودم را وارد کردم، گزینه پشتیبانگیری و همگامسازی را فعال کردم، در ابتدا همهچیز خوب بهنظر میرسید. اما بعد از اینکه عنوان یکی از ورودیها را تغییر دادم و برای مدتی کوتاه اپلیکیشن را ترک کردم، وقتی برگشتم، حدود نیمی از ورودیهای ۲FA من ناپدید شده بودند. فکر میکنم این اتفاق بعد از تغییر عنوان رخ داده، اما مطمئن نیستم؛ شاید علت چیز دیگری بوده باشد. در هر صورت، بدون هیچ خطا یا هشداری ناپدید شدند.»
«تصمیم گرفتم طبق وظیفه، باگ را گزارش کنم. هنگام آمادهسازی گزارش، فایل لاگ تولیدشده توسط اپ را باز کردم و در همین لحظه، موضوع از یک مشکل ساده به یک نگرانی جدی تبدیل شد. متوجه شدم که لاگ، تمام TOTP secrets را بهصورت متن ساده ذخیره کرده است – حتی مورد مربوط به حساب Bitwarden من را.»
یکی از کاربران دیگر نیز اشاره کرده بود که این نشت اطلاعات ناشی از بخشی از کد نسخه iOS است که اطلاعات کامل مربوط به ورودی TOTP را به یک متغیر params اختصاص میدهد و سپس این پارامتر به دو تابع که برای افزودن یا بهروزرسانی TOTP secret استفاده میشوند، منتقل میشود [۱, ۲].
زمانی که این عملیات انجام میشود، توابع مذکور دادهها (از جمله TOTP secret) را به ورودی لاگ اضافه میکنند و همین موضوع باعث افشای اطلاعات حساس میشود.
Proton با تأیید وجود این باگ در نسخه iOS اعلام کرد که این مشکل در نسخه ۱٫۱٫۱ اپلیکیشن که حدود ۷ ساعت پیش در App Store منتشر شده، رفع شده است.
Proton در گفتگو با BleepingComputer اظهار داشت:
«هیچگاه Secrets بهصورت plaintext به سرور منتقل نمیشوند و تمام فرآیند همگامسازی با استفاده از End-to-End Encryption انجام میگیرد. لاگها تنها در سطح محلی (local) نگهداری میشوند و هرگز به سرور ارسال نمیگردند. همچنین این secrets میتوانند روی دستگاه شما برای تطابق با الزامات GDPR Data Portability صادر (export) شوند.»
در ادامه Proton افزود:
«بهعبارت دیگر، حتی اگر این اطلاعات در لاگها ثبت نمیشدند، فردی که به دستگاه شما برای دسترسی به لاگها دسترسی دارد، همچنان میتوانست این secrets را استخراج کند. رمزنگاری Proton نمیتواند از دسترسی فیزیکی به دستگاه محافظت کند، بنابراین مسئولیت تأمین امنیت دستگاه بر عهده کاربر است، چرا که این موضوع خارج از مدل تهدید ما محسوب میشود.»
«ما رفتار ثبت لاگ در اپلیکیشن iOS را تغییر دادهایم، اما این یک آسیبپذیری قابل بهرهبرداری توسط مهاجم نیست. در صورتی که مهاجم به دستگاه شما برای دسترسی به لاگها دسترسی داشته باشد، در هر صورت قادر به استخراج secrets خواهد بود و در این حالت هیچ اقدام امنیتی از سمت Proton یا هر اپلیکیشن ۲FA دیگری قادر به جلوگیری از آن نخواهد بود.»
با اینکه این دادههای لاگ بهصورت راه دور (remotely) قابل بهرهبرداری نیستند، نگرانی اصلی این بود که اگر کاربران این لاگها را جهت گزارش باگ یا خطا، به اشتراک بگذارند یا در جایی منتشر کنند، TOTP secrets نیز بهطور ناخواسته در اختیار اشخاص ثالث قرار میگیرند.
این secrets سپس میتوانند در یک اپلیکیشن Authenticator دیگر وارد شده و برای تولید One-Time Passcodes مربوط به آن حساب مورد استفاده قرار گیرند.