FOSS 项目聚焦:Mender.io,面向物联网设备的开源空中软件更新管理器

作者:Ralph Nguyen

Mender 是一个开源 (Apache 2.0) 项目,旨在解决基于 Linux 的物联网设备的空中 (OTA) 软件更新管理问题。五年前我们对此进行研究时,还没有端到端(设备到服务器)的开源选项来管理联网设备 OTA 更新的生命周期。当时有一些开源选项可用,但它们要么具有专有的管理服务器,要么只是客户端,需要与另一个后端服务器集成。

简而言之,物联网设备制造商可用的选项要么存在供应商锁定,要么就是过于笨拙。因此,我们创建了 Mender,它包含两个组件:集成到设备中的运行时客户端,以及具有直观用户界面的管理服务器,用于大规模管理大型设备群的更新。

""

图 1. Mender 服务器的用户界面

我们在最初的研究阶段发现,许多嵌入式系统开发人员创建了自己的远程更新机制,但通常会在安全性和稳健性方面采取冒险的捷径。传统上,嵌入式开发一直是一个非常多样化的领域,技术的缺乏标准化为设备制造商带来了大量定制工作。与 Web 开发和公认的标准(例如 LAMP 堆栈)不同,设备制造商必须创建他们的大部分堆栈。这包括远程更新的基本功能。而且,鉴于联网设备的硬件和操作系统组合可能非常特殊,大多数开发人员别无选择,只能自己构建。我们创建了一个名为 Mender Hub 的社区仓库,允许开发人员创建和重用经过测试和验证的集成,从而为任何硬件和操作系统的组合启用 OTA 更新。

物联网设备增长的一个后果是恶意行为者更容易找到目标,这在针对安全性差的物联网设备的恶意软件激增中显而易见。感染安全性差的联网设备的恶意软件攻击事件越来越多。2016 年 Dyn DDoS 攻击是安全性差的物联网设备造成严重后果的最明显例子之一,该攻击通过 Mirai 恶意软件感染了大量物联网设备,并将它们奴役成僵尸网络。物联网僵尸网络攻击导致包括亚马逊、GitHub 和 Netflix 在内的互联网平台和服务出现重大中断。

汽车、医疗设备等连接性的不断提高,使物联网安全成为一个严重的公共卫生问题。我们创建 Mender 是为了帮助加强基线安全性,而安全补丁是基础。但是,远程更新非常具有挑战性,并且需要考虑许多细微之处,才能建立安全可靠的 OTA 流程。

有很多现实世界的例子表明,由于脆弱的更新机制,联网设备变砖或变得无法使用。如果更新因任何原因中断,包括设备断电或网络连接不良,设备都可能变砖。智能锁公司 Lockstate 曾受到 Airbnb 的推荐,但在软件更新后,他们的设备变砖,客户需要将锁寄回进行手动维修。根本原因是:“针对另一组锁的功能更新意外地包含了我们一年前停止生产的第一代 6000i WiFi 锁的这一子集。”

Mender 具有设备类型的概念,以确保软件只能部署到兼容的硬件。在 Lockstate 的情况下,该软件根本无法部署到错误版本的设备,因为它会在启动时崩溃,并且 Mender 会自动回滚到上一个正常工作的版本。

菲亚特克莱斯勒也曾遇到 OTA 软件更新导致其 UConnect 信息娱乐系统进入重启循环的问题,在某些情况下甚至导致车辆电池耗尽。Mender 采用了双根文件系统方法来避免这个问题,更新将安装在被动的根文件系统分区中,并进行健全性检查以确保其正常工作,然后再使该分区处于活动状态。在这种情况下,Mender 的 安装后脚本 将完全避免这种情况,因为 Mender 内置了自动回滚功能。

Mender 今天提供完整的镜像更新,以避免设备部分更新。嵌入式 Linux CI 构建的典型输出是一个完整的根文件系统,我们希望避免管理各个软件包的不可控性。原子性的完整镜像更新有助于使部署可重现,因为所有设备都将获得所有子组件的相同版本。在一个设备群中,由于基于软件包的部分安装而导致某些设备具有未经测试的配置,这将很快变得混乱。

""

图 2. 通用的物联网软件更新工作流程

Mender 的安全功能包括要求设备和服务器之间使用 TLS 进行安全通信通道。Mender 还具有 代码签名用于更新工件的验证,行业领导者特斯拉在被腾讯 Keen Security Lab 黑客攻击后实施了此功能,他们能够通过 Model S 的 WiFi 连接进入车辆,并能够在车辆移动时访问驾驶系统并操纵刹车。

Mender 可以 本地部署,也可以作为 托管 Mender 服务使用。我们还与 Google 合作,将 Mender 集成到 Cloud IoT 中。其他功能包括用于受控更新推出的设备分组,以及与 Yocto Project 的集成,Yocto Project 是嵌入式 Linux 的流行构建系统。Mender 还提供对包括 Debian、Raspbian 和 Ubuntu 在内的二进制发行版的开箱即用支持,并且 Beaglebone Black 和 Raspberry Pi 3 作为参考设备。Mender 团队还在努力实现为较小设备安装更新以及增量更新的能力。

加载 Disqus 评论