抖音|嵌入式开发:DevSecOps为嵌入式安全带来深度防御( 二 )



使用安全的语言子集
对于C或C++的开发 , 研究表明大约80%的软件缺陷源于错误的使用语言的大约20% 。 为了解决这个问题 , 开发人员可以使用通过禁止有问题的构造来提高安全性和安全性的语言子集 。
两个常见的子集是MISRAC和卡内基梅隆软件工程研究所(SEI)CERTC , 它们都帮助嵌入式开发人员生成安全代码 。 这两个标准的目标相似 , 但实施方式不同 。
一般来说 , 使用MISRAC开发新代码会导致更少的编码错误 , 因为它具有更严格、更可判定的规则 , 这些规则是根据第一原则定义的 。 参考MISRAC编码标准快速方便地分析软件的能力可以提高代码质量和一致性 , 并缩短部署时间 。 相反 , 当开发人员需要对代码追溯应用规则时 , CERTC可能是一个实用的选择 。 针对CERTC分析代码可以识别大多数软件安全攻击背后的常见编程错误 。
应用MISRAC或CERTC都会产生更安全的代码 。 在任何规模的代码库上手动执行此类标准都是不现实的 , 因此需要一个静态分析工具 。
遵守以安全为中心的流程标准
在安全关键部门 , 适当的标准经常补充那些注重功能安全的标准 。 如果需要 , 可以将自动化开发工具集成到安全关键系统的嵌入式开发人员工作流中 , 并同时满足功能安全需求 。
自动化SAST(静态)和DAST(动态)测试过程
静态分析是涉及源代码自动检查的测试机制的总称 。 相反 , 动态分析涉及部分或全部源代码的执行 。 这些技术对安全问题的关注分别导致了静态应用程序安全测试(SAST)和动态分析安全测试(DAST) 。
在这些分组中有很大的差异 。 例如 , 渗透测试、功能测试和模糊测试都是黑盒DAST测试 , 不需要访问源代码来实现其功能 。 黑盒DAST测试是对白盒DAST测试的补充 , 白盒DAST测试包括单元测试、集成测试和系统测试 , 以通过动态分析揭示应用程序源代码中的漏洞 。

早测多测
所描述的所有安全相关工具、测试和技术在每个生命周期模型中都占有一席之地 。 在V模型中 , 它们在很大程度上类似于通常与功能安全应用程序开发相关的过程 , 并与之互补 。
对于V模型 , 需求可追溯性在整个嵌入式开发过程中保持 , 对于DevSecOps模型 , 需求可追溯性在每个开发迭代中保持 。
一些SAST工具用于确认遵守编码标准 , 确保复杂性保持在最低限度 , 并检查代码是否可维护 。 另一些用于检查安全漏洞 , 但仅限于在没有执行环境上下文的情况下对源代码进行此类检查 。
白盒DAST使编译和执行的代码能够在开发环境中进行测试 , 或者更好地在目标硬件上进行测试 。 代码覆盖有助于确认代码满足了所有安全性和其他要求 , 并且所有代码都满足了一个或多个要求 。 如果系统的关键性需要 , 这些检查甚至可以进入目标代码级别 。
健壮性测试可以在单元测试环境中使用 , 以帮助证明特定功能是有弹性的 , 无论是在隔离环境中还是在其调用树的上下文中 。 传统的模糊和穿透黑箱DAST测试技术仍然是有价值的 , 但在这一背景下被用来证实和证明系统的健壮性和安全性 。
为自动化工具的安全性铺平道路
【抖音|嵌入式开发:DevSecOps为嵌入式安全带来深度防御】在开始软件开发过程之前 , 嵌入式开发人员应该能够使用自动化工具 , 例如测试软件 , 以加快开发、认证和批准过程 。 使用这些工具在整个生命周期中支持他们的工作 , 同时遵循与“左移 , 尽早测试”方法相关的最佳实践 , 有助于提高连接嵌入式系统的安全性 , 这些系统将继续为行业带来如此重大的变化 。