转载

与 IoT 网络威胁作斗争

物联网 (IoT) 彻底改革了业务运营方式

创新和省钱优势正推动物联网 (IoT) 快速兴起。撇开智慧家用电器和可穿戴设备大受瞩目不谈,IoT 还改变了每个行业领域的业务运营,尤其是物流、仓储、生产线、管道运输和交通管理领域。

物联网带来了全新的宝贵数据和管理功能,而且它正在改变我们经营业务的方式,提升运营效率。例如,Continental Tires 以前依靠手写笔记在其轮胎生产厂房查找橡胶车。使用这种方法,员工很难在大型厂房中找到这些车,从而导致高成本的生产延误。使用 WiFi 传感器将橡胶车与他们的库存管理系统集成后,该公司解决了这个问题。通过使用 WiFi 传感器连接这些车,员工能从其移动设备上立即找到厂房中的所有橡胶车。

另一个例子是 Kenya Pipeline Company,它使用能感知石油压力水平、温度和流速的模块升级了管道基础架构。这些连网的模块(连网设备)不仅向操作管理人员提供了实时度量指标和提醒,还能够在检测到石油泄漏时做出反应,自动关闭管道,无论泄漏是由于意外导致还是由于盗油所导致的。

物理世界物体的连接、数据收集和管理的这个新时代,带来了新的安全风险,从复杂的网络攻击到拼命盗窃数据和导致大破坏的黑客。IoT 设备的安全高度依赖于管理它们的软件和应用程序,将软件开发团队推到了开发安全 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 设备的应用层为黑客提供了最大的攻击面。应用层包含任何连接 IoT 设备的应用程序,这可能包括本地 Web 应用程序、基于云的应用程序和智能电话或平板电脑应用程序。应用程序安全必须是所有 IoT 应用程序的软件开发生命周期 (SDLC) 的内在部分,尤其是在设计、开发(编写代码)和测试阶段。

在 IoT 应用程序的计划或设计阶段,必须对所计划的应用程序的安全和隐私需求执行一次正式的 “自顶向下” 评估。

回页首

设计安全的 IoT 应用程序

IoT 应用程序需要一种 “安全设计” 方法。此设计方法需要从头开始设计安全功能,在应用程序的开发和测试阶段应用安全修复。如果等到应用程序发布后,这不仅会导致整体安全性变得脆弱,还会使开发过程变得更长、成本更高。因此,在应用程序设计阶段,一定要考虑和计划 IoT 应用程序所有可能的安全需求。

另外,在 IoT 应用程序收集、存储和处理个人数据时,必须以完全遵守数据保护因素和法律的方式收集数据。根据具有的数据来自哪个国家,这些法律可能具有不同程度的严格需求。

在设计阶段,完成一次安全需求分析评审,以评审 IoT 应用程序的安全需求。另外,评审哪些数据保护法律适用于您的 IoT 应用程序,并对它们执行隐私需求分析评审。

安全需求分析技巧

  • 计划用户帐户管理功能。确保 IoT 应用程序将拥有适当的帐户自定义水平。
  • 设计一种安全的密码重置机制。为了实现用户便捷性,此过程通常被忽视,但脆弱的密码重置过程可能为系统提供一个简易后门。
  • 设计一种用户帐户结构,根据以必须拥有为原则来限制管理账户特权。明智的做法是将管理操作和权限与标准用户帐户分开,因为此配置会限制用户错误配置风险,错误配置可能导致严重的安全漏洞。
  • 确定应用程序将如何存储帐户密码。必须避免在数据库和平面文件中以明文格式存储密码。最佳实践是使用一种加盐的哈希算法,比如 SHA-256 和盐,将密码计算为一个唯一的哈希值,这意味着不能通过反转密码得到明文。
  • 考虑添加双因素身份验证功能,尤其是对于将处理的机密数据用于接受来自不受信任网络的访问的应用程序。
  • 考虑添加对将 IoT 应用程序与帐户管理系统集成的支持,比如 Microsoft Active Directory Services。此功能可帮助将 IoT 应用程序集成到商业企业环境中。
  • 如果计划将个人或机密数据存储在第三方或不受信任的环境中,可考虑使用加密来保护静止数据。
  • 设计一个软件更新功能,确保只有经过数字签名(真实)的更新可以应用,而且如果可行,考虑一种自动更新流程。
  • 提供安全通知功能,允许应用程序使用一个企业安全监视系统或系统日志服务器发送安全警报,比如登录尝试失败。
  • 邀请安全专业人员审核和批准应用程序安全功能和设计。

