安全测试是一个 SDL 实践
简介
安全性仍然是我们客户的首要任务。为了满足其安全需求,红帽产品安全团队已主动开发并部署了一个框架和流程,以增强红帽产品的安全性。
对在关键系统上运行的软件的最新攻击已重新定义了软件安全状况。质量保证和安全测试在软件作者和集成商中获得了很多关注、重视和资金。
红帽产品安全团队帮助确保红帽生产高度安全、高质量的软件以满足客户的需求。为此,我们创建了红帽安全软件管理生命周期(SSML),一种直接与 NIST 安全软件开发 框架(NIST SSDF SP-800-218)保持一致的软件开发生命周期( SDLC)方法。
NIST 框架阐明/汇总了普遍接受和所需的操作,来通过建立一组核心的安全软件开发实践来有效地管理软件。通过遵循这些实践,红帽减少了已发布软件中的漏洞数量,缓解了未检测或未解决的漏洞的潜在影响,并解决了漏洞的根本原因,以防止未来再次发生。
在 SSML 的性能期间,红帽使用手动和自动技术来扫描和测试我们的源代码。此过程包括威胁建模以及静态和动态代码分析。所选的红帽产品可能可以通过通用标准和 FIPS140 审查流程,为产品的核心组件提供额外的结构化测试。
结构化测试包括自动化测试、手动测试、漏洞测试(来自内部来源,以及由实验室进行的渗透测试)和回归测试。扫描和测试过程中发现的所有问题都记录在相应的缺陷跟踪系统中,并在红帽产品安全部门的指导下,由产品管理部门设置优先级。由于我们的代码是开源的,所以客户可以访问源代码来执行任何验证,因为红帽不提供测试结果。
红帽使用哪些流程来识别上游代码库中潜在的安全问题?
红帽的开放和透明的软件开发方法构建在著名的"上游"开源社区软件项目之上,该项目反映了全球开发人员的贡献,并利用广泛使用和认可的开源许可证。与许多软件厂商或出版商不同,红帽策划上游社区源代码以审查,并纳入到发布前进行了广泛的组合、安全筛选和质量保证测试的产品中。
我们还有一个持续的、专用的流程,来通过跟踪产品组件、评估已识别的漏洞对其可能的影响,并使用 漏洞管理的一种开放方法 中概述的流程持续提供安全更新,来支持我们的客户。
我们采取一种非常慎重的方法,将上游代码添加到我们稳定的下游版本中。这种方法允许对潜在的不合适的代码或漏洞进行更全面的检查。在上游创新方面,它还有助于交付一个稳定但非静态的平台。
我们持续的产品安全流程建立在美国国家标准与技术研究所(NIST)- 安全软件开发框架(SSDF)之上。SSDF 为扫描和验证提供指南,建立在全球威胁格局和漏洞范围之上。将这些实践和工作流结合有助于对上游代码的完整性提供一个全面的了解,并最终提供一个具有更强安全性姿态的软件基础。
我们的安全测试实践如何适合红帽安全开发?
根据我们的内部软件政策的要求,红帽使用多个流程来确保软件安全性。这些要求有助于确保发行管道中安全问题的检测。以下讨论了了安全测试过程中的主要步骤。
安全架构审核
安全架构审核构成了红帽安全实践的支柱。安全架构师在开发人员团队的帮助下完成了此目的。此审核的基准要求映射到 NIST SP 800-53r5 安全工程控制。审核的主要目标为:
- 验证信息
- 验证机制
- 审核架构的未缓解的已知安全威胁
- 发现潜在的新弱点
- 构建长期安全路线图
安全架构审核是在主版本改变时执行,或每年进行,以先发生者为准。通常,威胁模型更改也会触发架构审核。作为审阅的一部分发生的主要活动有:
- 审核软件设计,以确认声明的安全属性是否存在且强制实施了
- 验证来自相应威胁模型的所有弱点是否已被分类,且定义的安全级别之上的弱点已得到妥善解决。
- 开发团队确保安全架构师有可用的资源来完成安全架构审核。
威胁建模
威胁建模是设计好的安全评估和实践的核心要求。遵循创造性和全面的方法,红帽通过使用主动控制框架作为指导,并针对产品安全、信息安全标准和指导方针,授权工程团队将实际安全威胁记录到产品中。然后,结果将以易于理解的格式呈现发现,以根据商业上合理的决策评估业务风险。
威胁建模流程从识别安全架构图中的威胁开始。根据识别的威胁对缓解进行了理论化,然后根据记录的威胁模型进行验证。一些在威胁模型中评估的示例是身份验证、授权、数据安全性、审计和日志记录、配置和弹性。
静态应用程序安全测试(SAST)
静态应用程序安全测试是使用自动化工具扫描源代码的过程,来发现已知的不安全的编码技术,以及软件中潜在的安全漏洞。
SAST 工具的精确度由其分析的范围以及用于识别漏洞的特定技术决定的。不同级别的分析包括:
- 功能级别 - 指令的序列。
- 文件或类级别 - 一个用于对象创建的可扩展程序代码模板。
- 应用程序级别 - 一个程序或一组互动的程序。
红帽使用所有上述级别来扫描红帽产品组合下提供的软件。由于 SAST 工具是一个自动化工具,所以会产生一些误报,可通过手动分析来识别它们。我们也不鼓励非常规地使用内存不安全语言来提高性能。
虽然红帽执行 SAST,但我们仍有大量的合作工作要做,来为所有红帽产品大规模提供 SAST。
动态应用安全测试(DAST)
动态应用程序安全测试(也称为 DAST)是可执行代码的动态测试,旨在通过利用流行的技术在运行时利用人类软件交互点来识别潜在的漏洞。虽然 DAST 可以与任何软件一起使用,但大多数 DAST 工具主要用于识别 Web 应用程序中的漏洞。
DAST 从探测一个应用程序或 Web 服务开始,以发现 API 端点,来将其视为潜在的攻击面。然后,扫描基础架构发送已知的攻击有效负载和变异参数,观察应用程序的行为,并记录其响应。报告响应和任何意外行为,来识别潜在的漏洞接口,按攻击类型分类。
虽然 DAST 可以作为任何发行版本管道的一部分运行,但红帽通过开发一个针对其产品量身定做的工具来进一步发展了它。RapiDAST 侧重于有效的 OpenAPI 扫描,并定期用来扫描 20+ 红帽管理的服务,包括 console.redhat.com、api.openshift.com 等。
模糊
模糊或模糊测试是一中自动的软件测试技术,其提供无效的、意外的或随机数据作为计算机程序的输入。然后,监控程序是否出现异常,如崩溃、内置代码断言失败或潜在的内存泄漏。
模糊器可以是基于生成的或基于突变的,具体取决于输入是从头生成的,还是根据它是否了解输入结构,来通过修改哑(非结构化)或智能(结构化)中的现有输入。它可以是白盒、灰盒或黑盒,具体取决于它是否了解了程序结构。
作为整体安全态势的一部分,红帽使用模糊来检测与内存相关的错误,如缓冲区溢出和释放后使用、竞争条件和死锁、未定义的行为以及内存泄漏。
渗透测试
渗透测试是一种通过可信方尝试破坏预定目标的方法。目地是识别弱点和漏洞,以便它们在恶意攻击者发现同样的结果之前被修复。渗透测试技术有三种类型:
- 黑盒测试是在事先不了解目标内部情况的情况下执行的
- 灰盒测试在对目标有有限的内部了解的情况下执行的
- 白盒测试是在完全理解目标的情况下执行的
红帽产品安全研究团队根据渗透测试执行执行标准(pentest-standard.org)指定的测试框架,对红帽产品执行渗透测试。团队根据过去的安全记录和有问题的软件的严重程度来花费时间。作为测试的一部分所执行的核心活动有:
- 事先交互
- 智能收集
- 漏洞分析
- 利用
- 利用后
- 报告
- 测试后
总结
软件安全性是一个复杂的问题,需要各种方法来防止漏洞进入到产品的整个生命周期中。在红帽,我们使用本文中讨论的所有技术来提高软件的质量,并保护我们的客户。我们持续评估其效率以及整个公司的工作,以应用最佳技术组合,来建立并加强我们产品的安全性。
© 2022 Red Hat, Inc.
Comments