AI猎手:我们用大模型挖到了0day漏洞!【大模型应用实践系列三】
AI猎手:我们用大模型挖到了0day漏洞!【大模型应用实践系列三】
近日,安全研究团队基于大语言模型开发了一款自动化漏洞检测工具,并在GitHub热门开源项目中成功挖掘出多个0day漏洞。本文将详细介绍这一创新技术方案及其实战应用。
一、序章之《白帽寓言》
曾经,安全研究人员主要依赖传统的静态分析和动态分析方法来挖掘漏洞。然而,随着大语言模型的兴起,一种全新的漏洞检测方式应运而生。基于腾讯混元大模型,研究团队开发了一个自动化漏洞检测工具,并在多个热门开源项目中发现了10多个未披露的0day漏洞。
二、江湖秘闻
2024年11月,谷歌Project Zero团队宣布其基于大模型的漏洞挖掘智能体"Big Sleep"在SQLite数据库中发现了一个0day漏洞,这一突破性进展引发了安全界的广泛关注。受此启发,腾讯安全团队也基于混元大模型开发了一款针对Java项目的自动化漏洞检测工具,并在实战中取得了显著成效。
图1:谷歌Project Zero团队基于大模型技术的漏洞挖掘AI智能体架构图
三、神兵淬炼:大模型技术方案调研
传统的漏洞挖掘技术主要包括规则引擎静态分析、代码动态分析、机器学习驱动等方法。然而,这些方法在面对0day漏洞时往往力不从心。相比之下,基于大模型的漏洞分析能够通过语义理解进行更精准的判断。
图2:常见的漏洞挖掘技术及其优缺点分析
图3:大模型漏洞分析 vs 传统静态分析对比举例
四、试炼场:正式挖洞实战
研究团队设计了一套基于大模型的漏洞检测流程,主要包括四个步骤:寻找漏洞入口、初步漏洞标记、代码深入分析和输出漏洞报告。通过这套方案,研究团队在GitHub排名前500的主流Java开源项目中发现了11个高危0day漏洞。
图4:大模型漏洞挖掘方案示意图
4.1 AI漏洞检测方案设计
研究团队基于大模型能力,结合定制优化策略,设计了以下这套AI漏洞检测流程。只需四步即可检测项目代码漏洞!
图5 大模型漏洞挖掘方案示意图
第一步: 寻找漏洞入口
先对项目代码进行筛选(main方法/public方法/框架的入口方法),来明确存在漏洞的项目文件入口。当前主要通过正则找到存在远程攻击入口的文件。
第二步:根据入口,进行初步漏洞标记
为了进行漏洞的快速挖掘,避免问询资源的浪费, 通过调用大模型对代码入口文件进行初步的漏洞类型评估, 筛选出存在薄弱点的高危文件, 从而更聚焦在特定漏洞类型进行漏洞分析,提高准确性。
第三步:调用大模型进行代码深入分析
调用大模型进行多轮对话轮训,并根据轮训结果,结合上下文补充信息,逐步进行代码深入分析。
第四步:分析结束,输出漏洞报告
当出现以下几种情况的时候,工具会停止分析,并输出漏洞报告:
●分析深度超过某个阈值;
●大模型认为已经获得了漏洞点后返回结果;
●分析到未知的开源组件代码,并完成漏洞特征推断后结束对话并返回。
4.2 0day漏洞挖掘实战
方案确定后,研究团队选取了GitHub上收藏数量(即获得星标star数)排名前500的主流Java开源项目(尤其是Web应用项目,如Spring Boot类项目),并使用AI漏洞检测工具进行测试。最终捕获11个高危0day漏洞!这些0day漏洞一旦被黑客利用,其波及范围广,受损面必然是巨大的。
图6 在GitHub的Top热门项目中捕获的部分0day漏洞详情
下面重点介绍两个典型案例。
●某知名AI类应用产品漏洞
这个项目是某知名AI类应用产品(1w+收藏),AI自动化漏洞检测工具发现其存在xxe漏洞 (可通过注入恶意的xml格式数据从而进行攻击)。
图7 大模型针对某知名AI类应用产品0day漏洞的分析结果
研究团队针对该开源项目的漏洞特性,进行无害化漏洞验证,发现互联网上有数台与该漏洞相关的运行中设备。这批设备正遭受着高危安全风险威胁。
图8 当前互联网上正遭受该0day漏洞威胁的设备列表
也就是说,此时此刻如果是黑客拿到了这个0day漏洞,只需短短几秒钟,大批量设备的服务器权限就会被黑客攻破,直接造成入侵事件。
●某知名工具类产品漏洞
经验证,这个项目是某知名工具类产品,在GitHub社区有4w+的收藏量。研究团队通过AI自动化漏洞检测工具,发现该项目存在可回显SSRF漏洞。只要输入恶意地址,把含有漏洞的机器将作为跳板,就可以直接攻击内网主机,最终获取内部系统的资源信息、本地文件等一系列敏感文件。据不完全统计,有数万台主机面临着该风险。
图9 大模型针对某知名工具类产品0day漏洞的分析结果
针对该漏洞,研究团队进行了一次“敏感文件窃取”模拟实验。
图10 针对某知名工具类产品0day漏洞的攻击手法演示
具体攻击手法如下:
(1)某使用了该开源项目的文档在线转换工具平台的正常服务模式如下:用户可通过提交一个互联网链接至该平台,该平台根据用户提供的链接去抓取对应网页内容,并将内容转换为文档格式后,提供给用户下载。
(2)假如该平台背后的主机同时在本地存放了一些敏感文件,且可在平台的内网通过内网网址访问对应文件信息;
(3)黑客通过某些手段探测到这些敏感文件的内网地址后,通过在该平台输入对应内网链接 ,引导漏洞主机对该链接进行请求访问,并转换为文档文件供用户下载;
(4)由于对应开源工具的漏洞特性,黑客绕过了网络的限制,成功利用该漏洞作为跳板进行远程窃取;
(5)最终通过下载该文档文件进行透传,成功拿到了这些敏感文件中的信息。
图11 针对某知名工具类产品0day漏洞模拟攻击结果演示
这次实战,成功验证了AI赋能的代码漏洞检测工具在真实复杂代码场景下挖掘漏洞的确可行。
五、思考与展望
本次实战已初步验证AI自动化挖掘0day漏洞可行。但大模型在自动化漏洞挖掘的落地过程中,还有很多问题值得我们深入探索和解决。譬如:
●Token限制和遍历深度问题
当前版本设计中,可通过大模型的java语法分析能力有效摘取上下文,从而应对项目级代码漏洞检测对于token数约束的挑战。即便如此,在成熟的java项目体系中,也有不少漏洞具备多文件、多层级函数调用的特点。由于token数约束问题始终客观存在,导致该工具只能在有限的深度阈值内进行漏洞检测,从而可能遗漏部分高价值的漏洞。
●大模型普遍存在的幻觉问题
大模型的泛化能力带来了发现未知组件漏洞的好处。与此同时,大模型的幻觉问题也会导致误判。比如,将正常的函数调用误认为是漏洞点,加大了漏洞验证的成本。此外,大模型可能输出自我构造的上下文请求,导致语法分析出错,从而导致漏洞报告准确性受影响,进而造成一些误报。
下个版本,研究团队将持续优化上述问题,提供更丰富的功能,并在更多安全应用场景中推动落地。