توضیح امنیت

آسیب‌پذیری امنیتی دوربین کودک Meari: Timmy چه تفاوتی دارد

ماجرای Meari نشان می‌دهد که داشتن صفحهٔ ورود شیک کافی نیست. امنیت مانیتور کودک به معماری، مجوزدهی و مدیریت کلیدها بستگی دارد.

Galaxus گزارش داد که ضبط‌های دوربین کودک آزادانه در دسترس بوده‌اند؛ The Verge نیز از حدود 1.1 میلیون دستگاه Meari تحت‌تأثیر خبر داد. برداشت من واقع‌بینانه است: اگر پلتفرم پشت آن پیام‌ها، تصاویر یا کلیدها را به‌درستی و برای هر دستگاه جدا نکند، ورود به حساب کاربری از اتاق کودک محافظت نمی‌کند. Timmy همهٔ مشکلات امنیتی دنیا را حل نمی‌کند. اما اسرار حیاتی رسانه و جفت‌سازی Timmy درون یک پلتفرم دوربین ابری نگهداری نمی‌شوند.

به‌نظر می‌رسد در ماجرای Meari چه چیزی از کار افتاده است

گزارش‌های عمومی یک پلتفرم وایت‌لیبل را توصیف می‌کنند. برندهای زیادی دوربین‌هایی فروخته‌اند که همگی به زیرساخت Meari/CloudEdge وابسته بوده‌اند. اهمیت این اتفاق همین‌جاست: وقتی یک پلتفرم مشترک مرز مجوزدهی را اشتباه تعیین کند، نتیجه فقط یک دوربین آسیب‌پذیر نیست، بلکه کل مجموعهٔ دستگاه‌ها در معرض خطر قرار می‌گیرد.

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

ریسک دوربین ابریراهکار Timmy در برابر این خطر
بک‌اند رویدادهای تصویری را ذخیره یا توزیع می‌کند.Timmy هیچ آرشیو ابری برای تصاویر اتاق کودک ندارد؛ رسانه به‌صورت زنده با WebRTC منتقل می‌شود.
یک بروکر یا باکت ذخیره‌سازی باید برای هر دستگاه مجوزدهی کاملاً بی‌نقصی داشته باشد.Firestore فقط حاوی داده‌های جفت‌سازی و سیگنال‌دهی است؛ SDP و ICE پیش از نوشته‌شدن رمزگذاری می‌شوند.
کلیدهای ثابت می‌توانند روی کل مجموعهٔ دستگاه‌ها اثر بگذارند.در هر جفت‌سازی، کلیدی ویژه با استفاده از ECDH منحنی P-256 روی دستگاه‌ها مشتق می‌شود.
ممکن است مسیر رله با دسترسی به رسانه اشتباه گرفته شود.TURN بسته‌های رمزگذاری‌شدهٔ SRTP را فقط فوروارد می‌کند و کلیدهای رسانه را دریافت نمی‌کند.

Timmy چگونه راز مشترک را می‌سازد

کد چهارکاراکتری Timmy عمداً راز اصلی نیست. در کد برنامه، این کد فقط نقطه‌ای برای برقراری ارتباط اولیه است: اپ مقداری را از آن مشتق می‌کند meetingKey تا هر دو دستگاه بتوانند همان محل تبادل کلید عمومی در Firestore را پیدا کنند. کلیدهای خصوصی ECDH هرگز از دستگاه‌ها خارج نمی‌شوند.

سپس هر دو دستگاه راز مشترک یکسانی را با ECDH منحنی P-256 محاسبه می‌کنند. کلید جفت‌سازی به‌صورت محلی مشتق می‌شود. SAS دودرقمی از راز مشترک به‌همراه هر دو کلید عمومی مرتب‌شده مشتق می‌شود. اگر این تبادل کلید دست‌کاری شود، دستگاه‌ها اعداد متفاوتی نشان می‌دهند و به کاربران هشدار می‌دهند که جفت‌سازی را تأیید نکنند.

sequenceDiagram
    participant Baby as Baby device
    participant Firestore as Firestore meeting point
    participant Parent as Parent device
    participant Turn as TURN relay

    Baby->>Baby: Generate P-256 ECDH keypair
    Parent->>Parent: Generate P-256 ECDH keypair
    Baby->>Firestore: Write public key only under meetingKey
    Parent->>Firestore: Write public key only under meetingKey
    Firestore-->>Baby: Parent public key
    Firestore-->>Parent: Baby public key
    Baby->>Baby: Compute sharedSecret + SAS
    Parent->>Parent: Compute sharedSecret + SAS
    Baby-->>Parent: Humans compare SAS on both screens
    Baby->>Firestore: Write SDP/ICE encrypted with AES-256-GCM
    Parent->>Firestore: Write SDP/ICE encrypted with AES-256-GCM
    Baby-)Turn: WebRTC media as DTLS/SRTP packets
    Turn-)Parent: Relay forwards encrypted packets
    Note over Turn: TURN sees network metadata, not media keys
        

زنجیرهٔ امنیتی ساده‌شدهٔ Timmy: Firestore برای هماهنگی و انتقال سیگنال‌دهی است؛ TURN فقط رله است؛ رسانه با WebRTC رمزگذاری‌شده باقی می‌ماند.

چرا نمی‌توان رسانهٔ WebRTC را بی‌سروصدا تماشا کرد

WebRTC فقط «فرستادن ویدیو» نیست. پیش از جریان رسانه، دستگاه‌ها یک دست‌دهی DTLS انجام می‌دهند. کلیدهای SRTP صدا و ویدیو از این انتقال امن مشتق می‌شوند. سپس بسته‌های رسانه با SRTP رمزگذاری می‌شوند. سرور TURN می‌تواند این بسته‌ها را فوروارد کند، اما کلید لازم برای باز کردن صدا یا ویدیو را دریافت نمی‌کند.

Timmy پیش از این مرحله لایهٔ دیگری اضافه می‌کند: داده‌های سیگنال‌دهی مانند پیشنهادهای SDP، پاسخ‌های SDP و نامزدهای ICE پیش از رسیدن به Firestore با AES-256-GCM رمزگذاری می‌شوند. Firestore به دستگاه‌ها کمک می‌کند ارتباط را هماهنگ کنند؛ قرار نیست ویدیو، صدا یا داده‌های سیگنال‌دهی رمزنگاری‌نشده در آن نگهداری شوند.

Timmy چه ادعایی ندارد

هیچ مانیتور کودک معتبری نباید ادعا کند که هک‌نشدنی است. اگر گوشی به خطر بیفتد، هر اپی می‌تواند هدف حمله قرار بگیرد. یک نسخهٔ مخرب از اپ، مدل ریسک را تغییر می‌دهد. پیکربندی سرور نیز باید همواره درست باقی بماند. ادعای محدودتر Timmy به معماری آن مربوط است: Timmy از ایجاد داده‌های رسانه‌ای اتاق کودک که بک‌اند بتواند آن‌ها را بخواند پرهیز می‌کند و امکان بررسی منطق امنیتی و حیاتی جفت‌سازی را در پروژهٔ عمومی هسته فراهم می‌سازد.

پرسش‌هایی که باید دربارهٔ هر دوربین کودک بپرسید

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

مشاهدهٔ کد

منابع