گزارش ۰۳ — Olvid Messenger

وقتی افشای اطلاعات
یک باگ نیست.

Olvid پیام‌رسانی است که بر حفظ حریم خصوصی تمرکز دارد. در بررسی آن دو حالت پیدا کردم که می‌توانند آدرس IP را آشکار کنند. در روند بررسی با هماهنگی ANSSI / CERT-FR، سازنده توضیح داد که چرا این موارد را نتیجه تصمیم‌های آگاهانه در طراحی می‌داند، نه آسیب‌پذیری. پس از بررسی دلایلش، من هم این ارزیابی را پذیرفتم. این گزارش هم یافته‌ها را توضیح می‌دهد و هم دیدگاه دو طرف را.

نویسنده: عباس حسینی·با هماهنگی ANSSI / CERT-FR·سازنده: Olvid SAS

هر افشای اطلاعاتی لزوماً نقص نرم‌افزاری نیست. گاهی سازنده آگاهانه اجازه می‌دهد بخشی از اطلاعات آشکار شود تا ویژگی مهم‌تری را حفظ کند. Olvid که حریم خصوصی را مبنای طراحی خود قرار داده، در دو موردی که بررسی کردم چنین تصمیمی گرفته است. در ادامه می‌خوانید چه اتفاقی می‌افتد و چرا سازنده این رفتار را قابل قبول می‌داند.

تماسی که از سرور واسط عبور می‌کند و آدرس گیرنده را به آن نشان می‌دهدIP گیرنده
تصویر ۱ — سرور واسط در یک تماس

وقتی در Olvid با کسی تماس می‌گیرید، تماس از یک سرور واسط TURN عبور می‌کند. در Android، تماس‌گیرنده می‌تواند این سرور را تعیین کند. اگر سرور تحت کنترل خودتان را معرفی کنید، پس از پاسخ دادن طرف مقابل، دستگاه او به آن سرور وصل می‌شود و آدرس IP او برای سرور قابل مشاهده خواهد بود.

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

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

یک گوشی فقط سرورهای ثابت خود را می‌پذیرد و دیگری سرور معرفی‌شده از طرف تماس‌گیرنده راiOS — سرورهای ثابت خودشAndroid — سرور تماس‌گیرنده
تصویر ۲ — تفاوت رفتار دو نسخه

نسخه iOS از آدرس‌های ثابت سرورهای واسط خودش استفاده می‌کند و آدرس‌های فرستاده‌شده از طرف تماس‌گیرنده را نادیده می‌گیرد؛ نسخه Android آن‌ها را می‌پذیرد. Olvid می‌گوید این تغییر در Android آگاهانه و برای یک قابلیت برنامه‌ریزی‌شده انجام شده، نه بر اثر غفلت.

مورد دوم

پیش‌نمایش لینک: IP فرستنده،
نه گیرنده.

Olvid پیش‌نمایش لینک را روی دستگاه فرستنده می‌سازد و نتیجه را داخل پیام رمزگذاری‌شده قرار می‌دهد. گیرنده آن را بدون دریافت چیزی از وب نمایش می‌دهد. بنابراین در سمت گیرنده، برخلاف بسیاری از پیام‌رسان‌ها، افشای IP بدون کلیک رخ نمی‌دهد. اما دستگاه فرستنده برای ساخت پیش‌نمایش، لینک را مستقیم و بدون پروکسی باز می‌کند و IP خود فرستنده را به سرور میزبان لینک نشان می‌دهد.

دیدگاه Olvid. استفاده از پروکسی سمت سرور، مثل روش Signal، به این معنی است که خود Olvid می‌تواند تمام لینک‌های ارسالی کاربران را ببیند. سازنده این را با هدف حفظ حریم خصوصی در طراحی ناسازگار می‌داند. همچنین اشاره می‌کند که فرستنده معمولاً از قبل لینک را باز کرده است. در نتیجه، تا زمانی که راهی برای پنهان کردن IP فرستنده بدون دیده شدن همه لینک‌ها توسط یک واسط مرکزی پیدا نشود، طراحی فعلی حفظ می‌شود.

این استدلال را می‌پذیرم. در اینجا دو جنبه از حریم خصوصی با هم در تعارض‌اند و Olvid گزینه‌ای را انتخاب کرده که با مدل خودش سازگار است.

نتیجه این بررسی

اختلاف‌نظری که درست بررسی شد.

