创新和省钱优势正推动物联网 (IoT) 快速兴起。撇开智慧家用电器和可穿戴设备大受瞩目不谈,IoT 还改变了每个行业领域的业务运营,尤其是物流、仓储、生产线、管道运输和交通管理领域。
物联网带来了全新的宝贵数据和管理功能,而且它正在改变我们经营业务的方式,提升运营效率。例如,Continental Tires 以前依靠手写笔记在其轮胎生产厂房查找橡胶车。使用这种方法,员工很难在大型厂房中找到这些车,从而导致高成本的生产延误。使用 WiFi 传感器将橡胶车与他们的库存管理系统集成后,该公司解决了这个问题。通过使用 WiFi 传感器连接这些车,员工能从其移动设备上立即找到厂房中的所有橡胶车。
另一个例子是 Kenya Pipeline Company,它使用能感知石油压力水平、温度和流速的模块升级了管道基础架构。这些连网的模块(连网设备)不仅向操作管理人员提供了实时度量指标和提醒,还能够在检测到石油泄漏时做出反应,自动关闭管道,无论泄漏是由于意外导致还是由于盗油所导致的。
物理世界物体的连接、数据收集和管理的这个新时代,带来了新的安全风险,从复杂的网络攻击到拼命盗窃数据和导致大破坏的黑客。IoT 设备的安全高度依赖于管理它们的软件和应用程序,将软件开发团队推到了开发安全 IoT 应用程序的网络前线。本文概述一些安全编码技术和安全功能的最佳实践,这些最佳实践将帮助开发团队创建能减轻 IoT 安全风险的健壮的 IoT 应用程序。
回页首
任何具有网络连接的设备都是可攻击的,无论是直接通过网络还是间接地使用应用程序进行攻击。通过 IoT 设备进行收集,然后由分配的应用程序处理的数据可能包含个人数据。这些个人数据对数据和身份窃贼始终具有价值,还有一些黑客似乎喜欢引起混乱,以便让自己在社区中出名和实现自我价值。IoT 设备和应用程序也是参与网络战、网络间谍活动、黑客行为以及甚至是恐怖主义的人的攻击目标。网络 IoT 工具有可能损害物理服务和基础架构,人们还认识到 IoT 网络攻击甚至可能夺人性命。
在 2010 年 6 月,一种高度复杂且独特的 计算机蠕虫 Stuxnet 引起了全球媒体的关注 。Stuxnet 的设计仅针对在伊朗核电厂使用的特定的软件控件。它使用了 Microsoft Windows 中的 zero-day vulnerabilities,通过该核电厂的网络传播并扫描存在的 Siemens Step7 软件。Stuxnet 恶意软件成功地攻破了 Siemens 应用程序,并发出指令来快速增加和降低离心分离机的转速,这导致了离心机由于振动而遭到破坏。2009 年 11 月到 2010 年 1 月,估计超过 1000 台离心机被 Stuxnet 恶意软件摧毁,这明显推迟了伊朗核计划。Stuxnet 恶意软件证明了物理世界中的连网机器可通过损害控制它们的连网应用程序进行破坏。
2015 年 2 月,一个 60 分钟 的小视频演示了一种名为应用程序缓冲区溢出的攻击,然后远程控制了一辆车,其中黑客甚至设法禁用了该车的刹车。另外在 2015 年 5 月,一位 计算机安全专家 使用娱乐应用程序攻击了一架空运飞机;随后的 FBI 调查报告他短暂地控制了该飞机。在大部分已知的 IoT 事故中,被利用的安全缺陷都在应用层。因此,如何开发安全的 IoT 应用程序可能关系到生死。
回页首
IoT 设备的应用层为黑客提供了最大的攻击面。应用层包含任何连接 IoT 设备的应用程序,这可能包括本地 Web 应用程序、基于云的应用程序和智能电话或平板电脑应用程序。应用程序安全必须是所有 IoT 应用程序的软件开发生命周期 (SDLC) 的内在部分,尤其是在设计、开发(编写代码)和测试阶段。
在 IoT 应用程序的计划或设计阶段,必须对所计划的应用程序的安全和隐私需求执行一次正式的 “自顶向下” 评估。
回页首
IoT 应用程序需要一种 “安全设计” 方法。此设计方法需要从头开始设计安全功能,在应用程序的开发和测试阶段应用安全修复。如果等到应用程序发布后,这不仅会导致整体安全性变得脆弱,还会使开发过程变得更长、成本更高。因此,在应用程序设计阶段,一定要考虑和计划 IoT 应用程序所有可能的安全需求。
另外,在 IoT 应用程序收集、存储和处理个人数据时,必须以完全遵守数据保护因素和法律的方式收集数据。根据具有的数据来自哪个国家,这些法律可能具有不同程度的严格需求。
在设计阶段,完成一次安全需求分析评审,以评审 IoT 应用程序的安全需求。另外,评审哪些数据保护法律适用于您的 IoT 应用程序,并对它们执行隐私需求分析评审。
回页首
许多不同类型的应用程序可控制和管理 IoT 设备,比如基于云的和本地 Web 应用程序、移动应用程序,以及在 IoT 设备自身上运行的软件。
查看 十大开放 Web 应用程序安全项目 (OWASP) 物联网 的演示
Web 应用程序通常用于管理 IoT 设备。无论 Web 应用程序打算直接托管在 IoT 设备上、内部网络服务器上还是托管在云中,这些 Web 应用程序的开发(编码)都必须遵守 Web 应用程序安全开发最佳实践,比如 10 大 OWASP 。
IoT Web 应用程序开发的一种常见错误是,没有像对面向公众的 Web 应用程序一样勤勉地保护私有网络 Web 应用程序。但是,内部网络可能被损坏,变成不受信任的环境。因此,面向内部的 Web 应用程序漏洞可能被黑客和恶意软件利用。
考虑这些针对 IoT Web 应用程序的安全编码技巧:
用户密码错误
”,也可能导致用户账户名被猜中。 移动 IoT 应用程序,尤其是智能电话和平板电脑应用程序,常常受到攻击者攻击。在开发移动 IoT 应用程序时,还需要采用用于 Web 应用程序的相同的安全编码技术。但是,还有其他应用程序安全考虑因素,比如移动设备身份验证、电信和 SMS 数据通信,以及更多隐私风险。
为 IoT 移动设备应用程序考虑这些安全编码技巧:
除了已介绍的安全应用程序技术,在开发将在 IoT 设备上运行的软件时,还有其他一些考虑因素,比如固件使用和对物理接口的访问控制。
考虑以下针对 IoT 设备软件的安全编码技巧:
回页首
在开发阶段中识别安全缺陷和薄弱环节的最有效技术之一是执行代码评审,无论采用何种 IoT 应用程序类型。代码评审需要由具有合适资格的编码人员执行,他们最好独立于开发项目。确保代码评审是一个正式的周密过程,并考虑使用参加不同项目和开发人员和使用 IBM Security AppScan Source 等工具。AppScan Source 可在 SDLC 中的早期(在测试阶段之前)扫描和识别 Web 和移动应用程序源代码漏洞。它支持在 JavaScript、HTML5、Cordova、Java、Objective-C 或企业移动平台 IBM MobileFirst Platform 中编写的代码。
代码评审看起来是 SDLC 的的一个高成本、耗时的附加步骤,但它们可带来避免高成本的重新测试、避免发布后的安全补丁,以及避免由于不安全的 IoT 应用程序被损坏而损害声誉的巨大优势。除了开发阶段中的代码评审之外,SDLC 的测试阶段必须包含密集的安全测试,这些测试需要特定于每种 IoT 应用程序类型。
执行漏洞扫描和渗透测试来检测软件安全缺陷,这是在发布 IoT 应用程序之前采取的关键的最后一步。测试应用程序代码可预防常见的应用程序漏洞,比如 SQL 注入、跨站脚本、跨站请求伪造和缓冲区溢出攻击。
为 IoT Web 应用程序考虑以下安全测试技巧
使用一个专业的移动应用程序漏洞扫描工具,比如 IBM Security AppScan Mobile Analyzer ,该工具专为对移动应用程序执行安全测试而设计。AppScan Mobile Analyzer 不仅检测移动设备应用程序漏洞,它还向开发人员显示了漏洞的细节,以及风险水平和解决该漏洞的解决方案。
IoT 设备软件必须由专门研究在 IoT 设备软件中查找漏洞的安全专业人员和公司来执行测试。
回页首
安全 IoT 应用程序的开发,使得开发团队的职责拓宽到熟悉的传统领域以外。在计划或设计阶段花时间分析安全功能和隐私需求,会给安全 IoT 应用程序的开发带来巨大好处。通过在开发阶段使用 IBM Security AppScan Source 执行代码评审,开发人员可在开发过程中尽早检测和更正代码漏洞,这比在测试阶段检测和更正漏洞更高效。在测试阶段,开发团队需要使用 IBM Security AppScan 和 IBM Security AppScan Mobile Analyzer 等工具再现黑客执行的应用层攻击。AppScan 包含有帮助的视频教程、漏洞解释和安全编码示例,这些都可指导开发人员改进其安全编码技术,增加对编写安全 IoT 应用程序的信心。
这些开发技术减少了总体开发时间和成本,显著减少了出现 IoT 应用程序漏洞的几率,从而让开发团队受益匪浅。发布后在 IoT 应用程序中发现的应用程序漏洞,尤其是在被黑客发现时,可能需要很大的代价才能得到解决,甚至有可能损害对企业和开发团队的声誉。