SCW Icons
hero bg no divider
Blog

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

Secure Code Warrior
Published Aug 19, 2021
Last updated on Mar 10, 2026

嵌入式系统有助于提供许多现代技术。从汽车上的自适应巡航控制到智能冰箱上的 Wifi。随着网络攻击的增加,保护这些系统已变得至关重要。

嵌入式设备是黑客攻击的主要目标,因为成功的攻击可以让入侵者访问其生成、接收和处理的数据。这通常会对由嵌入式设备供电的大型系统产生严重影响。例如关闭 F-15 战斗机内的嵌入式设备,它从各种摄像机和传感器收集数据,可能会严重阻碍飞机的防御。

我们撰写这篇文章是为了涵盖开始开发安全嵌入式系统所需的一切。以下是所包含的内容:

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

什么是嵌入式安全?

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

由于嵌入式系统的硬件模块很小,它们具有各种内存和存储限制。因此,将安全措施纳入其中成为一项巨大的设计挑战。但是,尽管可能具有挑战性,但这是当务之急。

许多由嵌入式设备驱动的小工具和机器也连接到互联网。这意味着黑客可以在未经授权的情况下访问它们,并运行任何恶意代码。

嵌入式设备中的黑客攻击通常会传播到其他连接的组件,和/或使整个系统陷入瘫痪。例如,假设攻击者能够控制允许驾驶员将汽车置于自动驾驶状态的嵌入式设备。然后,黑客可以将汽车引向越野或进入交通,这可能会造成很大的损失。

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

嵌入式系统安全没有得到应有的关注。以下是一些原因:

  1. 缺乏开发者意识:

开发人员通常不知道开发安全嵌入式设备的最佳实践。部分原因是 #2 点,部分原因是嵌入式应用程序比传统软件应用程序复杂得多。了解它们的安全影响,为所有用例编写安全、高性能的代码,在受限的微机环境中也是如此,也可能是一项挑战。

  1. 缺乏标准化:

嵌入式系统缺乏网络安全标准。尽管汽车行业正在慢慢尝试改变这种状况。在过去的几年中,研究人员发布了不少涉及智能汽车网络安全注意事项的出版物。一些值得注意的是 SAE J3061,“网络物理车辆系统的网络安全指南:”欧洲经委会 WP.29 网络安全和软件更新程序条例

  1. 使用第三方组件

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

  1. 过时的软件

过时的固件通常充斥着错误和可能被利用的漏洞。尽管在小型嵌入式设备上定期更新固件可能特别困难,但这不是一件可以忽视的事情。

  1. 直接互联网连接

许多嵌入式系统和设备直接连接到互联网。这意味着他们没有企业防火墙的保护,企业防火墙可以检测和防止网络攻击。由于资源非常宝贵,在如此有限的环境中实施严格的安全级别变得非常困难。

  1. 大规模攻击

嵌入式设备通常是大规模生产的。这意味着单个漏洞或漏洞可能会影响数百万台设备,有时甚至影响全球。因此,遏制嵌入式系统攻击的影响可能是一项巨大的挑战。

是什么造就了嵌入式系统 安全?

在以下各节中,我们将研究安全嵌入式系统的一些软件和硬件特性。

硬件安全最佳实践

安全的嵌入式系统具有:

  • 可信的执行环境

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

  • 对硬件资源进行适当分区

处理器、缓存、内存和网络接口等不同的硬件组件应适当隔离,尽可能独立地提供其功能。这有助于防止一个组件中的错误传播到其他组件。

  • 可执行空间保护 (ESP)

可执行空间保护(ESP)是将某些内存区域标记为不可执行的做法。如果有人尝试在这些标记区域内执行任何代码,则会引发异常。

软件安全最佳实践

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

  • 使用安全启动:

当嵌入式设备启动时,启动映像将使用加密算法进行验证。这样可以确保启动顺序正确,并且软件(固件和任何其他相关数据)未被篡改。

  • 使用微内核操作系统

微内核操作系统比传统操作系统小得多,包含其部分功能。内核空间很小,许多用户服务(如文件系统管理等)都保存在一个单独的空间中,称为 用户空间。 由于在内核空间中运行的代码和操作较少,因此攻击面显著减少。

  • 使用正确打包的软件应用程序

任何和所有软件应用程序都应是独立的,并应正确打包。例如,如果应用程序需要第三方依赖关系,则不应将其全局安装在操作系统上。相反,它应该是应用程序包/容器的一部分。

  • 验证所有输入

从外部和/或不可信来源收到的任何和/或所有数据在传递给关键软件和/或硬件组件之前,都应经过适当的清理和验证。

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

  • 保护静态数据:

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

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

过去,安全是事后才想到的日子已经一去不复返了。非功能需求。今天,安全性必须是内在的。设备在设计上必须是安全的。为此,必须在嵌入式环境中实现端到端的安全要求。这意味着:在选择硬件、定义系统架构、设计系统,当然还有编写代码时要考虑安全性。

从硬件开始

无论您的软件安全性多么强大,如果缺少硬件,您都将容易受到攻击。片上安全技术可以实现安全启动以及加密功能和机密的有效管理。某些硬件组件还可以使操作系统提供各种安全功能,例如系统调用异常检测、文件系统加密和访问控制策略。

