解决方案
静态分析面临典型的工具繁多问题:安全、质量和合规扫描器都能发现有用的问题,但各自使用不同的输出格式。要把它们汇总到一个工作流中,就需要定制适配器,而且会丢失上下文。
SARIF的巧妙之处在于把结果定义为一个可移植对象。OASIS标准规定,SARIF日志采用JSON格式,可以包含一次或多次分析运行的结果,并带有规则、工件、位置、消息、指纹和流数据。
GitHub让这一格式真正投入实际使用。其代码扫描文档允许团队上传在GitHub之外生成的SARIF,包括第三方工具和CI系统生成的文件,然后将结果作为仓库告警查看。这使SARIF从一种模式定义变成了扫描器的分发通道。
取得了什么成果
统一发现结果,而不是统一扫描器
为什么有效
JSON让工具和平台能够轻松生成、验证和存储该格式。
运行信息和工具元数据让一个文件能够保留哪个扫描器产生了哪条发现结果。
指纹和类别有助于平台在多次提交之间去重并跟踪告警。
GitHub的接收能力让工具供应商有了立即输出SARIF的直接理由。
可以借鉴什么
如果一种格式能够涵盖结果的生命周期,而不仅仅是第一条错误消息,它就能统一一个碎片化的工具市场。
后续发展
SARIF 2.1.0于2020年3月27日成为OASIS标准。GitHub代码扫描继续接受来自外部工具上传的SARIF文件,使该格式成为本地扫描器、CI系统和托管代码安全工作流之间的实用桥梁。
从这里,追溯依据
参考来源
- Static Analysis Results Interchange Format (SARIF) Version 2.1.0 OASIS Open · docs.oasis-open.org ·
- Uploading a SARIF file to GitHub GitHub Docs · docs.github.com