博客

为什么端到端安全对嵌入式系统至关重要

August 19, 2021
Secure Code Warrior
圆形安防摄像头镜头的特写,镜头中映照出周围的建筑以及一名手持相机的人。

嵌入式系统支撑着许多现代科技,从汽车的自适应巡航控制到智能冰箱的 Wi-Fi 连接,无所不包。随着网络攻击日益频繁,保护这些系统的安全已变得至关重要。

嵌入式设备是黑客的主要攻击目标,因为一旦攻击成功,入侵者便能获取设备所产生、接收和处理的数据。这往往会对嵌入式设备所驱动的整个大型系统造成严重后果。例如,关闭F-15 战斗机内部的嵌入式设备(该设备负责收集来自各种摄像头和传感器的数据),可能会严重削弱战斗机的防御能力。

我们撰写本文旨在涵盖您开发安全嵌入式系统所需的一切知识。内容包括:

  • 什么是嵌入式安全?
  • 实施嵌入式安全时面临的挑战。
  • 什么才算“安全”的嵌入式系统?
  • 为什么端到端安全在嵌入式生态系统中至关重要。
  • 一些嵌入式安全工具。
  • 典型的嵌入式解决方案缺少什么?
  • 嵌入式安全的未来。

什么是嵌入式安全?

嵌入式安全提供了一系列工具、流程和最佳实践,旨在保护嵌入式设备的软件和硬件安全。

由于嵌入式系统的硬件模块体积小巧,它们在内存和存储方面存在诸多限制。因此,将安全措施整合其中成为了一项巨大的设计挑战。然而,尽管困难重重,这却是当务之急。

许多由嵌入式设备驱动的小工具和机器都连接到了互联网。这意味着黑客可以获得未经授权的访问权限,并运行任何恶意代码。

嵌入式设备遭受攻击往往会波及其他连接组件,甚至导致整个系统瘫痪。例如,假设攻击者控制了允许汽车自动驾驶的嵌入式设备,黑客便可以操纵车辆偏离道路或驶入车流,从而造成严重的破坏。

关键的嵌入式系统安全挑战

嵌入式系统安全并未得到应有的重视。原因如下:

  1. 开发者意识不足:

开发者通常不了解开发安全嵌入式设备的最佳实践。这部分是因为第 2 点原因,另一部分是因为嵌入式应用比传统软件应用复杂得多。在受限的微型计算机环境中,理解其安全影响并为所有用例编写安全、高效的代码,确实极具挑战性。

  1. 缺乏标准化:

嵌入式系统目前缺乏统一的网络安全标准。尽管汽车行业正在缓慢尝试改变这一现状。过去几年中,研究人员发布了不少针对智能汽车网络安全考量的出版物。其中几份值得注意的包括SAE J3061《网络物理车辆系统网络安全指南》以及UNECE WP.29 关于网络安全和软件更新流程的法规。

  1. 第三方组件的使用

许多嵌入式设备需要第三方硬件和软件组件才能运行。通常,这些组件在使用前并未经过任何安全漏洞测试。

  1. 软件过时

过时的固件通常充斥着漏洞和潜在的可利用缺陷。尽管定期更新小型嵌入式设备的固件可能非常困难,但这绝不能被忽视。

  1. 直接连接互联网

许多嵌入式系统和设备直接连接到互联网。这意味着它们缺乏企业防火墙的保护,无法检测和阻止网络攻击。由于资源极其有限,在这种受限环境中实施严格的安全措施变得非常困难。

  1. 大规模攻击

嵌入式设备通常是规模化生产的。这意味着单一的漏洞或缺陷可能会影响全球数以百万计的设备。因此,控制嵌入式系统攻击的影响是一项巨大的挑战。

是什么让嵌入式系统安全?

在接下来的章节中,我们将探讨安全嵌入式系统的一些软件和硬件特性。

硬件安全最佳实践

一个安全的嵌入式系统具备:

  • 可信执行环境