容错系统

设计容错系统的原因有很多,避免差异故障分析攻击只是其中之一。在这样的攻击中,潜在的黑客可以使用故障注入技术来尝试在嵌入式设备中制造错误。但是,有几种可能的方法可以检测和防范此类故障:

  • 复制最关键的操作,以便可以在任何给定时间比较不同的输出,以检测故障的注入。
  • 默认情况下失败:处理多个条件时(在 If 条件或开关模块内),在默认情况下,即没有其他条件匹配时,始终失败。
  • 引入随机行为:在关键操作之前添加较小的随机延迟可确保其时间不可预测。这是入侵检测的关键,因为它使黑客很难确定操作模式和进行定时攻击。
  • 防护罩:制造商应使用防护罩来覆盖最关键的组件,保护它们免受外部操纵。
  • 检测异常波动:感知电压、电流或其他值的异常波动,并相应地引发异常。

保护您的应用程序... 和操作系统

在应用程序层面建立设备的防御包括:

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

嵌入式系统安全工具

以下是可以帮助保护嵌入式系统的工具的非详尽列表:

  • 公交车冲击波:可以与硬件调试端口进行交互的高速调试平台。
  • Salae: 解码各种协议,如串行、SPI 和 I2C 等。你可以使用社区构建的协议分析器,也可以自己构建。
  • Hydrabus:开源、多工具硬件,可用于嵌入式硬件的调试、黑客攻击和/或渗透测试。
  • 漏洞: 开源物联网 (IoT) 安全测试和利用框架。
  • FACT(固件分析和比较工具):用于自动进行固件安全分析的框架。
  • Routersploit: 嵌入式设备的开源开发框架。
  • Firmadyne:用于仿真和动态分析基于 Linux 的嵌入式固件的开源系统。

现代嵌入式安全解决方案缺失在哪里?

尽管有各种解决方案可用于调试、利用和笔试嵌入式解决方案,但它们并不容易使用。重点仍然是保护设备的物理安全,但在防范与软件相关的攻击方面做出的努力还不够。即使是最简单且易于避免的应用程序安全风险和漏洞在现代嵌入式设备中仍然很常见。

其中的一个重要原因是开发人员对嵌入式安全缺乏意识。 根据Tripwire进行的一项调查,68% 的 IT 专业人员认为他们的员工对潜在漏洞的认识不足。

开发人员不知道诸如:选择哪些安全协议、应避免使用哪些框架、要隔离哪些硬件组件、如何处理敏感数据以及如何确定哪种加密算法最安全。这种普遍的知识缺乏以及对最佳实践的漠视,使得在嵌入式设备上运行的应用程序容易受到损害。

嵌入式安全的未来

嵌入式安全市场正在做大量工作。专家认为,市场的复合年增长率(CAGR)可以达到 在2021-2026年期间,这一数字为5.5%。 随着越来越多的物联网设备的推出,我们可以期待新的嵌入式安全标准的建立。

可穿戴医疗设备的日益普及也将增加对可靠的嵌入式安全解决方案的需求。要使设备包含和处理敏感医疗数据,它们需要通过特定的安全清单,我们希望这将使供应商和工程师更加关注安全性。

将来,我们可能还会有解决方案,可以远程查看、监控和控制嵌入式设备中的主要软件和硬件组件。这将真正改变嵌入式系统安全领域的游戏规则。

归根结底,数字签名、加密数据、添加防火墙、实施访问控制和随机化操作只能让你走那么远。要构建真正安全的设备,开发人员需要接受编写安全代码的培训。识别潜在的安全风险并在应用程序设计阶段缓解这些风险,对系统的制造大有帮助 本质上是安全的。

安全代码勇士如何提供帮助

Secure Code Warrior的旗舰产品——学习平台——包含许多互动挑战、课程和评估,可以帮助培训开发人员编写安全的C/C++代码。该平台上的内容是针对特定框架的,并且极具吸引力。我们的 C/C++: Embed 编程挑战赛从 MISRA C、AUTOSAR C++ (MISRA C++) 和 IEC 中汲取了灵感。

开发人员可以开启个性化学习之旅,识别特定于 C/C++ 的漏洞,更重要的是学会修复这些错误。在此过程中,开发人员可以跟踪自己的进度以找出自己的弱点,甚至可以与同行一起参加友好的编程竞赛。了解更多关于 我们如何帮助汽车和运输行业 使用我们的解决方案。

想了解我们的挑战有多互动和嵌入式吗?试试 一些 C/C++: Embed 挑战 今天在学习平台上!

查看资源
查看资源

本文将概述如何保护嵌入式系统。我们将从基本定义开始,然后转到嵌入式安全方面的挑战、一些典型的解决方案以及缺失的难题是什么。

对更多感兴趣?

Secure Code Warrior makes secure coding a positive and engaging experience for developers as they increase their skills. We guide each coder along their own preferred learning pathway, so that security-skilled developers become the everyday superheroes of our connected world.

learn more

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

预订演示
分享到:
linkedin brandsSocialx logo
作者
Secure Code Warrior
Published Aug 19, 2021

