GitLab 中文
关注
GitLab 如何通过重构和格式化跟踪漏洞
安全扫描常因代码中的微小变更(如添加注释或重新格式化文件)而重复报告同一漏洞,导致审计工作徒劳无功,并削弱对扫描结果的信任。为应对这一问题,2022 年引入了高级漏洞跟踪机制,采用 Scope+Offset 指纹方法,通过最窄的包围作用域和行偏移量来识别发现项。然而,该方法仍存在局限性,特别是在处理非功能性变更(如添加注释或空行)时,这些变更可能导致偏移量变化,使跟踪器将同一漏洞识别为重复项。为此,开发了一种改进方法,在计算指纹时忽略非功能性代码,从而确保添加注释或重新格式化文件不再改变指纹。该归一化方法在涵盖多种编程语言的 439 个源代码文件的基准测试中进行了评估,实现了零重复,并将唯一指纹总数减少了 43%。相比之下,原始的 Scope+Offset 方法累计产生了 1,361 个重复指纹,较基线增长了 77%。归一化的 Scope+Offset 方法现已作为 GitLab 中的 scope_offset_compressed 跟踪算法发布,支持多种编程语言,并可与任意组合的 SAST 工具协同工作。题为"Vulnerability Tracking using Normalized Scope+Offset"的该研究方法将于 ASE 2026 Industry Showcase 上发表,其发现对提升安全扫描的准确性和效率具有重要意义。该方法的开发是多位研究人员协作的成果,包括 Julian Thome、Hua Yan、Lucas Charles、Craig Smith 和 Jason Leasure,他们为该研究和文章做出了贡献。