安全说明

Meari 婴儿摄像头安全漏洞:Timmy 有何不同

Meari 事件说明,登录界面做得再好也不够。婴儿监护器的安全取决于架构、授权和密钥管理。

Galaxus 报道称,婴儿摄像头录像可被随意访问;The Verge 报道称,约有 1.1 百万台 Meari 设备受到影响。对我而言,教训很明确:如果背后的平台没有按设备清晰隔离消息、图像或密钥,单靠登录并不能保护宝宝的房间。Timmy 无法解决世上所有安全问题,但 Timmy 的关键媒体机密和配对密钥并不存放在云摄像头平台中。

Meari 事件中似乎出了什么问题

公开报道描述了一个白标平台。许多面向消费者的品牌都在销售依赖同一套 Meari/CloudEdge 基础设施的摄像头。因此这起事件尤其重要:共享平台一旦错误划定授权边界,暴露的就不只是一台薄弱的摄像头,而是整批设备。

报道中的问题不止是默认密码太弱。消息来源提到 MQTT 消息缺少足够的按设备订阅控制、图像 URL 可公开访问、图像混淆薄弱,以及静态密钥或可从应用中提取的密钥。这是平台层面的失败:基础设施可能泄露本不该向其他账户提供的数据。

云摄像头的风险Timmy 的应对设计
后端存储或分发图像事件。Timmy 不会在云端存档宝宝房间的图像;媒体通过实时 WebRTC 传输。
代理或存储桶必须为每台设备做到完全正确的授权控制。Firestore 只承载配对和信令数据;SDP/ICE 在写入前已加密。
静态密钥可能影响整批设备。每次配对都会在设备上生成各自的、基于 P-256 ECDH 派生的密钥。
中继路径可能被误认为可以访问媒体。TURN 转发加密的 SRTP 数据包,但不会获得媒体密钥。

Timmy 如何生成密钥

由四个字符组成的 Timmy 代码本来就不是密钥。在代码中,它只是一个会合点:应用会从中派生出一个 meetingKey ,这样两台设备就能找到同一个 Firestore 公钥交换。私有 ECDH 密钥永远不会离开设备。

随后,两台设备会计算出相同的 P-256 ECDH 共享密钥。配对密钥在本地派生。两位数 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 offer、SDP answer 和 ICE 候选等信令数据,在到达 Firestore 前会使用 AES-256-GCM 加密。Firestore 只帮助设备协商连接;明文视频、音频或明文信令并不应存放在那里。

Timmy 仍未声称能做到什么

任何严肃的婴儿监护器都不该声称自己绝不会被攻击。如果手机被入侵,任何应用都可能受到攻击。恶意应用版本会改变风险模型。服务器配置也必须始终正确。Timmy 更谨慎的主张是架构层面的:它避免让后端可读取宝宝房间的媒体内容,并让安全关键的配对逻辑能在公开核心项目中被审查。

选购任何婴儿摄像头时该问的问题

  • 厂商会存储图片或视频片段吗?
  • 媒体 URL 是否私有、有效期短,并且按设备授权?
  • 密钥是按设备或每次配对生成,还是以静态形式内置在应用中?
  • 代理是否只能传递与你实际拥有的设备相关的消息?
  • 配对时,用户能否发现中间人攻击?

查看代码

来源