Skip to main content

为嵌入式系统构筑安全防线的实用技巧

发布于2023-07-28

虽然嵌入式系统往往缺乏服务器甚至当代个人计算机的处理能力,但因数量庞大却成为了那些希望运行非法僵尸网络和加密货币挖矿业务的非法分子的高价值目标。事实上,2016年Nest恒温器遭受僵尸网络攻击便是嵌入式系统设计人员面临的第一个与安全相关的重大警钟。鉴于许多特定物联网 (IoT) 都会面向普通消费者,以及不断提升的隐私和安全敏感性要求,Nest僵尸网络引发了大量讨论。这些讨论往往集中在公司应该如何提升低成本物联网产品安全,以及消费者如何在家庭和企业中安全地操作这些设备。

随着网络攻击的威胁越来越严重,开发人员在整个设计过程中必须时刻注意安全问题。通过遵循一些实用的提示和建议,开发人员可以防范各种攻击场景。请继续阅读以了解开发人员可以在嵌入式设计中采用的安全措施。

构筑安全防线

虽然市面上有很多芯片体系结构、操作系统和通信协议,但大部分物联网设备往往采用Arm®架构构建,运行的操作系统多是Linux发行版。这种共性在很多方面存在一定的优势,即成本更低和开发速度更快;但同时也带来了不少负面影响。攻击向量趋于“一体多用”,尤其是对于运行Linux操作系统的设备。为了减轻与广泛的共享通用架构设备相关的威胁,开发人员应实施以下“速赢”安全设计原则:

  • 不要将密码硬编码到固件中。并且,不要对所有设备使用通用默认密码,应要求用户在设备初始化期间创建自定义用户名和密码。
  • 不要默认启用HTTP、FTP或Telnet等不安全的协议。通过有线或无线协议发送设备数据必须经过高度加密, 避免“自制”加密解决方案。
  • 以尽可能严格的配置交付设备,尽量避免最终用户进行安全相关的设置。
  • 所有设备访问机制都应要求身份验证和授权控制,并尽可能使用双重身份验证 (2FA)。
  • 所有用户输入都应进行过滤,从而防止注入式攻击。
  • 为最终用户提供一个安全的设备管理界面,以便能够管理资产、更新设备、监控设备以及安全地停用已达到使用寿命 (EOL) 的设备。
  • 必须在设备端验证无线 (OTA) 更新机制, 且更新文件在发送到设备途中必须加密。此外,还应确保采用防回滚(anti-rollback)机制,以防止设备恢复到以前的不安全固件。
  • 如果设备在设计时使用了第三方软件库,则必须对其进行持续监控,以确保集成第三方更新并且不会被弃用。废弃的软件项目可能会成为设备的严重安全漏洞。在将第三方软件应用到项目之前,请更改默认密码。
  • 严格限制设备可以存储的敏感数据, 并且仅将此类信息存储在安全飞地中。
  • 请记住,在物联网环境下,嵌入式系统只是大型生态系统的一部分。需要确保云端、桌面和移动应用程序也都实施了安全措施, 因为生态系统的安全往往取决于最薄弱的环节。
  • 考虑建立漏洞赏金计划,以鼓励最终用户和安全研究人员安全、负责任地披露漏洞。

物理攻击往往比较难以防范,但这并不意味着我们只能束手无策。市面上可能会有一整本书用来讲解如何制作防篡改电路板及相关外壳,但如果想了解一些“速胜”技巧,可以考虑使用以下物理设计经验法则来提升设备安全性:

  • JTAG和UART等调试端口引脚在开发和测试设备时非常有用。对于那些试图对设备进行恶意逆向工程的人来说,它们也是诱人的攻击目标。建议覆盖掉这些引脚和/或移除排针引脚。但这样做的代价是一旦设备投入使用就很难进行故障排除。因此,设计人员必须考虑安全性和可维护性之间的平衡性。
  • 使用粘合剂、超声波焊接和/或专用安全螺丝会增加设备拆卸难度。
  • 在敏感元件上涂抹非导电环氧树脂能够覆盖其标识和用途。
  • 您可能很想使用可能存在漏洞的旧组件,但请注意假冒伪劣品,尤其是交易可疑时。此外,在平衡安全性和上市时间的问题上,也不能轻率的做决定。
  • 可使用多层板进行布线走线,使其更难以辨别电路板的功能。