隐私需求分析技巧

  • 记录并证明应用程序对所有计划的个人数据的使用的合理性。
  • 仅将个人数据收集限制到绝对必要的程度。
  • 考虑使用例程来匿名化个人数据;只要操作正确,这个流程可消除满足数据隐私法律需求的负担。
  • 计划编写例程或使用解决方案(比如 SSL)来加密存储的所有个人数据,以及通过网络(包括私有网络)传输的所有个人数据。
  • 确保隐私功能对用户透明。任何个人数据收集、处理和存储(包括云存储),都必须在隐私声明中向用户阐明。使用个人数据之前,获取用户的明确同意,确保用户签署或同意隐私协议,隐私协议需要解释应用程序的所有个人数据用途。
  • 考虑其他需要遵守行业条例的数据类型。确保任何监管需求都得到充分理解,而且会在应用程序设计中得到遵守。
  • 考虑移动应用程序隐私。移动应用程序可与 GPS、SIM 卡、设备标识码、设备数据和来自第三方移动应用程序的数据进行交互。所有这些交互都可能对应用程序产生隐私后果,必须考虑这些后果。

回页首

编写安全的 IoT 应用程序

许多不同类型的应用程序可控制和管理 IoT 设备,比如基于云的和本地 Web 应用程序、移动应用程序,以及在 IoT 设备自身上运行的软件。

IoT Web 应用程序:安全编码技巧

查看 十大开放 Web 应用程序安全项目 (OWASP) 物联网 的演示

Web 应用程序通常用于管理 IoT 设备。无论 Web 应用程序打算直接托管在 IoT 设备上、内部网络服务器上还是托管在云中,这些 Web 应用程序的开发(编码)都必须遵守 Web 应用程序安全开发最佳实践,比如 10 大 OWASP 。

IoT Web 应用程序开发的一种常见错误是,没有像对面向公众的 Web 应用程序一样勤勉地保护私有网络 Web 应用程序。但是,内部网络可能被损坏,变成不受信任的环境。因此,面向内部的 Web 应用程序漏洞可能被黑客和恶意软件利用。

考虑这些针对 IoT Web 应用程序的安全编码技巧:

  • 净化所有用户输入。此编码技术可预防最常见的 Web 应用程序攻击,这些攻击利用草率编码的用户数据输入验证来注入恶意脚本,运行 SQL 数据库命令,以及执行缓冲区溢出。因此,净化所有用户输入字段,仅接受想要的字符的 “白名单”,这是一种基本的应用程序编码实践。一定要在 Web 浏览器内编写客户端验证(比如 Java 脚本),但必须始终在(服务器)应用程序内执行输入净化,因为大部分攻击都是通过 URL 注入代码来尝试的。
  • 安全地使用 cookie。应用程序使用 SSL 确保应用程序将 cookie 标记为安全时,SSL 也会自动对这些 cookie 进行加密。不打算对 Web 应用程序执行 SSL 保护时,可编写一个例程来使用业界认可的加密算法(比如 AES 256)加密 cookie 值。
  • 锁定应用程序错误报告。这些应用程序错误消息可能为攻击者提供如何攻破应用程序和用户帐户的线索。甚至最简单的错误消息,比如 “ 用户密码错误 ”,也可能导致用户账户名被猜中。
  • 使用数据加密例程。如果需要应用程序加密个人或机密数据,不要尝试编写自己的加密例程。相反,使用利用了业界认可的加密方法和算法的库。
  • 在使用之前,评估并备案应用程序使用的第三方库的安全性,然后继续监视它们的安全漏洞和补丁。例如,最近发现 OpenSSL(一个用于加密数据通信的开源库)存在安全缺陷,这使 Web 应用程序很容易被攻击。该问题很快通过发布该库的更新版本得到解决。
  • 确保所有开发人员(包括合同工和第三方)都有资格和已经过培训来使用 Web 应用程序安全编码技术。

IoT 移动设备应用程序:安全编码技巧

移动 IoT 应用程序,尤其是智能电话和平板电脑应用程序,常常受到攻击者攻击。在开发移动 IoT 应用程序时,还需要采用用于 Web 应用程序的相同的安全编码技术。但是,还有其他应用程序安全考虑因素,比如移动设备身份验证、电信和 SMS 数据通信,以及更多隐私风险。