Secure Code Warrior makes secure coding a positive and engaging experience for developers as they increase their skills. We guide each coder along their own preferred learning pathway, so that security-skilled developers become the everyday superheroes of our connected world.

This article was written by Secure Code Warrior's team of industry experts, committed to empowering developers with the knowledge and skills to build secure software from the start. Drawing on deep expertise in secure coding practices, industry trends, and real-world insights.

分享到:
linkedin brandsSocialx logo

嵌入式系统有助于提供许多现代技术。从汽车上的自适应巡航控制到智能冰箱上的 Wifi。随着网络攻击的增加,保护这些系统已变得至关重要。

嵌入式设备是黑客攻击的主要目标,因为成功的攻击可以让入侵者访问其生成、接收和处理的数据。这通常会对由嵌入式设备供电的大型系统产生严重影响。例如关闭 F-15 战斗机内的嵌入式设备,它从各种摄像机和传感器收集数据,可能会严重阻碍飞机的防御。

我们撰写这篇文章是为了涵盖开始开发安全嵌入式系统所需的一切。以下是所包含的内容:

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

什么是嵌入式安全?

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

由于嵌入式系统的硬件模块很小,它们具有各种内存和存储限制。因此,将安全措施纳入其中成为一项巨大的设计挑战。但是,尽管可能具有挑战性,但这是当务之急。

许多由嵌入式设备驱动的小工具和机器也连接到互联网。这意味着黑客可以在未经授权的情况下访问它们,并运行任何恶意代码。

嵌入式设备中的黑客攻击通常会传播到其他连接的组件,和/或使整个系统陷入瘫痪。例如,假设攻击者能够控制允许驾驶员将汽车置于自动驾驶状态的嵌入式设备。然后,黑客可以将汽车引向越野或进入交通,这可能会造成很大的损失。

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

嵌入式系统安全没有得到应有的关注。以下是一些原因:

  1. 缺乏开发者意识:

开发人员通常不知道开发安全嵌入式设备的最佳实践。部分原因是 #2 点,部分原因是嵌入式应用程序比传统软件应用程序复杂得多。了解它们的安全影响,为所有用例编写安全、高性能的代码,在受限的微机环境中也是如此,也可能是一项挑战。

  1. 缺乏标准化:

嵌入式系统缺乏网络安全标准。尽管汽车行业正在慢慢尝试改变这种状况。在过去的几年中,研究人员发布了不少涉及智能汽车网络安全注意事项的出版物。一些值得注意的是 SAE J3061,“网络物理车辆系统的网络安全指南:”欧洲经委会 WP.29 网络安全和软件更新程序条例

  1. 使用第三方组件

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

  1. 过时的软件

过时的固件通常充斥着错误和可能被利用的漏洞。尽管在小型嵌入式设备上定期更新固件可能特别困难,但这不是一件可以忽视的事情。

  1. 直接互联网连接

许多嵌入式系统和设备直接连接到互联网。这意味着他们没有企业防火墙的保护,企业防火墙可以检测和防止网络攻击。由于资源非常宝贵,在如此有限的环境中实施严格的安全级别变得非常困难。

  1. 大规模攻击

嵌入式设备通常是大规模生产的。这意味着单个漏洞或漏洞可能会影响数百万台设备,有时甚至影响全球。因此,遏制嵌入式系统攻击的影响可能是一项巨大的挑战。

是什么造就了嵌入式系统 安全?

在以下各节中,我们将研究安全嵌入式系统的一些软件和硬件特性。

硬件安全最佳实践

安全的嵌入式系统具有:

  • 可信的执行环境

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

  • 对硬件资源进行适当分区

处理器、缓存、内存和网络接口等不同的硬件组件应适当隔离,尽可能独立地提供其功能。这有助于防止一个组件中的错误传播到其他组件。

  • 可执行空间保护 (ESP)

可执行空间保护(ESP)是将某些内存区域标记为不可执行的做法。如果有人尝试在这些标记区域内执行任何代码,则会引发异常。

软件安全最佳实践

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

  • 使用安全启动:

当嵌入式设备启动时,启动映像将使用加密算法进行验证。这样可以确保启动顺序正确,并且软件(固件和任何其他相关数据)未被篡改。

  • 使用微内核操作系统

微内核操作系统比传统操作系统小得多,包含其部分功能。内核空间很小,许多用户服务(如文件系统管理等)都保存在一个单独的空间中,称为 用户空间。 由于在内核空间中运行的代码和操作较少,因此攻击面显著减少。

  • 使用正确打包的软件应用程序

任何和所有软件应用程序都应是独立的,并应正确打包。例如,如果应用程序需要第三方依赖关系,则不应将其全局安装在操作系统上。相反,它应该是应用程序包/容器的一部分。

  • 验证所有输入

从外部和/或不可信来源收到的任何和/或所有数据在传递给关键软件和/或硬件组件之前,都应经过适当的清理和验证。

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

  • 保护静态数据:

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

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

过去,安全是事后才想到的日子已经一去不复返了。非功能需求。今天,安全性必须是内在的。设备在设计上必须是安全的。为此,必须在嵌入式环境中实现端到端的安全要求。这意味着:在选择硬件、定义系统架构、设计系统,当然还有编写代码时要考虑安全性。

