当好的微波变成坏的。为什么嵌入式系统安全是开发者的下一场战斗?

发表于2021年8月30日
作者:马蒂亚斯-马杜,博士
案例研究

当好的微波变成坏的。为什么嵌入式系统安全是开发者的下一场战斗?

发表于2021年8月30日
作者:马蒂亚斯-马杜,博士
查看资源
查看资源

在流行文化中,有很多关于流氓人工智能和机器人的说法,以及电器对其人类主人的背叛。这在很大程度上浸透了科幻小说的乐趣和幻想,但随着物联网和联网设备在我们的家庭中变得越来越普遍,围绕网络安全保障的对话也应该如此。软件就在我们身边,我们很容易忘记我们在多大程度上依赖代码行来完成那些为我们提供如此多的创新和便利的聪明事。与基于网络的软件、API和移动设备一样,嵌入式系统中的脆弱代码如果被攻击者在野外发现,就会被利用。 

虽然不太可能因为网络攻击而出现一支微波军队来奴役人类(虽然,特斯拉机器人有点令人担忧),但恶意的网络事件仍然是可能的。我们的一些汽车、飞机和医疗设备也依靠复杂的嵌入式系统代码来执行关键任务,这些物体被破坏的前景不仅令人震惊,而且可能威胁到生命。

与其他类型的软件一样,开发人员是最早接触代码的人之一,就在创建阶段的开始。和其他类型的软件一样,这可能是阴险的、常见的漏洞的温床,这些漏洞在产品上线之前可能不会被发现。 

开发人员不是安全专家,任何公司也不应该期望他们扮演这个角色,但他们可以配备一个强大得多的武器库来应对与他们相关的那种威胁。随着我们的技术需求不断发展,嵌入式系统--通常是用C和C++编写的--将被更频繁地使用,对开发人员进行这种环境下的工具的专门安全培训是至关重要的。 

爆炸的空气炸锅、流氓车辆......我们是坐以待毙吗?

虽然有一些围绕所有安全开发的标准和规定来保证我们的安全,但我们需要在所有类型的软件安全方面取得更精确、更有意义的进展。想到有人入侵空气炸锅会造成问题似乎很牵强,但它已经以远程代码执行攻击的形式发生了(允许威胁者将温度提高到危险水平),正如导致车辆被接管的漏洞一样。

特别是汽车,特别复杂,车上有多个嵌入式系统,每个系统都负责微观功能;从自动雨刷到发动机和制动能力,无所不包。与不断增加的通信技术(如Wi-Fi、蓝牙和GPS)交织在一起,联网车辆代表了一个复杂的数字基础设施,暴露在多种攻击媒介之下。预计到2023年,全球将有7630万辆联网汽车上路,这代表着需要为真正的安全奠定防御基础的巨石。

MISRA是一个与嵌入式系统威胁作斗争的重要组织,它制定了准则来促进嵌入式系统背景下的代码安全、保障、可移植性和可靠性。这些准则是每个公司在其嵌入式系统项目中必须努力达到的标准中的一颗北极星。

然而,要创建和执行遵守这一黄金标准的代码,需要嵌入式系统工程师对工具充满信心--更不用说安全意识了。 

为什么嵌入式系统安全技能的提升如此具体?

以今天的标准来看,C和C++编程语言已经很老旧了,但仍然被广泛使用。它们构成了嵌入式系统代码库的功能核心,而嵌入式C/C++作为连接设备世界的一部分,享受着闪亮的现代生活。

尽管这些语言有着相当古老的根基--并且在注入缺陷和缓冲区溢出等常见问题方面表现出类似的漏洞行为--但开发人员要想真正成功地减轻嵌入式系统中的安全漏洞,他们必须亲身体验模仿他们工作环境的代码。如果在嵌入式C语言环境中花费额外的时间和精力,一般安全实践的通用C语言培训就不会那么有效和令人难忘。

一辆现代汽车上有十几个到一百多个嵌入式系统,当务之急是为开发人员提供精确的培训,让他们知道在IDE中寻找什么,以及如何修复它。

