白泽SAST团队:将LLM织入SAST程序分析流程的实践

AI 3周前 admin
32 0 0

SAST




在国内外市场,静态应用安全测试(SAST)已经取得了初步的成功,但随着DevSecOps、安全左移等安全理念的出现和普及,对SAST产品在效果效率、功能易用性上需求也在不断提高。 

白泽SAST团队:将LLM织入SAST程序分析流程的实践
白泽SAST团队:将LLM织入SAST程序分析流程的实践


静态程序分析

在漏洞治理中,静态应用安全测试(SAST)被视为至关重要的一环,白泽SAST团队专注于这个关键领域。随着大语言语言模型的兴起,本团队将其集成到SAST分析流程中,并对LLM和SAST的结合进行实践和评测,结果表明通过合理运用LLM分析能力可以有效提高漏洞检测能力和效率。

通过引入大语言模型的理解归纳能力到分析的各个环节,安全技术更具亲和力,能够助力不具备安全经验的普通开发者轻松发现、解决安全问题。 

QUESTION

DevOps鸿沟:漏洞误报无从改


ANSWER

“预警疲劳”

在传统的漏洞分析方法中,经常遇到一个普遍的问题:高误报率。这种情况下,验证漏洞的真实性就成了一项相当棘手的任务。特别是在软件供应链漏洞不断增加的情况下,研究人员一直在努力通过建立组件与漏洞之间的联系来管理这些漏洞。但遗憾的是,我们发现漏洞利用的具体信息经常并不十分清晰,这使得我们很难准确评估漏洞是否真的会被利用。

将这些挑战投射到实际工业场景中,我们会发现一系列问题:关联漏洞误报高、漏洞信息不清晰、测试人员预警频频、真正漏洞治理延后。这一系列问题严重影响了团队的工作效率和安全治理的进展,也就是所谓的“预警疲劳”

QUESTION

分析瓶颈:逻辑语义难理解,漏洞确认重人工


ANSWER

“语义无感”

业务逻辑漏洞的自动化检测一直是行业难题。传统的程序分析技术主要通过漏洞特征规则对代码进行分析,如污点传播技术用于检测SQL注入、系统命令执行等安全问题。然而,业务逻辑漏洞的检测需要理解大量业务信息和语义,如注释、文档含义、函数变量命名约定等。例如,水平权限漏洞需确认接口方法是否需要鉴权及鉴权是否正确。同时,污点分析存在理论瓶颈和误报漏报问题,需要大量人工二次确认。传统安全工作流程和漏洞扫描技术虽然发展迅速,但仍然劳动密集。SAST技术瓶颈在于难以理解逻辑语义,漏洞确认仍需大量人工

多元规则定义,跨越安全技术鸿沟


01

借助语言模型的理解转化能力,白泽SAST具有多元规则定义的特点,这意味着使用者可以以多种形式定义规则,从而方便那些不具备安全知识的人进行定制化的检测。在实践中,我们通过语言模型对开源组件文档进行规模化知识提取,形成包括入口发现、流分析、权限原则等在内的规则集,针对性提高0-Day漏洞发现能力。

多元规则定义的特点能够允许开发人员使用简单直观的界面或自然语言来定义规则,而无需深入了解安全技术的细节,提高了安全策略的可行性和执行效率,符合安全左移的原则。

白泽SAST团队:将LLM织入SAST程序分析流程的实践

LLM赋能全阶段,突破分析痼疾


02

SAST分析包括source/sink定义、控制流分析、数据流分析、漏洞确认等阶段。通过在各个任务阶段集成LLM,程序分析可以更具有泛化性,从而更好地应对数量日趋膨胀的各类开源组件。另外,我们利用AI-summary策略,进一步优化并提升对复杂程序逻辑进行细粒度分析的能力,使得发现“深层逻辑漏洞”成为可能。

在漏洞确认、复查等阶段,通过结合LLM,也能够输出更清晰明了的漏洞检出解释,帮助用户更轻松地排查和理解安全告警。

白泽SAST团队:将LLM织入SAST程序分析流程的实践


智能调度织入语言模型,释放分析潜力


03

语言模型的分析是知识型的,具备业务逻辑理解概括能力;SAST算法的分析是符号型的,严谨细致,能够分辨细粒度代码差异。为了最大化发挥两者优势,我们设计了一套智能调度算法来在分析运行时根据程序状态、分析局部结果、复杂度等多维因素调度语言模型与符号算法,用统一形式将LLM无缝织入分析流程,最大化释放语言模型的分析潜力。

通过LLM,将知识型的分析方法和思路应用于分析中,工具对代码理解从符号逻辑提升到语义层面,有助于减少误报从而降低人工开销。

白泽SAST团队:将LLM织入SAST程序分析流程的实践


应用




本研究团队在Tomcat、Dubbo、Elasticsearch等流行Java开源组件上对SAST工具进行了漏洞挖掘任务的实践,截止目前,该工具发现被确认漏洞100余个,被分配20+个独立CVE编号。

开源组件具有代码层次深、逻辑多样化的特点,LLM对代码的理解推理能力是我们检出漏洞的重要保障。比如,在Tomcat、Dubbo、SOFA RPC上发现诸如反序列化、信息窃取、数据注入、时序攻击等逻辑敏感型漏洞,它们大多涉及与业务逻辑紧密相关的代码语义,并隐藏在调用栈深层,这也是它们在流行组件中“潜伏已久”的原因。白泽SAST团队在对漏洞检出和解释信息的评测中发现,LLM在入口发现、代码摘要、Sink扩展、数据流复查等阶段均能发挥重要作用,如对这个漏洞的数据流事实进行修饰,从而能够发现该漏洞。



团队介绍

白泽SAST团队,主要研究方向围绕开源代码漏洞治理,基于程序分析技术进行漏洞挖掘、验证与修复等,在ACM CCS、IEEE Security&Privacy等网络安全领域顶会顶刊上发表论文10余篇,曾获2022年USENIX Security 杰出论文奖、2023年第二届中国研究生网络安全创新大赛漏洞挖掘赛道一等奖等。    


团队指导老师:张磊,https://zxlfd.github.io/

素材:白泽SAST团队

供稿:Amber、邹志豪、凌行之、陈欣雨、陈波妃

排版:孙福特

审核:张琬琪、洪赓、邬梦莹

复旦白泽战队

一个有情怀的安全团队

还没有关注复旦白泽战队?

公众号、知乎、微博搜索:复旦白泽战队也能找到我们哦~


原文始发于微信公众号(复旦白泽战队):白泽SAST团队:将LLM织入SAST程序分析流程的实践

版权声明:admin 发表于 2024年5月6日 下午7:08。
转载请注明:白泽SAST团队:将LLM织入SAST程序分析流程的实践 | CTF导航

相关文章