近年来,由于程序中的漏洞所引发的安全事件层出不穷。这类事件已经对各企事业单位造成了无法估量的损失。举例来说,2017年发生的WannaCry勒索软件攻击,就是攻击者利用Windows操作系统中的漏洞所发起,导致全球数百万台计算机受到影响。再如,2021年Log4j 2(CVE-2021-44228)漏洞同样引起了全球的高度关注,因其存在严重安全风险,可使攻击者能够执行远程代码并控制通路的系统。因此,为避免应用程序运行中存在安全隐患,提前对应用程序进行漏洞检测变得尤为重要。
众所周知,最初的安全检测更多依靠安全工程师,通过人为操作进行安全漏洞检测;后来随着技术的不断发展,以SAST为代表的安全检测工具出现,极大地提升了漏洞检测效率;发展至今,在人工智能时代,AIGC融合模糊测试开启了漏洞检测新时代,让安全检测变得更智能、更精准。今天,小编就为大家分享一下4个不同阶段的安全检测手段。
来源:清华大学张超教授演讲
第一阶段:人工审计
最初,在计算机软件开发的早期阶段通常会引入代码审计工作,由专门的审计人员在开发过程中检测和评估代码。这也是应用程序安全检测的一种重要方法,可以帮助发现应用程序中潜在的安全漏洞和缺陷,以保护应用程序免受攻击和防止数据泄露。由于代码审计是一项复杂而繁琐的任务,需要具备一定的技术和专业知识,所以,这种方式可能会花费大量的时间和人力,并且存在检测不全面的情况。
现如今,随着开源软件和云计算的普及,代码审计变得更加重要。代码审计可以帮助企业和组织避免开源软件和云服务中的漏洞所带来的安全风险。此外,代码审计也是许多公司和组织在安全性方面合规的必要条件。为了提升代码审计的效率,自动化的安全检测工具开始被企业组织使用,至此进入工具检测的时代。
第二阶段: 规则扫描
在规则扫描阶段,SAST工具在软件开发过程中得到了广泛应用,帮助企业提升了代码审计的效率。SAST (静态应用程序安全测试) 是一种用于分析应用程序源代码和二进制文件的技术,通过检测潜在的安全漏洞,进而保证代码质量。
通常情况下,SAST技术有如下几个优势:
早期介入检测:SAST在应用程序编写阶段就可以进行,因此可以在代码提交到版本控制库之前就发现和解决安全问题,有助于降低漏洞进入生产环境的可能性。
覆盖面广:SAST技术可以对整个应用程序代码进行分析,因而可以检测出诸多常见的安全问题,如SQL注入、跨站脚本攻击、代码注入等。
自动化程度高:在完成规则配置后,SAST工具可以通过自动化工具实现代码分析,大幅减少了安全测试的工作量。
易于集成:SAST技术可以与软件开发工具集成,比如IDE、CI/CD工具等,从而使得开发人员能够在保证开发效率的前提下使用SAST技术进行代码检测。
不过,由于SAST通常只能基于代码的静态分析来识别漏洞,而无法考虑代码的上下文信息,而且SAST可能无法处理代码中变量和数据流的复杂性,使得SAST的误报率较高。基于此,在使用SAST工具时,仍需要借助人工对误报进行排查。此外,SAST基于预定义的规则和模式,对代码进行静态分析,仅仅可以检测到与已知漏洞库相匹配的漏洞,对于未知威胁依旧无能为力。黑客利用该弱点对应用程序发起攻击,导致0day漏洞频出。这种情况下,安全检测开始进入动态测试阶段。
第三阶段: 动态测试
在动态测试阶段,从攻击者的角度出发,通过模拟攻击者可能使用的各种手段来评估软件系统的安全性。这种方法的优点在于能够模拟攻击者的攻击手段,可以更好地发现系统可能存在的安全缺陷;它的缺点就是漏报概率较高和覆盖率相对较低,因为无法穷尽所有可能的攻击方式,且测试用例的生成是基于对攻击行为的推测。
这种情况下,不得不寻找更优的测试方法。随着模糊测试技术的不断发展,以及人工智能等技术的不断演进,安全检测也正式进入智能挖掘阶段。
第四阶段: 智能挖掘
模糊测试作为一种动态检测技术,是漏洞挖掘的有利“武器”。随着近几年的不断发展,模糊测试已经从传统的黑盒模糊测试技术,逐步演进到了基于覆盖引导、定向模糊测试的灰盒模糊测试技术。作为下一代安全检测技术,它重新定义了软件开发的新范式。因为,在软件开发中,对于“代码”的安全检测,改变了已有的格局,也正式开启了安全检测的新时代。
覆盖引导的模糊测试(Coverage-guided Fuzzing)是一种高效的模糊测试技术,它通过动态分析程序的执行路径,为模糊测试生成更具有针对性的测试用例。它可以大大提高模糊测试的效率和准确性,尤其适用于测试大型、复杂的软件系统。而且,在实际应用中,基于覆盖引导的定向模糊测试技术可以基于现有SAST的检测分析结果,对有风险的代码片段、程序区域进行定向模糊测试,从而提供更精准的漏洞信息,极大地降低了误报率。
此外,基于覆盖引导的模糊测试可以通过不断生成测试用例和运行程序以及更新覆盖图等步骤,不断地提高测试的全面性。通过全面地覆盖程序的所有分支和路径,它可以探测程序的各种边界情况和异常情况,从而更有可能发现程序中存在的漏洞。因此,覆盖引导的模糊测试可以作为一种高效、全面、可靠的漏洞发现技术,用于发现程序中的未知漏洞。
而且,随着人工智能与网络安全不断交叉融合,对于AI赋能模糊测试也有了新的探索。云起无垠将AIGC融合模糊测试,可以在漏洞检测和修复阶段起到更好的效果。在检测阶段,AIGC可以赋能模糊测试生成更精准的测试用例;在修复阶段可以根据漏洞情况给出修复建议和代码,帮助企业完成漏洞修复工作。
基于此理念研发设计的无垠代码模糊测试系统,融合了覆盖引导、遗传算法、神经网络和AIGC等理念技术,在软件的开发、测试、部署、运维等阶段运行,帮助企业解决开发中的安全威胁问题。而且,在开发阶段可以与SAST工具融合,基于SAST对于源码的漏洞检测结果进行定向模糊测试,在消除误报的情况下,可以更好地检测已知和未知缺陷,让应用程序更安全。而且,可以减少人力的投入以及由于人工主观性、分析不完备带来的误报和漏报。
写在最后
数字时代,第三方代码、开源组件的使用加速了软件开发,因此对于应用程序的安全检测变得尤为重要。数据显示,在开发的早期阶段介入,可以极大地缩减修复成本,这就意味着我们需要在代码开发的早期阶段做好安全检测工作。那么,做好安全工具的融合,让安全效果更大化是一个较好的选择。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。