从硬件开始

无论您的软件安全性多么强大,如果缺少硬件,您都将容易受到攻击。片上安全技术可以实现安全启动以及加密功能和机密的有效管理。某些硬件组件还可以使操作系统提供各种安全功能,例如系统调用异常检测、文件系统加密和访问控制策略。

容错系统

设计容错系统的原因有很多,避免差异故障分析攻击只是其中之一。在这样的攻击中,潜在的黑客可以使用故障注入技术来尝试在嵌入式设备中制造错误。但是,有几种可能的方法可以检测和防范此类故障:

  • 复制最关键的操作,以便可以在任何给定时间比较不同的输出,以检测故障的注入。
  • 默认情况下失败:处理多个条件时(在 If 条件或开关模块内),在默认情况下,即没有其他条件匹配时,始终失败。
  • 引入随机行为:在关键操作之前添加较小的随机延迟可确保其时间不可预测。这是入侵检测的关键,因为它使黑客很难确定操作模式和进行定时攻击。
  • 防护罩:制造商应使用防护罩来覆盖最关键的组件,保护它们免受外部操纵。
  • 检测异常波动:感知电压、电流或其他值的异常波动,并相应地引发异常。

保护您的应用程序... 和操作系统

在应用程序层面建立设备的防御包括:

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

嵌入式系统安全工具

以下是可以帮助保护嵌入式系统的工具的非详尽列表:

  • 公交车冲击波:可以与硬件调试端口进行交互的高速调试平台。
  • Salae: 解码各种协议,如串行、SPI 和 I2C 等。你可以使用社区构建的协议分析器,也可以自己构建。
  • Hydrabus:开源、多工具硬件,可用于嵌入式硬件的调试、黑客攻击和/或渗透测试。
  • 漏洞: 开源物联网 (IoT) 安全测试和利用框架。
  • FACT(固件分析和比较工具):用于自动进行固件安全分析的框架。
  • Routersploit: 嵌入式设备的开源开发框架。
  • Firmadyne:用于仿真和动态分析基于 Linux 的嵌入式固件的开源系统。

现代嵌入式安全解决方案缺失在哪里?

尽管有各种解决方案可用于调试、利用和笔试嵌入式解决方案,但它们并不容易使用。重点仍然是保护设备的物理安全,但在防范与软件相关的攻击方面做出的努力还不够。即使是最简单且易于避免的应用程序安全风险和漏洞在现代嵌入式设备中仍然很常见。

其中的一个重要原因是开发人员对嵌入式安全缺乏意识。 根据Tripwire进行的一项调查,68% 的 IT 专业人员认为他们的员工对潜在漏洞的认识不足。

开发人员不知道诸如:选择哪些安全协议、应避免使用哪些框架、要隔离哪些硬件组件、如何处理敏感数据以及如何确定哪种加密算法最安全。这种普遍的知识缺乏以及对最佳实践的漠视,使得在嵌入式设备上运行的应用程序容易受到损害。

嵌入式安全的未来

嵌入式安全市场正在做大量工作。专家认为,市场的复合年增长率(CAGR)可以达到 在2021-2026年期间,这一数字为5.5%。 随着越来越多的物联网设备的推出,我们可以期待新的嵌入式安全标准的建立。

可穿戴医疗设备的日益普及也将增加对可靠的嵌入式安全解决方案的需求。要使设备包含和处理敏感医疗数据,它们需要通过特定的安全清单,我们希望这将使供应商和工程师更加关注安全性。

将来,我们可能还会有解决方案,可以远程查看、监控和控制嵌入式设备中的主要软件和硬件组件。这将真正改变嵌入式系统安全领域的游戏规则。

归根结底,数字签名、加密数据、添加防火墙、实施访问控制和随机化操作只能让你走那么远。要构建真正安全的设备,开发人员需要接受编写安全代码的培训。识别潜在的安全风险并在应用程序设计阶段缓解这些风险,对系统的制造大有帮助 本质上是安全的。

安全代码勇士如何提供帮助

Secure Code Warrior的旗舰产品——学习平台——包含许多互动挑战、课程和评估,可以帮助培训开发人员编写安全的C/C++代码。该平台上的内容是针对特定框架的,并且极具吸引力。我们的 C/C++: Embed 编程挑战赛从 MISRA C、AUTOSAR C++ (MISRA C++) 和 IEC 中汲取了灵感。

开发人员可以开启个性化学习之旅,识别特定于 C/C++ 的漏洞,更重要的是学会修复这些错误。在此过程中,开发人员可以跟踪自己的进度以找出自己的弱点,甚至可以与同行一起参加友好的编程竞赛。了解更多关于 我们如何帮助汽车和运输行业 使用我们的解决方案。

想了解我们的挑战有多互动和嵌入式吗?试试 一些 C/C++: Embed 挑战 今天在学习平台上!

查看资源
查看资源

填写下面的表格下载报告

我们希望获得您的许可,以便向您发送有关我们的产品和/或相关安全编码主题的信息。我们将始终非常谨慎地对待您的个人信息,绝不会出于营销目的将其出售给其他公司。

