国网思极检测技术(北京)有限公司执行董事、总经理
发表时间:2023-11-17 17:02:16
文章来源:炫佑科技
浏览次数:139
菏泽炫佑科技
国网思极检测技术(北京)有限公司执行董事、总经理
笔者团队学习了软件开发安全并探索了软件安全测试,并与业界主流软件安全测试技术相结合进行实践。 本文结合作者团队的实践经验,分析了软件安全测试相关的实践收获。
韩敏
现任国家电网四季测试技术(北京)有限公司执行董事、总经理。软件工程硕士,国家电网公司办公自动化系统业务方向信息化高级专家,中国电力科学研究院先进工作者、“茶杯脱敏理论”提出者、“四季丰”系列产品创始人。
随着方法的普及,软件开发正朝着“快速迭代、快速开发、快速交付”的方法发展,为业务提供支撑。 开发团队也在不断平衡和整合开发、测试和业务之间的关系。 但软件安全测试仍存在以下典型问题。
(1)开发迭代周期短,难以对每个版本迭代进行安全测试;
(2)开发人员和测试人员通常缺乏应用安全知识,网络安全人员不懂软件开发,双方很难建立沟通语言;
(3)主流的软件安全测试仍然是渗透测试,这导致研发过程中难以系统地检测代码级和功能级缺陷;
(4)基于代码审计的安全检测普遍存在误报和漏报,需要人工复合;
(5)无法准确掌握软件所使用的开源组件的资产使用情况和安全漏洞。
从理论上讲,软件安全测试是从安全角度审视软件安全质量的过程,主要包括:
(1)确认软件的安全功能完全满足安全设计要求;
(2) 识别软件本身的设计缺陷、编码错误和运行故障;
(3)评估软件的其他质量属性,包括可靠性、可扩展性、可恢复性等。
其中,软件漏洞的识别是软件安全测试的主要内容。 那么,安全测试的主要思路包括:
2.1. 将自动化安全测试工具与研发流程集成
2020年全球顶级咨询公司发布的《2020应用安全测试魔力象限》报告明确指出,当前应用软件安全测试领域的主流技术是SAST、DAST、IAST和SCA。 可以说,通过这四类技术的实际应用和有机结合,可以有效地开展软件安全测试。
目前软件研发团队常用的研发流程是“需求、设计、编码、测试、部署、运营”,并在流程中实现流程的快速迭代。 研发团队根据软件安全保障的需要和自身能力来选择、配置和实施软件安全测试实践,例如使用SAST技术进行白盒安全测试,使用DAST技术进行黑盒安全测试。 因此,软件安全测试的自动化工具需要与研发团队现有的研发流程和安全实践相匹配和集成,并具备与研发管理平台集成的能力。
2.2. 检测效率与成本投入的平衡
安全测试工具可以为中级安全测试提供支持,这就要求自动化安全测试平台具有“耗时短、准确率高”的特点。
2.3. 软件研发资产的保护
安全测试过程中研发资产的安全保护是研发团队必须重视的。 受开源理念影响自动化软件开发,业界存在利用开源组件支持软件开发功能实现、利用开源安全检测工具进行安全保障的案例。 但从“软件供应链安全”的角度来看,由于开源工具的非商业性、开放性,可能会出现所属开源社区对开源组件缺乏维护的情况,从而导致安全问题。漏洞未修复且后续版本无升级。 其分发和下载路径中可能存在被恶意者植入恶意代码的风险。 因此,有必要对所使用的软件开发资产进行合理的控制。
3.1. 安全检测技术选型
业界主要使用自动化软件安全测试技术和工具来解决常见的技术安全问题,通常涵盖OWASP Top 10以及PCI DSS等行业标准中定义的应用程序安全风险。
(1)动态应用安全测试(DAST)
应用软件的动态运行状态通常是在测试或运行阶段进行分析。 通过模拟黑客攻击行为,收集并判断应用软件的响应,可以判断应用软件是否存在安全缺陷。
(2)静态应用安全测试(SAST)
源代码级别的安全测试,通过将软件安全规则和开发规范纳入清单进行匹配,从代码实现的源头遏制安全风险。 通常在编码阶段,对应用软件的源代码或二进制文件的语法、结构、流程、接口等进行分析,以发现程序代码中的安全漏洞。
(3)交互式应用安全测试(IAST)
通过部署的代理程序,收集和监控应用软件运行时的功能执行和数据流,与扫描器实时交互,高效、准确地识别应用软件中的安全缺陷和漏洞。 它还可以准确识别安全缺陷和漏洞。 代码文件、行数、函数和参数。 IAST技术可以说是一种结合了SAST技术和DAST技术的实时应用软件安全检测技术。
DST、SAST、IAST的实现原理、优缺点分析等技术资料,可以参考安全牛网站发表的文章《洞察DAST、SAST、IAST——Web应用安全测试技术比较》 2019年4月,这里不再重复。 但我们对以上三种安全测试技术进行全面的比较:
3.2. 软件组件分析和安全检测
软件开发过程中大量使用第三方组件(包括商业的和开源的)已经成为软件开发的主流。 第三方组件还可能引用其他类似的安全或不安全组件,从而形成没有安全保证的软件供应链或调用链。 任何薄弱环节都可能成为入口点并导致软件攻击。 因此,为了检测研发过程中使用的第三方组件的安全性,软件组件分析(SCA)技术变得非常重要。
2019年,《软件组件分析技术洞察报告》中对软件组件分析技术进行了定义:软件组件分析产品对应用程序进行分析,以检测开源软件组件是否存在已知的安全漏洞或功能漏洞,并需要经过适当许可的商业软件或第三方产品。 它有助于确保企业软件供应链仅包含安全组件,从而实现安全的应用程序开发和组装。
准确地说,SCA技术用于检测软件中的开源组件是否包含已知的安全漏洞或功能漏洞,以及需要适当许可的商业软件或第三方产品。 SCA技术有助于确保企业软件供应链仅包含安全组件,从而支持安全的应用软件开发和组装。 关于软件构件分析的解读,请参考安全牛网站2020年7月发布的文章《控制开源企业开展软件构件分析的思路与实践》。
3.3. 软件安全测试工作流程
以上四种安全测试技术均应用于软件开发的安全测试过程中。 考虑的过程如下。
(1) 开发人员在编码阶段完成代码编译并构建代码包。 此阶段引入SAST技术和SCA技术对代码进行全面检查,识别软件中代码级安全缺陷和存在固有安全漏洞的组件;
(2)开发人员或测试人员在测试阶段进行单元测试或集成测试,以验证功能的可用性。 本阶段引入IAST技术对代码进行交互式安全测试,掌握代码安全和逻辑安全状况,提前识别和修复。 代码和逻辑的安全缺陷;
(3)在测试环境中进行完整的业务测试,并利用DAST技术对软件进行动态扫描。 现阶段还可以引入人工安全测试,自动化平台提供安全漏洞录入和跟踪功能;
(4)应用软件发布后,将不定期组织渗透测试,进行进一步的业务安全测试。
3.4. 行业代表性工具
目前,国内外各种安全测试技术已经形成了各自的行业代表性工具,包括开源工具和商业工具。 在开源工具方面,全球顶级应用安全组织OWASP提供了多种工具支持DAST技术和SCA技术的验证和应用。 在商业工具方面,除了进入评测领域的国外知名公司(如:Micro Focus、Rapid 7、HCL等)外,还有奇安信、Open等国内优秀厂商来源:网络安全、酷啄木鸟、莫安。 提供国产工具。
笔者团队基于国内安全测试工具对团队自主研发的软件系统进行安全测试,现将经验分享给大家。
(一)安全测试是实践的基础
随着人们对信息安全的重视和软件安全发展的实践,“安全”逐渐吸收、整合“安全(Sec)”,形成“安全”。 其重要思想是,基于开发与运维一体化,开发可以快速上线软件进行安全测试,并通过多个版本的迭代和安全保障,使软件变得成熟稳定,软件功能更加完善。 富有的。 然而,DAST 和 SAST 安全测试在该模式下的任务过于繁重。 测试耗时较长,需要人工验证测试结果,这自然限制了DAST和SAST在过程中的应用。 因此,要落地实施,可融入开发流程、速度快、准确度高、人工参与少的自动化安全测试技术成为前提保障。 基于此,IAST安全测试和SCA测试是支持实施的首选。
(2)与质量管理体系相结合
通常,研发团队根据网络安全管理需求实施安全测试。 在软件安全测试实施过程中,将测试标准、测试过程、测试人员、测试结果纳入软件质量管理体系,是保证软件安全效果的基础。 当软件的某项安全指标不符合要求时,质量部门有权否决该软件的发布或上线运行。 因此,针对DAST、SAST、IAST和SCA各自的技术特点,将基于IAST技术的安全测试与软件功能测试相结合,并在测试阶段进行基于SCA技术的组件分析,可以实现功能测试和安全性的兼顾。测试。 同时覆盖,可以从代码、逻辑、组件等不同维度对软件进行安全分析,同时为质量管理体系提供必要且低成本的支持。
在实践中,虽然笔者团队在测试流程、人员能力、工具配置、漏洞修复等方面还处于探索和经验积累阶段,但与之前的软件相比国网思极检测技术(北京)有限公司执行董事、总经理,明显减少了不同版本的软件数量。软件发布前的威胁级别。 安全漏洞,可以说软件安全测试为软件开发提供了明显有效的安全技术支持。 众所周知,安全是动态变化的,没有绝对的安全。 但是,如果能够在软件上线之前设置好检查点,能够做足够的软件安全测试,能够发现并修复能够发现的软件安全漏洞,那么对于软件上线应用来说,这将为后续的软件上线应用打下坚实的基础。网络安全和数据安全保障工作。
参考
一文洞悉DAST、SAST、IAST——浅谈Web应用安全测试技术对比
掌控开源企业软件组件分析的思路和实践
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等