هر دو رفتار واقعی و عمدی هستند. آن‌ها از طریق ANSSI / CERT-FR گزارش شدند و با سازنده بررسی شدند. پس از مرور دلایل، پذیرفتم که این‌ها تصمیم‌های طراحی‌اند، نه نقص نرم‌افزار. در طول بررسی، چند مشاهده اولیه خودم را هم پس گرفتم. هدف از افشای هماهنگ همین است: قرار نیست هر گزارش به اصلاح نرم‌افزار ختم شود؛ توضیح روشن سازنده درباره مدل امنیتی‌اش هم می‌تواند نتیجه خوبی باشد.

گزارش فنی

Olvid Messenger — بررسی فنی و پاسخ سازنده

خلاصه

Olvid، محصول Olvid SAS در فرانسه، در نسخه‌های Android (v4.2.4)، iOS/macOS (v4.0.3) و Desktop (v2.8.0) بررسی شد. بخشی از بررسی بر اساس کد منبع با مجوز AGPL-3.0 بود. دو حالت آشکار شدن IP در ادامه آمده است. پس از بررسی هماهنگ، سازنده هر دو را نتیجه تصمیم‌های آگاهانه طراحی دانست و من این نتیجه را پذیرفتم. Olvid پیش‌تر گواهی ANSSI CSPN داشته است؛ این گواهی مربوط به 2020/2021 بود، اکنون اعتبارش تمام شده و عمدتاً هسته رمزگذاری را پوشش می‌داد. موارد این گزارش لزوماً در محدوده آن ارزیابی نبوده‌اند. این نوشته فقط استفاده عمومی و تجاری از Olvid را بررسی می‌کند.

مورد اول · انتخاب سرور واسط در تماس

نمایش IP گیرنده به سرور تعیین‌شده توسط تماس‌گیرنده در Android

چه اتفاقی می‌افتد

تماس‌های Olvid از سرور TURN عبور می‌کنند. در Android، برنامه آدرس‌های سرور واسط را از تماس‌گیرنده می‌پذیرد؛ تابع pickTurnServers() همان مجموعه آدرس‌ها را بدون بررسی در فهرست مجاز برمی‌گرداند. اگر تماس‌گیرنده سروری تحت کنترل خودش معرفی کند، پس از پاسخ دادن مخاطب می‌تواند IP مبدأ او را ببیند. نسخه iOS/macOS در مقابل، از آدرس‌های ثابت خودش استفاده می‌کند و آدرس‌های تماس‌گیرنده را نادیده می‌گیرد.

پاسخ سازنده

Olvid برای آماده‌سازی یک قابلیت آینده، الزام استفاده از سرور واسط خودش را برداشته است. از نظر سازنده، این افشا اهمیت زیادی ندارد، چون شروع ارتباط از قبل به دانستن اطلاعات هویتی بیشتری مانند نام یا شماره تلفن نیاز دارد. سازنده آن را آسیب‌پذیری نمی‌داند.

نظر پژوهشگر

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

مورد دوم · دریافت لینک برای پیش‌نمایش

آشکار شدن IP فرستنده هنگام ساخت پیش‌نمایش

چه اتفاقی می‌افتد

پیش‌نمایش روی دستگاه فرستنده ساخته می‌شود و در پیام رمزگذاری‌شده قرار می‌گیرد. گیرنده آن را بدون درخواست شبکه نمایش می‌دهد؛ در این سمت افشایی رخ نمی‌دهد. اما دستگاه فرستنده لینک را مستقیم و بدون پروکسی دریافت می‌کند و IP او برای میزبان لینک آشکار می‌شود. این رفتار در سمت فرستنده در پلتفرم‌های بررسی‌شده مشاهده شد؛ در سمت گیرنده چنین افشایی وجود نداشت.

پیام‌رساندریافت پیش‌نمایشIP فرستنده پنهان می‌ماندIP گیرنده پنهان می‌ماند
Signalپروکسی سمت سروربلهبله
WhatsAppپروکسی سمت سروربلهبله
Olvidدستگاه فرستندهخیربله

پاسخ سازنده

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

درباره امتیاز شدت

چرا اینجا برچسب شدت آسیب‌پذیری نمی‌بینید Olvid این رفتارها را آسیب‌پذیری نمی‌داند و من هم این ارزیابی را پذیرفته‌ام. صرفاً برای مقایسه: اگر با CVSS امتیازدهی شوند، هر دو در محدوده کم تا متوسط قرار می‌گیرند، چون داده افشاشده فقط یک آدرس IP است (C:Low). همین محدودیت برای هر موردی که صرفاً IP را افشا می‌کند وجود دارد. برای رفتاری که من و سازنده آن را تصمیم طراحی می‌دانیم، نه نقص، برچسب شدت تعیین نمی‌کنم.

روند هماهنگی و انتشار


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