提交
scw success icon
scw error icon
要提交表单,请启用 “分析” Cookie。完成后,可以随意再次禁用它们。

嵌入式系统有助于提供许多现代技术。从汽车上的自适应巡航控制到智能冰箱上的 Wifi。随着网络攻击的增加,保护这些系统已变得至关重要。

嵌入式设备是黑客攻击的主要目标,因为成功的攻击可以让入侵者访问其生成、接收和处理的数据。这通常会对由嵌入式设备供电的大型系统产生严重影响。例如关闭 F-15 战斗机内的嵌入式设备,它从各种摄像机和传感器收集数据,可能会严重阻碍飞机的防御。

我们撰写这篇文章是为了涵盖开始开发安全嵌入式系统所需的一切。以下是所包含的内容:

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

什么是嵌入式安全?

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

由于嵌入式系统的硬件模块很小,它们具有各种内存和存储限制。因此,将安全措施纳入其中成为一项巨大的设计挑战。但是,尽管可能具有挑战性,但这是当务之急。

许多由嵌入式设备驱动的小工具和机器也连接到互联网。这意味着黑客可以在未经授权的情况下访问它们,并运行任何恶意代码。

嵌入式设备中的黑客攻击通常会传播到其他连接的组件,和/或使整个系统陷入瘫痪。例如,假设攻击者能够控制允许驾驶员将汽车置于自动驾驶状态的嵌入式设备。然后,黑客可以将汽车引向越野或进入交通,这可能会造成很大的损失。

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

嵌入式系统安全没有得到应有的关注。以下是一些原因:

  1. 缺乏开发者意识:

开发人员通常不知道开发安全嵌入式设备的最佳实践。部分原因是 #2 点,部分原因是嵌入式应用程序比传统软件应用程序复杂得多。了解它们的安全影响,为所有用例编写安全、高性能的代码,在受限的微机环境中也是如此,也可能是一项挑战。

  1. 缺乏标准化:

嵌入式系统缺乏网络安全标准。尽管汽车行业正在慢慢尝试改变这种状况。在过去的几年中,研究人员发布了不少涉及智能汽车网络安全注意事项的出版物。一些值得注意的是 SAE J3061,“网络物理车辆系统的网络安全指南:”欧洲经委会 WP.29 网络安全和软件更新程序条例

  1. 使用第三方组件

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

  1. 过时的软件

过时的固件通常充斥着错误和可能被利用的漏洞。尽管在小型嵌入式设备上定期更新固件可能特别困难,但这不是一件可以忽视的事情。

  1. 直接互联网连接

许多嵌入式系统和设备直接连接到互联网。这意味着他们没有企业防火墙的保护,企业防火墙可以检测和防止网络攻击。由于资源非常宝贵,在如此有限的环境中实施严格的安全级别变得非常困难。

  1. 大规模攻击

嵌入式设备通常是大规模生产的。这意味着单个漏洞或漏洞可能会影响数百万台设备,有时甚至影响全球。因此,遏制嵌入式系统攻击的影响可能是一项巨大的挑战。

是什么造就了嵌入式系统 安全?

在以下各节中,我们将研究安全嵌入式系统的一些软件和硬件特性。

硬件安全最佳实践

安全的嵌入式系统具有:

  • 可信的执行环境

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

  • 对硬件资源进行适当分区

处理器、缓存、内存和网络接口等不同的硬件组件应适当隔离,尽可能独立地提供其功能。这有助于防止一个组件中的错误传播到其他组件。

  • 可执行空间保护 (ESP)

可执行空间保护(ESP)是将某些内存区域标记为不可执行的做法。如果有人尝试在这些标记区域内执行任何代码,则会引发异常。

软件安全最佳实践

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

  • 使用安全启动:

当嵌入式设备启动时,启动映像将使用加密算法进行验证。这样可以确保启动顺序正确,并且软件(固件和任何其他相关数据)未被篡改。

  • 使用微内核操作系统

微内核操作系统比传统操作系统小得多,包含其部分功能。内核空间很小,许多用户服务(如文件系统管理等)都保存在一个单独的空间中,称为 用户空间。 由于在内核空间中运行的代码和操作较少,因此攻击面显著减少。

  • 使用正确打包的软件应用程序

任何和所有软件应用程序都应是独立的,并应正确打包。例如,如果应用程序需要第三方依赖关系,则不应将其全局安装在操作系统上。相反,它应该是应用程序包/容器的一部分。

  • 验证所有输入

从外部和/或不可信来源收到的任何和/或所有数据在传递给关键软件和/或硬件组件之前,都应经过适当的清理和验证。

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

  • 保护静态数据:

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

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

过去,安全是事后才想到的日子已经一去不复返了。非功能需求。今天,安全性必须是内在的。设备在设计上必须是安全的。为此,必须在嵌入式环境中实现端到端的安全要求。这意味着:在选择硬件、定义系统架构、设计系统,当然还有编写代码时要考虑安全性。

从硬件开始

