自动化在开发物联网产品时起到什么作用
扫描二维码
随时随地手机看文章
众所周知,物联网漏洞经常暴露在连接的产品中,开发团队为了确保物联网产品的机密性、完整性和可用性,在开发过程中不断的接受到挑战。开发人员通常缺乏识别和关闭新漏洞所需的专业知识和时间。这就需要帮助开发人员和安全工程师实现其安全物联网产品目标的工具。
在软件开发的早期,需要对代码进行质量缺陷和漏洞的手动分析。这种类型的代码检查在同行的评审过程中依然可以使用,并且可能用于应用程序中的高价值代码,但不能扩展到满足现代技术的需求。麦肯锡公司的一份报告指出,例如,现代汽车中有超过1.5亿条软件代码行(SLOC)。如果手动检查此代码,产品是不可能按时上市的。
确定安全要求
为了定义自动化安全测试,团队必须首先了解产品的威胁因素。威胁模型应该是任何开发团队进行的第一个活动。威胁模型通常是很少被读取的静态文档,但是,现在有一些工具将威胁模型数据与用户故事链接起来,并支持创建可以在整个开发过程中运行的自动测试。
一个案例是来自WE45的机器人脚本库。团队想要使质量得到保证,通过使用机器人框架来创建行为驱动开发(BDD)测试。WE45开发了脚本,允许工程师定义附加到威胁模型中的用户故事的误用案例,然后将这些误用案例直接链接到自动化测试。这个方法就是是基于其他工具的使用,如yaml脚本、owasp-zap和其他sast/dast工具。
无论是使用这样的框架还是从头开始,团队都必须能够构建一个安全需求用于积压工作。安全性需求可以从许多来源得到。产品团队根据法规要求、最佳实践指南、安全技术实施指南(Stigs)以及当然的威胁模型来定制需求。这些需求被捕获为功能用户案例或产品积压工作中的验收测试。
这有效地创建了一个安全需求跟踪矩阵(SRTM),可用于支持自动安全测试的创建和执行。安全用户案例可以标记为积压工作中的安全案例。此外,这些故事应包括元数据,该元数据允许链接回安全需求的源(例如IA控制编号或sTIg标识符),还应包括与从需求派生的自动化测试相关的元数据(例如,自动化测试ID)。这使得自动化框架或其他工具能够完全追溯到最初的需求。
当需要测试物联网启用的新功能类型时,基础设施或对等应用模拟器也可以证明是有用的。一个例子,之前开发的一个模拟器,用于测试支持车对车(V2V)通信的复杂的汽车密码证书管理系统。测试团队在项目开始时定义了MIS用例,并设计了一个模拟器来自动运行这些MIS用例。这是通过在应用程序层识别系统的功能安全性需求,然后在测试整个功能线程的模拟器中构建负面测试用例来实现的。例如,该工具可以自动并连续地尝试启动证书管理事务,然后分析是否存在适当的访问限制,以及是否将事件写入日志文件。
将安全性集成到产品设计中
一旦记录了安全需求,产品设计阶段就可以从基于模型的安全测试(MBST)等方法中获益。MBST可用于验证产品设计是否满足安全要求。MBST基于需求的正式建模。今天的产品团队采用敏捷开发方法,这意味着设计过程在一系列的开发冲刺中是迭代的。这使得设计人员能够根据在Sprint期间开发的代码上执行的安全工具的反馈,不断地重新评估其设计的网络安全态势。
例如,对物联网产品的扫描可能会发现对敏感配置文件的读取访问没有在设备中受到适当限制。结果告诉开发人员需要在文件系统中实现更多的限制权限。还可以设置工具,根据适用的行业最佳实践建议,自动打开JIRA中的问题,重新设计产品的访问控制模型,例如“实施基于角色的访问控制”和“需要提升访问SE的权限”。敏感数据”,允许设计团队更新安全架构。
在每个sprint期间执行这些扫描的安全工具可以配置为自动运行。开源自动化框架(如guantlt)直接向Git提供插件,以支持预提交检查,该检查会自动提醒桌面上的开发人员已引入基本错误。这允许开发人员在提交之前更正错误。
可以设置Jenkins、Bamboo、Travis、BuildBot、ThoughtWorks等持续集成工具,以集成自动在每个构建上运行的安全测试工具。例如,Jenkins集成了警告下一代插件,该插件收集并可视化各种安全分析工具收集的问题。这包括代码分析和运行时应用程序安全工具。还提供了有效管理多个静态分析测试工具的执行和报告的工具(例如,CodeBurner)。
不同的安全工具可以自动识别已知的漏洞。例如,静态代码分析可以识别和报告代码中已知的签名。这些对于识别配置问题、硬编码凭证、漏洞等问题很有用。
来源:朗锐智科