嵌入式C/C++中的商业逻辑缺陷是什么样子的?看一看,看看你是否能像专家一样识别并修复它。

从底层保护嵌入式系统是每个人的责任

许多组织的现状是,开发速度胜过安全,至少在涉及到开发人员的责任时是如此。他们很少被评估他们产生安全代码的能力,但快速开发令人敬畏的功能是黄金标准。对软件的需求只会越来越大,但这种文化却让我们在与漏洞的斗争中败下阵来,以及随后的网络攻击中被允许。 

如果开发人员没有接受过培训,那不是他们的错,这是一个漏洞,AppSec团队中的某个人需要通过为整个开发社区推荐正确的、可获得的(更不用说可评估的)提高技能的项目来帮助填补。在软件开发项目之初,安全问题就应该是一个首要考虑的问题,每个人--尤其是开发人员--都应该得到他们所需要的东西来发挥他们的作用。 

亲身体验嵌入式系统的安全问题

缓冲区溢出、注入缺陷和业务逻辑错误都是嵌入式系统开发中的常见陷阱。当深埋在单个车辆或设备的微控制器的迷宫中时,从安全的角度来看,它可能会带来灾难。

缓冲区溢出尤其普遍,如果你想深入了解它是如何帮助破坏我们之前谈到的那个空气炸锅的(允许远程代码执行),请查看这个关于CVE-2020-28592的报告

现在,是时候在真正的嵌入式C/C++代码中亲身体验一下缓冲区溢出漏洞了。玩这个挑战,看看你是否能找到、识别并修复导致这个阴险的漏洞的不良编码模式:

让缓冲区溢出成为历史。



你的表现如何?请访问www.securecodewarrior.com,以获得关于嵌入式系统安全的精确、有效的培训。

查看资源
查看资源

作者

马蒂亚斯-马杜博士

马蒂亚斯是一名研究员和开发人员,拥有超过15年的软件安全实践经验。他曾为Fortify Software和他自己的公司Sensei Security等公司开发解决方案。在他的职业生涯中,马蒂亚斯领导了多个应用安全研究项目,并将其转化为商业产品,他拥有超过10项专利。当他离开办公桌时,Matias曾担任高级应用安全培训courses ,并定期在全球会议上发言,包括RSA会议、黑帽、DefCon、BSIMM、OWASP AppSec和BruCon。

马蒂亚斯拥有根特大学的计算机工程博士学位,在那里他研究了通过程序混淆来隐藏应用程序的内部工作的应用安全。

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

当好的微波变成坏的。为什么嵌入式系统安全是开发者的下一场战斗?

发表于2021年8月30日
作者:马蒂亚斯-马杜,博士

在流行文化中,有很多关于流氓人工智能和机器人的说法,以及电器对其人类主人的背叛。这在很大程度上浸透了科幻小说的乐趣和幻想,但随着物联网和联网设备在我们的家庭中变得越来越普遍,围绕网络安全保障的对话也应该如此。软件就在我们身边,我们很容易忘记我们在多大程度上依赖代码行来完成那些为我们提供如此多的创新和便利的聪明事。与基于网络的软件、API和移动设备一样,嵌入式系统中的脆弱代码如果被攻击者在野外发现,就会被利用。 

虽然不太可能因为网络攻击而出现一支微波军队来奴役人类(虽然,特斯拉机器人有点令人担忧),但恶意的网络事件仍然是可能的。我们的一些汽车、飞机和医疗设备也依靠复杂的嵌入式系统代码来执行关键任务,这些物体被破坏的前景不仅令人震惊,而且可能威胁到生命。

与其他类型的软件一样,开发人员是最早接触代码的人之一,就在创建阶段的开始。和其他类型的软件一样,这可能是阴险的、常见的漏洞的温床,这些漏洞在产品上线之前可能不会被发现。 

开发人员不是安全专家,任何公司也不应该期望他们扮演这个角色,但他们可以配备一个强大得多的武器库来应对与他们相关的那种威胁。随着我们的技术需求不断发展,嵌入式系统--通常是用C和C++编写的--将被更频繁地使用,对开发人员进行这种环境下的工具的专门安全培训是至关重要的。 