可信执行环境 (TEE) 允许在硬件层面隔离安全关键型操作。例如,用户身份验证可以在隔离区域内执行,从而更好地保护敏感信息。

  • 适当划分的硬件资源

处理器、缓存、内存和网络接口等不同的硬件组件应进行适当隔离,使其功能尽可能独立。这有助于防止某个组件中的错误蔓延到其他组件。

  • 可执行空间保护 (ESP)

可执行空间保护 (ESP) 是一种将特定内存区域标记为不可执行的做法。如果有人试图在这些标记区域内执行任何代码,系统就会抛出异常。

软件安全最佳实践

在构建嵌入式软件时,应牢记以下最佳实践:

  • 使用安全启动:

嵌入式设备启动时,引导镜像会通过加密算法进行验证。这能确保启动序列正确无误,并保证软件(固件及任何其他相关数据)未被篡改。

  • 使用微内核操作系统

微内核操作系统比传统操作系统小得多,仅包含其功能的一个子集。内核空间非常精简,许多用户服务(如文件系统管理等)都被保留在独立的空间中,即用户空间。由于在内核空间运行的代码和操作更少,攻击面也随之显著缩小。

  • 使用规范的软件打包方式

所有软件应用程序都应是自包含且经过规范打包的。例如,如果应用程序需要第三方依赖项,则不应将其全局安装在操作系统中,而应将其作为应用程序包或容器的一部分。

  • 验证所有输入

任何从外部或不可信来源接收的数据,在传递给关键软件或硬件组件之前,都必须经过妥善的清理和验证。

如果应用程序从外部 API 集成中获取数据并据此切换某些设置,则在更改设置之前,必须对接收到的数据进行严格验证。

  • 保护静态数据:

存储在嵌入式设备上的所有敏感软件、数据、配置文件、安全密钥和密码等都应受到保护。这通常通过加密来实现。用于加密数据的私钥必须存储在专门构建的安全硬件中。

安全金字塔——嵌入式系统的端到端安全

安全作为事后补救措施的时代已经一去不复返了。安全不再仅仅是一项非功能性需求,如今它必须是内在的。设备需要实现“设计即安全”。为此,在嵌入式环境中实施端到端安全要求至关重要。这意味着:在选择硬件、定义系统架构、设计系统以及编写代码时,都必须时刻考虑安全性。

从硬件入手

无论软件安全性多么强大,如果硬件存在缺陷,依然容易受到攻击。片上安全技术可以实现安全启动,并高效管理加密功能和密钥。某些硬件组件还能使操作系统提供多种安全功能,如系统调用异常检测、文件系统加密和访问控制策略。

容错系统

构建容错系统有很多理由,避免差分故障分析攻击只是其中之一。在此类攻击中,潜在的黑客可以使用故障注入技术来尝试使嵌入式设备产生错误。不过,有几种方法可以检测并防范此类故障:

  • 复制最关键的操作,以便随时比较不同的输出,从而检测故障注入。
  • 默认失败:在处理多个条件(在 If 条件或 switch 块内)时,始终在默认情况下执行失败处理,即当其他条件均不匹配时。
  • 引入随机行为:在关键操作前添加微小的随机延迟,确保其时序不可预测。这对于入侵检测至关重要,因为它使黑客极难确定操作模式并执行时序攻击。
  • 防护屏蔽:制造商应使用屏蔽罩覆盖最关键的组件,以保护其免受外部干扰。
  • 检测异常波动:监测电压、电流或其他数值的异常波动,并据此引发异常处理。

保护您的应用程序……以及操作系统

在应用程序层面构建设备防御体系包括:

  • 选择经过测试、信誉良好且可定期更新的第三方软件和硬件组件。
  • 提升开发人员在嵌入式系统安全最佳实践方面的技能。
  • 使用微内核操作系统,确保在内核空间执行的操作数量降至最低。
  • 监控并防范包括病毒、特洛伊木马和恶意软件在内的软件攻击。
  • 移除所有不必要的服务。固件应仅保留绝对必要的功能。例如,如果您不需要传输文件或捕获数据包,则可以禁用文件传输协议以及 telnet 等网络包。
  • 使用 SFTP、IPsec、SSL、TLS、SSH 和 DNSSEC 等安全协议。