无论您的软件安全性多么强大,如果缺少硬件,您都将容易受到攻击。片上安全技术可以实现安全启动以及加密功能和机密的有效管理。某些硬件组件还可以使操作系统提供各种安全功能,例如系统调用异常检测、文件系统加密和访问控制策略。

容错系统

设计容错系统的原因有很多,避免差异故障分析攻击只是其中之一。在这样的攻击中,潜在的黑客可以使用故障注入技术来尝试在嵌入式设备中制造错误。但是,有几种可能的方法可以检测和防范此类故障:

  • 复制最关键的操作,以便可以在任何给定时间比较不同的输出,以检测故障的注入。
  • 默认情况下失败:处理多个条件时(在 If 条件或开关模块内),在默认情况下,即没有其他条件匹配时,始终失败。
  • 引入随机行为:在关键操作之前添加较小的随机延迟可确保其时间不可预测。这是入侵检测的关键,因为它使黑客很难确定操作模式和进行定时攻击。
  • 防护罩:制造商应使用防护罩来覆盖最关键的组件,保护它们免受外部操纵。
  • 检测异常波动:感知电压、电流或其他值的异常波动,并相应地引发异常。

保护您的应用程序... 和操作系统

在应用程序层面建立设备的防御包括:

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

嵌入式系统安全工具

以下是可以帮助保护嵌入式系统的工具的非详尽列表:

  • 公交车冲击波:可以与硬件调试端口进行交互的高速调试平台。
  • Salae: 解码各种协议,如串行、SPI 和 I2C 等。你可以使用社区构建的协议分析器,也可以自己构建。
  • Hydrabus:开源、多工具硬件,可用于嵌入式硬件的调试、黑客攻击和/或渗透测试。
  • 漏洞: 开源物联网 (IoT) 安全测试和利用框架。
  • FACT(固件分析和比较工具):用于自动进行固件安全分析的框架。
  • Routersploit: 嵌入式设备的开源开发框架。
  • Firmadyne:用于仿真和动态分析基于 Linux 的嵌入式固件的开源系统。

现代嵌入式安全解决方案缺失在哪里?

尽管有各种解决方案可用于调试、利用和笔试嵌入式解决方案,但它们并不容易使用。重点仍然是保护设备的物理安全,但在防范与软件相关的攻击方面做出的努力还不够。即使是最简单且易于避免的应用程序安全风险和漏洞在现代嵌入式设备中仍然很常见。

其中的一个重要原因是开发人员对嵌入式安全缺乏意识。 根据Tripwire进行的一项调查,68% 的 IT 专业人员认为他们的员工对潜在漏洞的认识不足。

开发人员不知道诸如:选择哪些安全协议、应避免使用哪些框架、要隔离哪些硬件组件、如何处理敏感数据以及如何确定哪种加密算法最安全。这种普遍的知识缺乏以及对最佳实践的漠视,使得在嵌入式设备上运行的应用程序容易受到损害。

嵌入式安全的未来

嵌入式安全市场正在做大量工作。专家认为,市场的复合年增长率(CAGR)可以达到 在2021-2026年期间,这一数字为5.5%。 随着越来越多的物联网设备的推出,我们可以期待新的嵌入式安全标准的建立。

可穿戴医疗设备的日益普及也将增加对可靠的嵌入式安全解决方案的需求。要使设备包含和处理敏感医疗数据,它们需要通过特定的安全清单,我们希望这将使供应商和工程师更加关注安全性。

将来,我们可能还会有解决方案,可以远程查看、监控和控制嵌入式设备中的主要软件和硬件组件。这将真正改变嵌入式系统安全领域的游戏规则。

归根结底,数字签名、加密数据、添加防火墙、实施访问控制和随机化操作只能让你走那么远。要构建真正安全的设备,开发人员需要接受编写安全代码的培训。识别潜在的安全风险并在应用程序设计阶段缓解这些风险,对系统的制造大有帮助 本质上是安全的。

安全代码勇士如何提供帮助

Secure Code Warrior的旗舰产品——学习平台——包含许多互动挑战、课程和评估,可以帮助培训开发人员编写安全的C/C++代码。该平台上的内容是针对特定框架的,并且极具吸引力。我们的 C/C++: Embed 编程挑战赛从 MISRA C、AUTOSAR C++ (MISRA C++) 和 IEC 中汲取了灵感。

开发人员可以开启个性化学习之旅,识别特定于 C/C++ 的漏洞,更重要的是学会修复这些错误。在此过程中,开发人员可以跟踪自己的进度以找出自己的弱点,甚至可以与同行一起参加友好的编程竞赛。了解更多关于 我们如何帮助汽车和运输行业 使用我们的解决方案。

想了解我们的挑战有多互动和嵌入式吗?试试 一些 C/C++: Embed 挑战 今天在学习平台上!

观看网络研讨会
开始吧
learn more

点击下面的链接并下载此资源的PDF。

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

查看报告预订演示
查看资源
分享到:
linkedin brandsSocialx logo
对更多感兴趣?

分享到:
linkedin brandsSocialx logo
作者
Secure Code Warrior
Published Aug 19, 2021

Secure Code Warrior makes secure coding a positive and engaging experience for developers as they increase their skills. We guide each coder along their own preferred learning pathway, so that security-skilled developers become the everyday superheroes of our connected world.

