有很多流行文化提到流氓人工智能和机器人,以及打开人类主人的电器。这是科幻小说、乐趣和幻想的东西,但随着物联网和连接设备在我们家中变得越来越普遍,我们需要更多地讨论网络安全和安全。
软件就在我们身边,很容易忘记我们是多么依赖代码行来做所有那些为我们提供如此多的创新和便利的聪明事情。
与基于 Web 的软件、API 和移动设备非常相似,嵌入式系统中的易受攻击代码如果被攻击者发现就可以被利用。
虽然不太可能由于网络攻击而导致一群烤面包机来奴役人类(尽管特斯拉机器人有点令人担忧),但恶意网络事件仍然可能发生。我们的一些汽车、飞机和医疗设备也依赖复杂的嵌入式系统代码来执行关键任务,这些对象受到威胁的前景可能会危及生命。
就像所有其他类型的软件一样,在创建阶段的开始,开发人员是最先接触到代码的人之一。与所有其他类型的软件非常相似,这可能是在产品上线之前无法检测到的阴险、常见漏洞的滋生地。
开发人员不是安全专家,任何公司也不应该期望他们扮演这个角色,但他们可以配备更强大的武器库来应对与他们相关的威胁。随着我们的技术需求不断增长和变化,嵌入式系统(通常用 C 和 C++ 编写)将被更频繁地使用,并且针对这种环境中的工具对开发人员进行专门的安全培训是抵御网络攻击的重要防御策略。
爆炸的空气炸锅、任性的车辆……我们真的处于危险之中吗?
虽然围绕安全开发最佳实践有一些标准和法规来保证我们的安全,但我们需要在所有类型的软件安全方面取得更精确、更有意义的进步。认为有人入侵空气炸锅可能导致的问题似乎有些牵强,但它以远程代码执行攻击的形式发生(允许威胁行为者将温度提高到危险水平),导致车辆被接管的漏洞也是如此。
车辆特别复杂,车载有多个嵌入式系统,每个系统负责微功能;从自动雨刷器到发动机和制动功能,应有尽有。与 WI-Fi、蓝牙和 GPS 等不断增加的通信技术堆栈交织在一起,联网车辆代表了一个复杂的数字基础设施,它暴露于多种攻击媒介。预计到2023年,全球将会有7630万辆联网车辆上路,这代表了为真正的安全奠定了坚实的防御基础。
然而,要创建和执行符合安全、可移植、可靠这三个黄金标准的代码,嵌入式系统工程师需要对工具充满信心——更不用说安全意识了。
为什么嵌入式系统安全技能提升如此具体?
按照今天的标准,C 和 C++ 编程语言已经过时了,但仍然被广泛使用。它们构成了嵌入式系统代码库的功能核心,而嵌入式 C/C++ 作为互联设备世界的一部分,享有闪亮的现代生活。
尽管这些语言有着相当古老的根源——并且在注入缺陷和缓冲区溢出等常见问题方面表现出类似的漏洞行为——但对于开发人员来说,要想真正成功地缓解嵌入式系统中的安全漏洞,他们必须亲身体验模仿他们工作的环境。一般安全实践中的通用 C 培训根本不会像在嵌入式 C 环境中花费额外的时间和精力那样有效和令人难忘。
现代车辆中有十几个到一百多个嵌入式系统,开发人员必须在 IDE 中接受精确培训,了解要查找的内容以及如何修复它。
从一开始就保护嵌入式系统是每个人的责任
许多组织的现状是,开发速度胜过安全性,至少在涉及到开发人员责任时是如此。他们很少评估他们生成安全代码的能力,但快速开发出色的功能是成功的标志。对软件的需求只会增加,但这种文化已经让我们在与漏洞的战斗以及随后的网络攻击中失败。
如果开发人员没有接受过培训,那不是他们的错,而是 AppSec 团队中的某个人需要通过为整个开发社区推荐正确的可访问(更不用说可评估)计划来帮助填补的漏洞。就在软件开发项目的开始,安全性需要成为首要考虑因素,每个人(尤其是开发人员)都需要发挥自己的作用。