自2017年以来,全球网络攻击致使泄漏数据的数量平均每年增长高达224%,2020年网络钓鱼攻击翻一番。数据安全风险逐年上涨,但安全人员数量却远远少于开发人员。某行业技术人员称,每千行代码就可能引入4-6个安全缺陷,对于一个组织来说,即使是在其应用程序的一小部分上,寻找资源来执行代码审查都具有极大的挑战性。因此,将静态代码安全检测手段集成到SDLC中可以显著提高代码整体质量。
静态代码安全性测试
SAST(静态代码安全检测)主要对应用程序的源代码进行分析来查找其中存在的漏洞。静态代码安全检测(SAST)是在编译代码之前扫描代码,因此它是一种白盒测试。SAST的使用已经被实践10多年,这项技术手段可以帮助开发人员在软件开发生命周期(SDLC)早期阶段发现代码安全漏洞,此外SAST 无需实际运行或编译代码即可确保符合安全编码标准。
更重要的是,SAST(静态代码安全检测)可以自动化并透明地集成到项目的工作流程中。这减少了通常与安全性测试应用程序相关的一些麻烦,与DAST(动态应用程序测试)形成鲜明对比。在DAST中,对于大型项目,需要创建特殊的基础设施、执行特殊的测试以及应用程序的多个实例与不同的输入数据并行运行,而IAST覆盖路径少检测范围较窄,无法对整体代码实施安全检测。
在SDLC中SAST是如何起作用的
因为SAST是被集成到软件开发生命周期(SDLC)的早期阶段,并能够分析100%的代码库,它们比人工执行的安全代码审查要快得多,可以在几分钟内扫描数万行代码。通过静态代码检测有助于开发人员及时找到易受攻击的代码,同时在不破坏任何构建的情况下,进行任何相应的修改以修复缺陷代码。
高效实施SAST的关键步骤
为了有效和高效地实施SAST,应执行以下步骤:
选择合适的SAST工具:该工具支持所使用的编程语言并可以对应用程序执行代码审查;
创建基础设施并部署工具:选择工具后,下一步骤包括处理许可要求、设置身份验证和授权,以及设置部署工具所需的基础设施;
定制工具:此步骤涉及根据组织的需要定制工具。例如:配置工具以找出误检,将工具集成到构建或CI/CD环境中,创建用于跟踪扫描结果的指示板并生成自定义报告;
优先级和加载应用程序:扫描所有应用程序,如果有一个很长的应用程序列表,应该首先扫描高风险的应用程序。应用程序扫描应该每天或每月与发布周期同步。
分析扫描结果:对结果进行分类以消除假阳性,将已确定的问题集发送给开发人员并修补缺陷。
SAST工具重要的选择标准
1. 是否支持所使用的编程语言及操作系统
2. 可以检测到的漏洞类型(在OWASP 前十名中(还有更多?))
3. 有多准确?误报/误报率在多少?
4. 满足您使用的库/框架吗?
5. 是否支持跨类、跨函数的缺陷/漏洞检测?
6. 是否具备深度检测能力?
7. 可以集成到开发者的IDE中吗?
8. 设置/使用有多难?
9. 可以连续自动运行吗?
10. 能否根据实际情况进行定制化功能?(每个企业所需要的检测重点不同)
常见好用的SAST工具
以下是常用的SAST软件,认真做好检测可以确保Web应用程序免受网络攻击:
Checkmarx(以色列)
Wukong源代码检测(国产信创)
Coverity(美国)
Fortify(美国)
SAST工具的优点:
1.扩展性好,支持多语言多操作环境,可以在很多软件上运行
2.对于发现缓冲区溢出、跨站点脚本(XSS)、SQL注入、硬编码机密等具有重大影响的漏洞非常有用
3.通过突出显示源文件、行号等,为开发人员生成详细的输出报告,便于修改代码
4.在研发阶段早期发现并修复缺陷和安全漏洞,节省大量精力和财力
代码安全漏洞可能导致应用程序及其数据遭到破坏,甚至遭到网络犯罪分子勒索。美国国土资源局曾表示,90%的漏洞都是错误代码造成的。网络安全的本质就是软件安全、代码安全,大多数情况下这些漏洞都是人为原因造成的,因此在部署上线之前,将安全渗透在研发的各个阶段可以减少系统漏洞数量,降低网络安全风险。
在代码编写过程中,如果将问题发现和修复代码移至编码阶段可以为企业节省20%成本,而在产品发布后,修改缺陷成本则将增加五倍。这也是很多企业正在意识到的一点,因此更加愿意选择利用静态代码安全检测工具从源头减少bug的出现,减少修改错误的时间与成本。
参读链接:https://www.woocoom.com/b021.html?id=d8164398986042a79ba702258b3fbb24