静态应用程序安全测试
数据显示,2022年截止到目前发现了大约 20,175 个新漏洞,高于前一年的 18,341 个。网络攻击者正不断扫描网络中所有可能被利用的漏洞,从而发起网络攻击。
美国国家标准与技术局(NIST)、国家漏洞数据库(NVD)数据显示,90%以上的网络安全问题是由软件自身的安全漏洞被利用导致。目前,静态应用程序安全测试在软件开发生命周期当中使用频率越来越高。静态应用程序安全测试在软件开发期间检测源代码中存在的编码问题及安全缺陷,有助于及时修复缺陷提高软件安全性。
什么是静态应用程序安全测试(SAST)?
静态应用程序安全测试(SAST)是一种白盒测试,通过直接分析源代码、字节码和二进制文件,以识别可利用的漏洞和编码问题。静态应用程序安全测试通过建立一种程序状态模型,通过字符串匹配、数据流分析、控制流分析、抽象语法树的语义分析等手段进行路径遍历,完成对状态空间所有路径的近似分析,以发现代码中存在的潜在缺陷以及安全漏洞,并提供一定的修复建议。
静态应用程序安全测试在DevSecOps 中的作用
众所周知,DevSecOps 通过在软件开发生命周期 (SDLC) 的每个阶段添加合适的安全测试方法来扩展 DevOps 和敏捷的方法,从而创建一个动态和持续的测试过程。
测试过程最先涉及的就是静态应用程序安全测试,检测开发人员编写的代码安全性并定位有问题的代码所在,协助开发人员高效修复代码缺陷,有助于快速安全地交付软件。
静态应用程序安全测试的好处
①可在开发早期阶段检出缺陷,修复成本低;
②可精确定位源代码中的潜在错误,便于修改;
③代码覆盖率完整;
④易于使用,通用性高。
哪些行业使用静态应用程序安全测试?
随着网络安全法规和标准在全球范围内不断展开,越来越多的组织正在扩展网络安全计划,并在交付软件之前进行安全测试。整个行业,尤其在金融、政府等行业,都涉及对应用软件或系统进行安全测试的需求。
最佳实践
进行安全测试(包括静态应用程序安全测试)的有效方法是持续进行。这意味着将静态应用程序安全测试直接集成到 CI/CD 管道中。这样做可以创建快速的反馈周期,以便开发人员可以在代码发布之前修复安全漏洞。
静态应用程序安全测试发现的常见安全漏洞包括:
缓冲区溢出
跨站点脚本
SQL注入等
除了检测安全漏洞外,静态应用程序安全测试还能检测语义缺陷/运行时缺陷及安全编码标准/规范。