This article was written by Secure Code Warrior's team of industry experts, committed to empowering developers with the knowledge and skills to build secure software from the start. Drawing on deep expertise in secure coding practices, industry trends, and real-world insights.

分享到:
linkedin brandsSocialx logo

嵌入式系统有助于提供许多现代技术。从汽车上的自适应巡航控制到智能冰箱上的 Wifi。随着网络攻击的增加,保护这些系统已变得至关重要。

嵌入式设备是黑客攻击的主要目标,因为成功的攻击可以让入侵者访问其生成、接收和处理的数据。这通常会对由嵌入式设备供电的大型系统产生严重影响。例如关闭 F-15 战斗机内的嵌入式设备,它从各种摄像机和传感器收集数据,可能会严重阻碍飞机的防御。

我们撰写这篇文章是为了涵盖开始开发安全嵌入式系统所需的一切。以下是所包含的内容:

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

什么是嵌入式安全?

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

由于嵌入式系统的硬件模块很小,它们具有各种内存和存储限制。因此,将安全措施纳入其中成为一项巨大的设计挑战。但是,尽管可能具有挑战性,但这是当务之急。

许多由嵌入式设备驱动的小工具和机器也连接到互联网。这意味着黑客可以在未经授权的情况下访问它们,并运行任何恶意代码。

嵌入式设备中的黑客攻击通常会传播到其他连接的组件,和/或使整个系统陷入瘫痪。例如,假设攻击者能够控制允许驾驶员将汽车置于自动驾驶状态的嵌入式设备。然后,黑客可以将汽车引向越野或进入交通,这可能会造成很大的损失。

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

嵌入式系统安全没有得到应有的关注。以下是一些原因:

  1. 缺乏开发者意识:

开发人员通常不知道开发安全嵌入式设备的最佳实践。部分原因是 #2 点,部分原因是嵌入式应用程序比传统软件应用程序复杂得多。了解它们的安全影响,为所有用例编写安全、高性能的代码,在受限的微机环境中也是如此,也可能是一项挑战。

  1. 缺乏标准化:

嵌入式系统缺乏网络安全标准。尽管汽车行业正在慢慢尝试改变这种状况。在过去的几年中,研究人员发布了不少涉及智能汽车网络安全注意事项的出版物。一些值得注意的是 SAE J3061,“网络物理车辆系统的网络安全指南:”欧洲经委会 WP.29 网络安全和软件更新程序条例

  1. 使用第三方组件

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

  1. 过时的软件

过时的固件通常充斥着错误和可能被利用的漏洞。尽管在小型嵌入式设备上定期更新固件可能特别困难,但这不是一件可以忽视的事情。

  1. 直接互联网连接

许多嵌入式系统和设备直接连接到互联网。这意味着他们没有企业防火墙的保护,企业防火墙可以检测和防止网络攻击。由于资源非常宝贵,在如此有限的环境中实施严格的安全级别变得非常困难。

  1. 大规模攻击

嵌入式设备通常是大规模生产的。这意味着单个漏洞或漏洞可能会影响数百万台设备,有时甚至影响全球。因此,遏制嵌入式系统攻击的影响可能是一项巨大的挑战。

是什么造就了嵌入式系统 安全?

在以下各节中,我们将研究安全嵌入式系统的一些软件和硬件特性。

硬件安全最佳实践

安全的嵌入式系统具有:

  • 可信的执行环境

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

  • 对硬件资源进行适当分区

处理器、缓存、内存和网络接口等不同的硬件组件应适当隔离,尽可能独立地提供其功能。这有助于防止一个组件中的错误传播到其他组件。

  • 可执行空间保护 (ESP)

可执行空间保护(ESP)是将某些内存区域标记为不可执行的做法。如果有人尝试在这些标记区域内执行任何代码,则会引发异常。

软件安全最佳实践

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

  • 使用安全启动:

当嵌入式设备启动时,启动映像将使用加密算法进行验证。这样可以确保启动顺序正确,并且软件(固件和任何其他相关数据)未被篡改。

  • 使用微内核操作系统

微内核操作系统比传统操作系统小得多,包含其部分功能。内核空间很小,许多用户服务(如文件系统管理等)都保存在一个单独的空间中,称为 用户空间。 由于在内核空间中运行的代码和操作较少,因此攻击面显著减少。

  • 使用正确打包的软件应用程序

任何和所有软件应用程序都应是独立的,并应正确打包。例如,如果应用程序需要第三方依赖关系,则不应将其全局安装在操作系统上。相反,它应该是应用程序包/容器的一部分。

  • 验证所有输入

从外部和/或不可信来源收到的任何和/或所有数据在传递给关键软件和/或硬件组件之前,都应经过适当的清理和验证。

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

  • 保护静态数据:

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

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

过去,安全是事后才想到的日子已经一去不复返了。非功能需求。今天,安全性必须是内在的。设备在设计上必须是安全的。为此,必须在嵌入式环境中实现端到端的安全要求。这意味着:在选择硬件、定义系统架构、设计系统,当然还有编写代码时要考虑安全性。

从硬件开始

