IAST技术在DevOps开发模型下的实践研究

2021-12-08 02:33:06严敏佳陈中伟李琪瑶封靖川
信息安全研究 2021年12期
关键词:插桩内存流程

黎 曦 严敏佳 陈中伟 田 峥 李琪瑶 封靖川

(国网湖南省电力有限公司信息通信分公司 长沙 410007)

1 DevOps开发模型

软件开发模型可分为3类:瀑布式开发、敏捷开发和研发运维一体化(development operations, DevOps)[1].瀑布式开发为传统的开发模式,它把软件项目的开发分隔成不同的开发阶段,使用里程碑的方式,严格定义了各开发阶段的输入和输出,软件交付的周期较长.敏捷开发使用人们熟知的Gradle,Maven,Jenkins等工具进行自动化的代码编译、打包,大幅提升了业务的交付速度[2].

随着技术的发展,DevOps开发模型得到普遍采用.传统上,软件研发是一个孤岛,研发和运营团队在流程中独立工作,DevOps通过将研发运维一体化,消除了研发和运营团队之间的壁垒,创建了更成熟、更高效的工作环境.相较于传统的瀑布式开发模式,DevOps具有更短的交付周期、更稳定的交付质量[3].但即便在DevOps开发模式下,安全仍独立于整个流程之外,甚至与DevOps成为对立面,其主要原因有2个:

1)时间成本.由于安全独立于DevOps流程,导致安全想要介入研发流程只能打破持续运转的流水线,进行传统的漏洞扫描、人工渗透等费时费力的安全测试,如果遇到业务紧急的情况,安全不得不为业务让步,使得软件极有可能带“病”上线.

2)修复成本.DevOps流程外的安全测试在软件上线前进行,对于此时的软件而言,已经经过了完整的业务研发和功能验证测试.将上线前审查出的安全隐患反馈给研发团队进行整改后,又需要进行新一轮的功能验证.因此,安全对于企业的成本是“高昂”的.

如何解决DevOps下的研发安全成为人们较为头疼的问题,在此背景下,研发安全运维一体化(development security operations, DevSecOps)开发模型应运而生.在此模型中,采用应用安全检测技术将安全测试有效前置,并完美融入DevOps流程中,在完成软件交付的同时,测试阶段即可快速、精准地定位软件内部的安全隐患和数据泄露隐患.

2 DevSecOps落地分析

DevSecOps从DevOps敏捷开发的理念延伸和演变而来,其核心理念为:在快速迭代模式下,安全是产品研发团队每个人的责任,需要贯穿从研发到运营整个业务生命周期的每一个环节.它的出现就是为了改变和优化之前安全工作滞后分散的现状.

不同安全检测技术的使用成本与效果有所不同,相较于动态应用安全测试(dynamic application security testing, DAST)和静态应用安全测试(static application security testing, SAST)技术,交互式应用安全测试(interactive application security testing, IAST)技术的使用成本与效果是理想的.SAST的代码扫描和语义分析导致误报率居高不下,因而SAST一直被诟病,要真正投入使用一款SAST工具,需要耗费大量的人力成本去做误报的筛查工作;DAST基于爬虫与请求响应包的规则匹配技术导致其在漏洞检出率方面表现不佳[6].表1展示了3种AST技术的对比情况.

表1 3种AST技术的对比情况

3 IAST在DevSecOps模型下的实践

IAST是高德纳公司提出的一种交互式应用程序安全测试方案,通过Web应用服务端部署运行时插桩,收集、监控Web应用程序运行时的函数执行和数据传输,并与分析引擎端进行实时交互,高效、准确地识别安全缺陷及漏洞.此外,IAST还可以准确定位安全漏洞所在的代码文件、行数、函数及参数.从某种程度上说,IAST是综合DAST和SAST技术优势的一种运行时灰盒安全测试技术[7].

3.1 主动插桩技术

主动插桩技术需要在被测应用程序中部署插桩探针,使用时需要外部扫描器去触发探针.一个组件产生恶意攻击流量,另一个组件在被测应用程序中监测应用程序的反应,以此来定位漏洞和降低误报[8].图1显示了IAST主动插桩技术原理.

图1 IAST主动插桩技术原理

3.2 被动插桩技术

被动插桩技术是在程序运行时监视应用并分析代码,它不会主动对Web应用程序执行攻击,而是纯粹被动地分析检测代码.在Web应用运行过程中,基于插桩探针实时监控程序的污点数据在系统中的传播,以检测数据能否从污点源传播到污点汇集点.因此,被动插桩技术拥有巨大的技术优势,它不会影响同时运行的其他测试活动,并且只需要业务测试来触发安全测试,有正常测试流量就可以实时进行漏洞检测.图2显示了IAST被动插桩技术原理[9].

图2 IAST被动插桩技术原理

3.3 敏感数据追踪