嵌入式系统安全工具

以下是一份非详尽的工具清单,可助力提升嵌入式系统的安全性:

  • Bus Blaster:一款可与硬件调试端口交互的高速调试平台。
  • Salae:用于解码 Serial、SPI 和 I2C 等多种协议。您可以使用社区构建的协议分析器,也可以自行开发。
  • Hydrabus:一款开源多功能硬件,可用于嵌入式硬件的调试、黑客攻击和/或渗透测试。
  • Exploit:一个用于物联网 (IoT) 安全测试和漏洞利用的开源框架。
  • FACT (固件分析与比较工具):用于自动化固件安全分析的框架。
  • Routersploit:一款针对嵌入式设备的开源漏洞利用框架。
  • Firmadyne:用于 Linux 嵌入式固件仿真和动态分析的开源系统。

现代嵌入式安全解决方案存在哪些不足?

尽管目前已有多种用于调试、漏洞利用和渗透测试的嵌入式解决方案,但它们并未得到广泛应用。业界重心仍主要放在设备的物理安全上,而在防御软件相关攻击方面投入的努力严重不足。即使是最简单且完全可以避免的应用安全风险和漏洞,在现代嵌入式设备中依然十分常见。

造成这一现象的主要原因是开发人员缺乏嵌入式安全意识。根据 Tripwire 进行的一项调查显示,68% 的 IT 专业人士认为其员工对潜在漏洞缺乏足够的认识。

开发人员往往不了解如何选择安全协议、避开哪些框架、隔离哪些硬件组件、处理敏感数据,以及如何确定最安全的加密算法。这种普遍的知识匮乏和对最佳实践的忽视,使得运行在嵌入式设备上的应用程序极易受到攻击。

嵌入式安全的未来

嵌入式安全市场正在进行大量投入。专家预计,该市场在 2021-2026 年期间的复合年增长率 (CAGR) 可达 5.5%。 随着物联网设备的大量涌现,我们有望看到新的嵌入式安全标准得以建立。

可穿戴医疗设备的日益普及也将增加对可靠嵌入式安全解决方案的需求。为了存储和处理敏感的医疗数据,设备必须通过特定的安全检查,我们希望这能促使供应商和工程师更加重视安全性。

未来,我们或许能拥有支持远程可视化、监控以及控制嵌入式设备核心软硬件组件的解决方案。这将彻底改变嵌入式系统安全领域。

归根结底,数字签名、数据加密、防火墙、访问控制和操作随机化等手段的作用终究有限。要构建真正安全的设备,开发人员必须接受编写安全代码的培训。在应用设计阶段识别并缓解潜在的安全风险,对于实现系统 本质安全至关重要。

Secure Code Warrior 如何提供帮助

Secure Code Warrior 的旗舰产品——学习平台——提供了大量互动挑战、课程和评估,旨在帮助开发人员编写安全的 C/C++ 代码。平台内容针对特定框架,且极具参与感。我们的 C/C++:Embed 编码挑战汲取了 MISRA C、AUTOSAR C++ (MISRA C++) 和 IEC 标准的精髓。

开发人员可以开启个性化的学习之旅,识别 C/C++ 特有的漏洞,并更重要的是学习如何修复这些缺陷。在此过程中,开发人员可以跟踪学习进度以发现自身短板,甚至能与同行进行友好的编码竞赛。了解更多关于 我们如何利用解决方案助力汽车和交通行业 的信息。

想了解我们的挑战有多么互动且专注于嵌入式领域吗?立即在学习平台上尝试 一些 C/C++:Embed 挑战 吧!

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。