爆炸的空气炸锅、流氓车辆......我们是坐以待毙吗?

虽然有一些围绕所有安全开发的标准和规定来保证我们的安全,但我们需要在所有类型的软件安全方面取得更精确、更有意义的进展。想到有人入侵空气炸锅会造成问题似乎很牵强,但它已经以远程代码执行攻击的形式发生了(允许威胁者将温度提高到危险水平),正如导致车辆被接管的漏洞一样。

特别是汽车,特别复杂,车上有多个嵌入式系统,每个系统都负责微观功能;从自动雨刷到发动机和制动能力,无所不包。与不断增加的通信技术(如Wi-Fi、蓝牙和GPS)交织在一起,联网车辆代表了一个复杂的数字基础设施,暴露在多种攻击媒介之下。预计到2023年,全球将有7630万辆联网汽车上路,这代表着需要为真正的安全奠定防御基础的巨石。

MISRA是一个与嵌入式系统威胁作斗争的重要组织,它制定了准则来促进嵌入式系统背景下的代码安全、保障、可移植性和可靠性。这些准则是每个公司在其嵌入式系统项目中必须努力达到的标准中的一颗北极星。

然而,要创建和执行遵守这一黄金标准的代码,需要嵌入式系统工程师对工具充满信心--更不用说安全意识了。 

为什么嵌入式系统安全技能的提升如此具体?

以今天的标准来看,C和C++编程语言已经很老旧了,但仍然被广泛使用。它们构成了嵌入式系统代码库的功能核心,而嵌入式C/C++作为连接设备世界的一部分,享受着闪亮的现代生活。

尽管这些语言有着相当古老的根基--并且在注入缺陷和缓冲区溢出等常见问题方面表现出类似的漏洞行为--但开发人员要想真正成功地减轻嵌入式系统中的安全漏洞,他们必须亲身体验模仿他们工作环境的代码。如果在嵌入式C语言环境中花费额外的时间和精力,一般安全实践的通用C语言培训就不会那么有效和令人难忘。

一辆现代汽车上有十几个到一百多个嵌入式系统,当务之急是为开发人员提供精确的培训,让他们知道在IDE中寻找什么,以及如何修复它。

嵌入式C/C++中的商业逻辑缺陷是什么样子的?看一看,看看你是否能像专家一样识别并修复它。

从底层保护嵌入式系统是每个人的责任

许多组织的现状是,开发速度胜过安全,至少在涉及到开发人员的责任时是如此。他们很少被评估他们产生安全代码的能力,但快速开发令人敬畏的功能是黄金标准。对软件的需求只会越来越大,但这种文化却让我们在与漏洞的斗争中败下阵来,以及随后的网络攻击中被允许。 

如果开发人员没有接受过培训,那不是他们的错,这是一个漏洞,AppSec团队中的某个人需要通过为整个开发社区推荐正确的、可获得的(更不用说可评估的)提高技能的项目来帮助填补。在软件开发项目之初,安全问题就应该是一个首要考虑的问题,每个人--尤其是开发人员--都应该得到他们所需要的东西来发挥他们的作用。 

亲身体验嵌入式系统的安全问题

缓冲区溢出、注入缺陷和业务逻辑错误都是嵌入式系统开发中的常见陷阱。当深埋在单个车辆或设备的微控制器的迷宫中时,从安全的角度来看,它可能会带来灾难。

缓冲区溢出尤其普遍,如果你想深入了解它是如何帮助破坏我们之前谈到的那个空气炸锅的(允许远程代码执行),请查看这个关于CVE-2020-28592的报告

现在,是时候在真正的嵌入式C/C++代码中亲身体验一下缓冲区溢出漏洞了。玩这个挑战,看看你是否能找到、识别并修复导致这个阴险的漏洞的不良编码模式:

让缓冲区溢出成为历史。



你的表现如何?请访问www.securecodewarrior.com,以获得关于嵌入式系统安全的精确、有效的培训。

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

要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。