无论您的软件安全性多么强大,如果缺少硬件,您都将容易受到攻击。片上安全技术可以实现安全启动以及加密功能和机密的有效管理。某些硬件组件还可以使操作系统提供各种安全功能,例如系统调用异常检测、文件系统加密和访问控制策略。

容错系统

设计容错系统的原因有很多,避免差异故障分析攻击只是其中之一。在这样的攻击中,潜在的黑客可以使用故障注入技术来尝试在嵌入式设备中制造错误。但是,有几种可能的方法可以检测和防范此类故障:

  • 复制最关键的操作,以便可以在任何给定时间比较不同的输出,以检测故障的注入。
  • 默认情况下失败:处理多个条件时(在 If 条件或开关模块内),在默认情况下,即没有其他条件匹配时,始终失败。
  • 引入随机行为:在关键操作之前添加较小的随机延迟可确保其时间不可预测。这是入侵检测的关键,因为它使黑客很难确定操作模式和进行定时攻击。
  • 防护罩:制造商应使用防护罩来覆盖最关键的组件,保护它们免受外部操纵。
  • 检测异常波动:感知电压、电流或其他值的异常波动,并相应地引发异常。

保护您的应用程序... 和操作系统

在应用程序层面建立设备的防御包括:

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

嵌入式系统安全工具

以下是可以帮助保护嵌入式系统的工具的非详尽列表:

  • 公交车冲击波:可以与硬件调试端口进行交互的高速调试平台。
  • Salae: 解码各种协议,如串行、SPI 和 I2C 等。你可以使用社区构建的协议分析器,也可以自己构建。
  • Hydrabus:开源、多工具硬件,可用于嵌入式硬件的调试、黑客攻击和/或渗透测试。
  • 漏洞: 开源物联网 (IoT) 安全测试和利用框架。
  • FACT(固件分析和比较工具):用于自动进行固件安全分析的框架。
  • Routersploit: 嵌入式设备的开源开发框架。
  • Firmadyne:用于仿真和动态分析基于 Linux 的嵌入式固件的开源系统。

现代嵌入式安全解决方案缺失在哪里?

尽管有各种解决方案可用于调试、利用和笔试嵌入式解决方案,但它们并不容易使用。重点仍然是保护设备的物理安全,但在防范与软件相关的攻击方面做出的努力还不够。即使是最简单且易于避免的应用程序安全风险和漏洞在现代嵌入式设备中仍然很常见。

其中的一个重要原因是开发人员对嵌入式安全缺乏意识。 根据Tripwire进行的一项调查,68% 的 IT 专业人员认为他们的员工对潜在漏洞的认识不足。

开发人员不知道诸如:选择哪些安全协议、应避免使用哪些框架、要隔离哪些硬件组件、如何处理敏感数据以及如何确定哪种加密算法最安全。这种普遍的知识缺乏以及对最佳实践的漠视,使得在嵌入式设备上运行的应用程序容易受到损害。

嵌入式安全的未来

嵌入式安全市场正在做大量工作。专家认为,市场的复合年增长率(CAGR)可以达到 在2021-2026年期间,这一数字为5.5%。 随着越来越多的物联网设备的推出,我们可以期待新的嵌入式安全标准的建立。

可穿戴医疗设备的日益普及也将增加对可靠的嵌入式安全解决方案的需求。要使设备包含和处理敏感医疗数据,它们需要通过特定的安全清单,我们希望这将使供应商和工程师更加关注安全性。

将来,我们可能还会有解决方案,可以远程查看、监控和控制嵌入式设备中的主要软件和硬件组件。这将真正改变嵌入式系统安全领域的游戏规则。

归根结底,数字签名、加密数据、添加防火墙、实施访问控制和随机化操作只能让你走那么远。要构建真正安全的设备,开发人员需要接受编写安全代码的培训。识别潜在的安全风险并在应用程序设计阶段缓解这些风险,对系统的制造大有帮助 本质上是安全的。

安全代码勇士如何提供帮助

Secure Code Warrior的旗舰产品——学习平台——包含许多互动挑战、课程和评估,可以帮助培训开发人员编写安全的C/C++代码。该平台上的内容是针对特定框架的,并且极具吸引力。我们的 C/C++: Embed 编程挑战赛从 MISRA C、AUTOSAR C++ (MISRA C++) 和 IEC 中汲取了灵感。

开发人员可以开启个性化学习之旅,识别特定于 C/C++ 的漏洞,更重要的是学会修复这些错误。在此过程中,开发人员可以跟踪自己的进度以找出自己的弱点,甚至可以与同行一起参加友好的编程竞赛。了解更多关于 我们如何帮助汽车和运输行业 使用我们的解决方案。

想了解我们的挑战有多互动和嵌入式吗?试试 一些 C/C++: Embed 挑战 今天在学习平台上!

目录

下载PDF
查看资源
对更多感兴趣?

Secure Code Warrior makes secure coding a positive and engaging experience for developers as they increase their skills. We guide each coder along their own preferred learning pathway, so that security-skilled developers become the everyday superheroes of our connected world.

learn more

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

预订演示下载
分享到:
linkedin brandsSocialx logo
资源中心

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子