安全是一个持续的过程,忽视软件代码自身的安全性,仅依靠外围的防护、问题产生后的修补等方法,恐怕只会造成更多的安全泄露或系统受损,起到的效果也是舍本逐末、事半倍功。
前言
前几天,黑客团伙LAPSUS$ 与芯片行业大佬(英伟达NVIDIA)一番较量后,该公司高达1TB的机密文件遭泄露,包含 40 系显卡及后续产品计划、禁止挖矿限制、DLSS 源代码...
LAPSUS$ 并不是突然出现的黑客组织,他们曾于去年 12 月袭击了巴西卫生部,窃取了 50 TB 的数据,包括公民的疫苗接种信息。当时该团伙的目标是葡萄牙媒体集团 Impresa、南美电信提供商 Claro 和 Embratel。
虽然暂不清楚该公司是哪个环节出现了漏洞被攻击,但从全球看,政府到机构、公司到个人,各种泄露事件层出不穷,敏感信息遭泄露、系统受损;损失财产甚至人身安全受到危害。
安全事件频繁发生,越来越多的用户希望能识别应用中的漏洞,或在编译代码之前扫描应用,提前降低风险。
什么是SAST
静态应用安全测试也称静态分析,是一种测试方法,通过分析源代码来发现容易让组织的应用受到攻击的安全漏洞。SAST是在编译代码之前扫描应用,所以也被称为白盒测试。
将静态分析结果集成到整个软件开发SDLC的全过程,目的是大幅提高所开发代码的整体质量。
SAST解决哪些问题?
SAST是在软件开发生命周期(SDLC)的早期阶段进行:
1、初始阶段识别漏洞、快速解决问题,并且不会破坏构建成果或将漏洞传递到最终应用版本。
SAST在测试时不需要应用运行,可以在不执行代码的情况下进行测试。
2、可以100%分析代码库,迅速精准。
几分钟即可扫描数百万行代码。自动识别关键漏洞,如缓冲区溢出、SQL注入、跨站点脚本等。
3、可以在开发人员编码时提供实施反馈,在代码传递到SDLC下一阶段前解决问题。
4、提供从污染源到语句执行处的图形介绍,无需深奥的安全领域专业知识,轻松查看代码。
5、可以创建个性化需要的自定义报告,离线时也可使用操作面板进行跟踪。
PS:需要注意的是,必须定期在应用上运行SAST工具
如:A、每天 / 月的构建工作中; B、每次登记代码时或发布代码期间
有效运行SAST的关键步骤
对于使用不同语言、框架和平台构建了大量应用的组织/团队,需要6个步骤来执行SAST。
确定最终工具
选择一个静态分析工具,对所用的编程语言写入的应用执行代码审查。前提是:要事先了解这款工具是否能理解即将运行的软件使用的基础框架。
创建扫描基础架构并部署工具
这一步之前,需要了解要处理的许可要求、设置访问控制和授权,也要事先获得部署该工具所需的资源,如服务器和数据库。
自定义工具
微调工具,适应自己的一些特殊要求。
如:通过配置,减少误报或能通过编写新规则或更新现有规则来查找其他安全漏洞。
将工具集成到构建环境中,创建用于跟踪扫描结果的控制面板,完成自定义报告的构建。
执行应用优先排序和载入
工具准备好后,将应用载入系统。如果有大量应用,要先扫描高风险应用。
最后,所有的应用都应该定期载入和扫描,并且将应用扫描与发布周期、构建或代码提交实现同步。
分析扫描结果
对扫描结果分类,移除误报条目。如果形成了问题集,也要跟踪问题集并及时、适当地修复。
提供治理和培训
适当的培训和对流程的管理,可以保证开发团队正确高效地使用了扫描工具。SDLC中要显示软件安全接触点,应用开发和部署的流程应当要纳入SAST测试。
执行SAST的工具类型
Synopsys
目前可提供最全面的解决方案,在SDLC和供应链中都可进行安全和质量的集成。
Coverity
特点:
编写代码时查找关键缺陷和安全漏洞。
覆盖几乎全部路径,测试每行代码
容纳庞大人数的开发人员,可分析超1亿行代码
避免浪费时间处理误报,基于对源代码和基础框架的分析
可与支持开发过程的关键工具和系统快速集成
IDE(集成开发环境)的SAST(Code Sight)
一款以开发人员为中心的实时SAST工具。
特点:开发人员编码期间扫描可识别漏洞,并提供补救指导。
目前,国内使用SAST静态应用安全检测系统的厂商,有开源网安、酷德啄木鸟、泛联新安、绿盟科技等,其中有些甚至拥有完全自主知识产权。