为 IoT 移动设备应用程序考虑这些安全编码技巧:

  • 评估该应用程序与您的移动平台和操作系统的特性和功能的集成,这可能因每个移动平台类型和操作系统的不同而不同。与移动功能集成可增强安全性,但它们也可能减弱应用程序的安全性。例如,使用 Apple 设备上的生物指纹扫描器可增强移动应用程序的身份验证流程;但是,单独依靠可能被禁用的移动设备身份验证系统,可能严重地降低应用程序的安全性。
  • 确保您的 IoT 移动应用程序使用加密保护所有个人和敏感数据,无论是传输中的还是存储在移动设备上的数据。应用程序需要在 Internet 和 WiFi 连接上强制使用加密的网络服务(即假设它们是公共的),甚至包含通过蜂窝网络发送的数据。另外,确保应用程序加密了所有存储在可移动介质上的个人数据。

IoT 设备软件:安全编码技巧

除了已介绍的安全应用程序技术,在开发将在 IoT 设备上运行的软件时,还有其他一些考虑因素,比如固件使用和对物理接口的访问控制。

考虑以下针对 IoT 设备软件的安全编码技巧:

  • 确保您使用了最新版的 IoT 设备固件。
  • 关注固件制造商的固件更新通知和已发现的固件安全漏洞。
  • 使用应用程序测试固件的新版本。新固件版本可能需要更新应用程序代码。
  • 评审您的 IoT 设备的物理接口需求,这可能需要应用程序提供访问控制功能。
  • IoT 应用程序必须能够使用安全补丁来更新。补丁在安装之前需要数字签名并经过应用程序更新流程的验证,以确保恶意补丁无法安装。
  • IoT 应用程序需要加密所有打算存储在 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 Web 应用程序的安全测试技巧

执行漏洞扫描和渗透测试来检测软件安全缺陷,这是在发布 IoT 应用程序之前采取的关键的最后一步。测试应用程序代码可预防常见的应用程序漏洞,比如 SQL 注入、跨站脚本、跨站请求伪造和缓冲区溢出攻击。

为 IoT Web 应用程序考虑以下安全测试技巧

  • 使用应用程序漏洞扫描工具(比如IBM Security AppScan)对应用程序执行安全测试,识别 Web 应用程序漏洞。参阅 developerWorks 教程 “ 扫描应用程序以查找和修复 2013 年 10 大 OWASP 的漏洞 ”,了解此方法的更多信息。
  • 确保开发人员理解发现不安全的应用程序编码时存在的问题。
  • 不要忘记保护所有测试 API。
  • 执行渗透测试,该测试会重复熟练的黑客采取的攻击方法。渗透测试必须由经过认证和经验丰富的道德黑客 (CEH) 执行。该方法被视为任何面向 Internet 的应用程序的安全最佳实践。在应用程序发布之前,在执行任何重大编码更改之后,以及在这之后的每年执行渗透测试。
  • 确保渗透测试人员能够向开发人员充分解释所找到的漏洞和它们的攻击方法。

针对 IoT 移动应用程序的安全测试技巧

使用一个专业的移动应用程序漏洞扫描工具,比如 IBM Security AppScan Mobile Analyzer ,该工具专为对移动应用程序执行安全测试而设计。AppScan Mobile Analyzer 不仅检测移动设备应用程序漏洞,它还向开发人员显示了漏洞的细节,以及风险水平和解决该漏洞的解决方案。

针对 IoT 设备软件的安全测试技巧

IoT 设备软件必须由专门研究在 IoT 设备软件中查找漏洞的安全专业人员和公司来执行测试。

回页首

结束语

安全 IoT 应用程序的开发,使得开发团队的职责拓宽到熟悉的传统领域以外。在计划或设计阶段花时间分析安全功能和隐私需求,会给安全 IoT 应用程序的开发带来巨大好处。通过在开发阶段使用 IBM Security AppScan Source 执行代码评审,开发人员可在开发过程中尽早检测和更正代码漏洞,这比在测试阶段检测和更正漏洞更高效。在测试阶段,开发团队需要使用 IBM Security AppScan 和 IBM Security AppScan Mobile Analyzer 等工具再现黑客执行的应用层攻击。AppScan 包含有帮助的视频教程、漏洞解释和安全编码示例,这些都可指导开发人员改进其安全编码技术,增加对编写安全 IoT 应用程序的信心。

这些开发技术减少了总体开发时间和成本,显著减少了出现 IoT 应用程序漏洞的几率,从而让开发团队受益匪浅。发布后在 IoT 应用程序中发现的应用程序漏洞,尤其是在被黑客发现时,可能需要很大的代价才能得到解决,甚至有可能损害对企业和开发团队的声誉。

正文到此结束
Loading...