软件中的敏感数据也可以通过IAST进行监测.IAST监视应用的内容包括代码、内存和数据流,因此可以确定敏感数据(如用户身份信息、银行卡号)的流向,检测数据是否以未受保护方式写入文件,是否暴露在请求地址(uniform resource locator, URL)中,是否经过恰当加密.只要敏感数据处理不恰当,IAST工具就会标记该数据处理实例,定位数据泄露点,以确保敏感、隐私数据没有存储在安全性低或没有加密的日志文件或数据库中.利用IAST技术进行敏感数据追踪有助于软件达到行业标准及符合法规,如支付卡行业数据安全标准(PCI DSS)和《通用数据保护条例》(GDPR)等[10].

3.4 IAST的影响分析

对于DevSecOps下的流水线而言,IAST的引入主要有2方面的影响:

按文献发表年度进行统计,形成移动阅读研究文献年度分布图,如图1所示。2004—2009年是国内移动阅读的探索期。该时期移动阅读WAP网站兴起,如移动梦网,随后手机报诞生、免费WAP网站获得蓬勃发展;该时期针对移动阅读的研究初步兴起,文献量增长缓慢,影响力较小,但同时期的电子书市场不断膨胀,涌现出大量阅读客户端。2010—2018年移动网络和智能终端快速普及,移动阅读相关研究成果大量涌现,2013年迎来研究的高峰。

1)IAST对于现有研发流程的影响;

2)IAST对于研发环境性能的影响.

IAST依赖于DevSecOps的自动化、标准化流水线进行部署,并借助研发流程中自有的功能测试完成软件的安全测试,故其对研发流程的影响极小.本文重点说明IAST对于研发环境性能的影响,测试环境和测试工具分别如表2和表3所示:

表2 测试环境

表3 测试工具

插桩前对业务网站进行请求访问,使用网页查看业务网站访问速度,如图3所示;使用压力测试工具Jmeter每秒1次请求业务网站,并在Jmeter上查看接口响应速度,如图4所示.

图3 插桩前网站访问速度

图4 插桩前Jmeter接口响应速度

对业务进行插桩部署,再次进行业务访问并通过网页查看业务网站访问速度,如图5所示;插桩后的Jmeter接口响应速度如图6所示.

图5 插桩后网站访问速度

图6 插桩后Jmeter接口响应速度

通过Telegraf,Influxdb查看CPU、内存等资源使用情况,插桩前后CPU、内存资源使用率分别如图7和图8所示.

图7 插桩前后CPU资源使用率

图8 插桩前后内存资源使用率

通过对测试结果的分析可知,进行IAST插桩时对服务器的CPU、内存等资源略有影响,插装完成后恢复到插桩前业务网站对资源占用的状态;网站的访问速度在插桩前后基本一致;插桩前后接口响应速度差异在3 ms之内.综上所述,IAST插桩前后对业务网站的CPU、内存、访问速度影响均小于5%.

3.5 IAST的应用实践

本节以国内某DevOps平台为例,对研发流程中的IAST安全检测融合实践进行说明,如图9所示:

图9 国内某DevOps平台下的IAST安全检测融合实践

DevOps大多使用容器虚拟化环境进行软件的开发交付.由图9可知,IAST的安全融合可充分利用DevOps的自动化特性,在构建测试环境的同时引入IAST插桩,这里使用修改容器配置文件如DockerFile的方式拉取插桩.由于IAST依赖软件的运行时环境,简单修改测试环境的环境变量或启动参数即可应用IAST插桩对软件的运行时内存、数据流进行全面监控.随着流水线运行到测试阶段,软件需要进行全面的自动化功能测试或根据测试用例进行人工测试,IAST可依托功能测试的交互式功能验证流量,完成软件每个功能点的安全漏洞风险及敏感数据泄露风险验证[11].

此外,在验证软件功能安全性的基础上,IAST还可以获取软件在运行时加载的开源软件的相关信息并形成特定指纹,通过指纹信息比对完成软件的开源软件威胁审查.软件的功能测试完成后,相应的安全测试结果随着软件功能缺陷一起反馈给研发人员进行整改.

4 结束语

IAST对于DevOps平台有着天然的适配属性,可以无缝衔接到每条软件开发流水线中.IAST测试工具适用于软件测试环节,可以对测试的软件功能进行全方位的安全检测,整个过程安全人员介入较少,无需额外安全测试时间的投入,对现有开发流程的影响较小,真正实现透明无感知的深度漏洞检测.IAST测试工具在保证安全性的前提下也符合敏捷开发和DevOps模式下软件产品快速迭代、快速交付的要求[12].

猜你喜欢
插桩内存流程
吃水果有套“清洗流程”
今日农业(2021年10期)2021-07-28 06:28:12
基于TXL的源代码插桩技术研究
“春夏秋冬”的内存
当代陕西(2019年13期)2019-08-20 03:54:22
基于性能分析的自适应插桩框架
违反流程 致命误判
劳动保护(2018年5期)2018-06-05 02:12:10
基于记录重播的嵌入式系统死锁检测方法
软件导刊(2017年12期)2018-01-09 13:01:23
本刊审稿流程
析OGSA-DAI工作流程
基于顺序块的嵌入式白盒测试插桩技术研究
基于内存的地理信息访问技术