SEC11-BP03 定期执行渗透测试
定期对软件执行渗透测试。此机制有助于识别无法通过自动化测试或人工代码审查检测到的潜在软件问题。它还有助于了解检测控制的有效性。渗透测试应设法确定软件是否会以意外方式执行,例如公开应受保护的数据,或者授予比预期更广泛的权限。
期望结果:使用渗透测试来检测、修复和验证应用程序的安全属性。在软件开发生命周期(SDLC)中应定期执行计划的渗透测试。在发布软件之前应处理渗透测试的结果。您应该分析渗透测试的结果,以确定是否存在使用自动化可以发现的问题。拥有包括主动反馈机制的定期且可重复渗透测试流程,有助于为构建者提供指导并提高软件质量。
常见反模式:
-
仅对已知或普遍存在的安全问题进行渗透测试。
-
未使用相关的第三方工具和库对应用程序执行渗透测试。
-
仅对软件包安全问题进行渗透测试,而不评估已实施的业务逻辑。
建立此最佳实践的好处:
-
在发布之前增强对软件安全属性的信心。
-
有机会确定首选的应用程序模式,从而提高软件质量。
-
获得一个反馈环路,在开发周期早期确定自动化或额外培训可以在哪些方面改进软件的安全属性。
在未建立这种最佳实践的情况下暴露的风险等级:高
实施指导
渗透测试是一项结构化安全测试练习,让您可以运行计划的安全漏洞方案,以便检测、修复和验证安全控制机制。渗透测试从侦察开始,在这个过程中,根据应用程序的当前设计及其依赖项收集数据。生成并运行特定于安全方面的测试方案的精选列表。这些测试的主要目的是发现应用程序中的安全问题,有人会利用这些安全问题来获得对环境的非预期访问,或未经授权访问数据。当推出新功能时,或者应用程序的功能或技术实施方面发生重大变更时,您应该执行渗透测试。
您应该确定在开发生命周期的哪个阶段执行渗透测试最为合适。应当尽量晚些时候执行此测试,以便系统功能接近预期的发布状态,但也要留有足够的时间来修复任何问题。
实施步骤
-
采用结构化流程来确定渗透测试的范围,让这个流程基于威胁模型
是保留场景相关性的好方法。 -
确定在开发周期的什么阶段执行渗透测试较为合适。这个阶段应该是在应用程序预期改动很细微,但仍留有足够时间进行修复的时候。
-
为构建者提供以下方面的培训:从渗透测试结果中可以期待获得什么,以及如何获得有关修复的信息。
-
使用工具自动执行常见或可重复的测试,从而加快渗透测试的速度。
-
分析渗透测试结果,以便确定系统性安全问题,并使用此数据为额外的自动化测试和正在进行的构建者培训提供信息。
资源
相关最佳实践:
相关文档:
-
AWS 渗透测试
提供有关 AWS 上的渗透测试的详细指导
相关示例:
-
使用 AWS CodePipeline 自动执行 API 测试
(GitHub) -
自动安全助手
(GitHub)