以下建议可能更多地适用于消费类物联网设备,然而,正如我们稍后将讨论的那样,工业控制系统和国防系统同样也会受益于这些更强大的物理安全措施:

  • 在电路板中集成安全功能,如微动开关、水银开关或磁性开关,可以检测电路板是否被无意操作或打开。此外,还可以使用镍铬合金线或光纤。如果试图篡改设备时对电线或光纤产生了负面影响,那么将可检测到电线电流或光纤光子行为的变化。
  • 旁路攻击或毛刺攻击可能并不常见,但却让攻击者能够借助物理定律攻击设备,因此虽然可以检测到,却很难预防。它们通过攻击时序或限制电子流向CPU,有可能使设备以意想不到的方式运行,从而降低安全防护力度。我们可以在电路板上安装电压和电流传感器,以检测是否发生毛刺攻击,但也存在误报的可能。
  • 一些强劲的对手可以使用X射线机器窥探芯片,并探索晶体管的形态以确定其功能等信息。我们可以通过在系统中添加能够检测X射线的传感器来监测这种攻击,但无法阻止对手提取有用信息。

应该指出的是,安全范式和开放范式之间存在相当大的差异。安全范式通常采取模糊的方式提供保护,而开放硬件则更关注用户是否了解它。无论如何,请记住这句古老的格言:锁只会让诚实的人保持诚实,对于整个安全领域也是如此。有关如何构建安全IoT设备的更多信息,请访问OWASP(Open Web Application Security Project,开源Web应用安全项目)IoT 项目。

操作安全

即使制造商能够在其产品中实现所有安全设计原则,但如果最终用户不以安全的方式操作,也将是徒劳的。所以,建议最终用户注意以下操作:

  • 更改默认路由器名称与密码、网络名称 (SSID) 以及网络加密密钥。务必使用强密码原则,不要为两个网络设置相同的密码。
  • 将家庭网络分割成两个“虚拟”网络,这样IoT设备就不会被台式计算机、网络附加存储 (NAS) 设备等“看到”。要快速轻松地做到这一点,就需要为IoT网络设置访客网络功能。
  • 大多数IoT设备依赖智能手机应用程序来控制设备,因而需使应用程序保持最新状态,并在可用时使用2FA登录。
  • 禁用任何不需要的IoT设备功能。
  • 定期更新路由器和IoT设备固件。
  • 当IoT设备过期且无法正常更新时,请考虑更换为新型号。

增强工业安全性

面向消费者的IoT产品可能有很多,而面向工业领域的工业控制系统 (ICS) 则管理着许多极其重要且具有潜在危险的操作流程。从发电到工厂的所有过程都需要使用嵌入式数字技术(称为运营技术或OT;与以办公室为中心的信息技术或IT不同)来控制负责执行各种流程的设施和相关机械。ICS环境与严格的IT环境有很大的差异,因此需要特别加固OT设备和ICS网络,基本原则是ICS不应连接到互联网。虽然看似简单,但令人惊讶的是,违反这一基本规则的性为却屡见不鲜。有关如何保护ICS网络和设备的更多信息,请查看适用于ICS的MITRE ATT&CK和适用于企业的MITRE ATT&CK两个安全框架。

ICS系统安装场所的性质(例如,环境、化学或其他危险区域)意味着ICS设计优先考虑的是系统的可用性而非保密性。这种设计的好处在于,通常会采用冗余系统以在设备发生故障时提供安全防护。然而,ICS系统可能会运行几十年,并且可能不会始终保持最新状态。此外,所采用的很多协议可能已经比较老旧,而且在构建时考虑的是效率,而不是安全性。总的来说,ICS或IIoT领域具有独特的安全挑战,可能难以实施最优方案。然而,此类机器的嵌入式开发人员应在设计中融入现代化元素,并将安全性纳入未来的设计中,而不是事后补救。

作者简介

Michael Parks产品工程师 (P.E.) 是Green Shoe Garage的所有者。Green Shoe Garage是一家提供定制电子设计的工作室和技术咨询机构,位于马里兰州南部。Michael Parks创办了《S.T.E.A.M. Power Podcast》播客来提升公众对科技的认知。他拥有马里兰州专业工程师资质,并获得了约翰·霍普金斯大学系统工程硕士学位。