Page 52 - 《软件学报》2021年第10期
P. 52
3024 Journal of Software 软件学报 Vol.32, No.10, October 2021
测试人员进行操作.在测试阶段中,他们需要对构建完成的软件包/二进制文件进行验证.在一定时间内,需要发
现其中所存在的安全问题,并反馈给开发人员进行修复.在测试过程中,为保证测试的准确率,DevSecOps 期望在
DevOps 中无缝衔接安全,鼓励结合多种测试手段、使用不同的自动化测试工具来协助完成测试.企业需要充分
考虑自身条件和要求,选择最合理的安全测试方案.
动态应用程序安全检测
动态应用程序安全检测(dynamic application security testing,简称 DAST)是使用故障注入技术来识别常见
的风险和漏洞的一种测试方式 [57] ,它也是最为常见的测试方式之一.与静态检测不同,它不需要分析程序源代码
的内部逻辑结构,而是为正在运行的应用程序提供数据输入,并判断程序的动态行为和输出是否符合预期,进而
分析应用程序的健壮性和安全性.由于用户的输入是不可控的,因此测试人员提供的测试用例必须足够全面,并
针对输入的内容做好防范和处理.
交互式应用程序安全检测
交互式应用程序安全检测(interactive application security testing,简称 IAST)分为主动 IAST 和被动 IAST [58] ,
它们不需要额外的配置就能够自动运行.主动 IAST 的检测功能基于外部源,该外部源能够触发应用程序中检测
到的代理,这一类的 IAST 需要 DAST 工具才能激活.而在被动 IAST 中,代理是独立的,并且在应用程序运行时
对代码进行监视和分析,进而寻找安全漏洞.它能够与现有的测试自动化并行工作,并提供即时结果.应用 IAST
可以提供更广的代码覆盖率,可以发现更敏感的漏洞,并及时反馈检测到的结果.
渗透测试
渗透测试是从攻击者的视角出发,通过模拟恶意黑客的进攻手段对系统进行攻击,主动去发现系统中存在
的安全隐患的一种测试方法 [35] .它能够独立地检查网络和系统的安全机制,是对常规安全扫描结果的验证和补
充.除了利用自动化的渗透工具之外,渗透测试还需要安全专业人士的参与.在对工具的结果进行分析之后,通
常,安全人员也需要进行手动测试,但这一过程一般较为耗时.因此在 DevSecOps场景下,目前很难做到每一次发
布前都进行渗透测试.组织需要在测试策略上进行一定的调整.例如,当产品积累到足够多的新特性时,可以进
行一次渗透测试.
测试阶段的安全实践集中于对二进制文件/软件包的安全检测.在产品正式发布前,通过实际运行程序来发
现这些二进制文件/软件包中的漏洞和缺陷,进而完成及时的修复工作.测试方法和测试工具多种多样,为避免
过度的测试影响组织发布产品的速度,组织在进行 DevSecOps 安全实践时,应当充分考虑自身实际情况,由安全
主管或安全测试专家为公司打造最合理的测试工具和测试方法的组合.在通过全面的安全测试后,这些二进制
文件/软件包即可进行正式发布.
3.1.5 发布阶段
发布阶段中,版本的发布可以由相关负责人审核或者通过 DevOps 流水线自动完成.考虑到这些二进制/软
件包在发布后会面临被私自篡改、逆向工程等安全威胁,组织在进行正式版本发布之前,需要对这些待发布的
软件产品采取不同程度的防范措施,以确保用户使用真实可靠的产品版本并维护企业的合法权益.为此,我们总
结了以下相关安全实践.
添加数字签名
数字签名是进行身份验证、保障数据完整性的重要手段之一,它提供了以下 4 点保障:真实性、完整性、
不可否认性以及特定情况下的公证效力.一般而言,组织的数字签名无法被冒充,因此在发布软件包之前,都应
该为其添加数字签名,以增加该软件的可信度和公信力.一旦已添加了数字签名的软件包被发布,它就不会被轻
易修改.倘若软件在发布后被私自篡改,数字签名中的消息摘要就会发生改变,用户在实际使用这些被篡改的软
件时就会收到告警.正是利用这种手段,我们可以实现保障软件安全的目标.也正因如此,添加数字签名这一安
全实践被广泛用于现实的产品发布流程中.
应用屏蔽
应用屏蔽技术是一项修改应用程序的二进制代码技术,用以加强应用程序抵御入侵、篡改和逆向工程的能