您的位置:首页 > 互联网

谷歌Agent首次发现真实世界代码漏洞!抢救全球数亿设备,或挽回数十亿美元损失?

发布时间:2024-11-04 10:34:37  来源:互联网     背景:

声明:本文来自于微信公众号 新智元,作者:新智元,授权转载发布。

iphone 13立减800

【新智元导读】AI首次发现真实世界中的重大安全漏洞?SQLite中的一个漏洞,幸运地被谷歌研究者的AI Agent发现了,修复后并未造成任何损失。莫非AI再进化一番,微软的全球蓝屏事故就可以永久避免了?这个可能性令人激动不已。

LLM居然在真实世界的代码中,发现了一个漏洞?

想象一下,AI正在默默地守护着我们日常使用的软件。忽然,它发现了一个你我可能从未察觉的安全隐患,并且悄无声息地把它修复了!

就在刚刚,谷歌的Big Sleep项目揭示了一个惊人的成果:一个真实世界的安全漏洞,出现在全球广泛使用的SQLite数据库中,而这个漏洞竟然被AI成功识别出来了?在真实世界的危机扩散之前,它及时挽回了局面。

隶属于谷歌Project Zero和Google DeepMind的团队声称,这是AI Agent在广泛使用的现实软件中,发现未知可利用内存安全问题的第一个公开示例。

要知道,这不仅仅是一个崩溃的测试用例,它是AI首次在真实世界的软件中找到未知的、可利用的内存漏洞。

此前,网络安全巨头CrowdStrike闹出的一个由C-00000291*.sys配置文件触发的系统逻辑错误,瞬间就破坏掉全世界约10亿台计算机,直接导致微软蓝屏、全球停摆。

如果未来某一天,AI能帮我们解决所有技术领域的单点瞬时故障,不知会帮人类节省下多少财富?

用LLM在真实世界中捉虫

随着LLM代码理解和一般推理能力的提高,谷歌研究者一直在探索这些模型如何在识别和演示安全漏洞时,重新人类安全研究人员的方法。

在《Project Naptime:评估大型语言模型的攻防能力》中,Big Sleep团队介绍了一个利用LLM辅助的漏洞研究框架,并通过在Meta的CyberSecEval2基准测试上提升了最新的性能,展示了这种方法的潜力。

从那时起,Naptime就变成Big Sleep,成为了Google Project Zero与Google DeepMind的合作项目。

就在刚刚,谷歌研究者激动地表示,Big Sleep Agent发现了首个真实世界漏洞:一个存在于SQLite中的可利用栈缓冲区下溢漏洞。

SQLite是一款被广泛使用的开源数据库引擎。

在十月初,Agent发现了了这个漏洞,于是谷歌研究者立刻将其报告给了开发者,他们在同一天进行了修复。

幸运的是,AI在这个问题出现在官方发布版本之前,就发现了它,因此SQLite的用户未受影响。

要知道,SQLite作为轻量级嵌入式数据库,广泛应用于智能手机、浏览器、嵌入式系统、IoT设备等多种环境,涵盖了许多用户和敏感信息。

如果攻击者利用该漏洞进行数据泄露、系统入侵或破坏,潜在损失金额可能少则几百万,多则数十亿美元!

谷歌研究者表示,这是AI Agent首次在广泛使用的真实世界软件中发现未知的、可利用的内存安全问题的公开案例。

之所以会有这次尝试,是因为今年早些时候,在DARPA的AIxCC活动中,亚特兰大团队在SQLite中发现了一个空指针取消引用的漏洞,这就给了谷歌研究者启发——

是否可以使用SQLite进行测试,看看能否找到更严重的漏洞呢?

果然,AI Agent真的找出了一个漏洞。

这项工作,无疑具有巨大的潜力。

在软件尚未发布前就发现漏洞,就意味着攻击者没有机会利用:漏洞在他们有机会使用之前,就已被修复。

虽然模糊测试也能带来显著的帮助,但我们更需要的是一种方法,帮助防御者找到那些很难通过模糊测试发现的漏洞。

现在,AI有望缩小这一差距!

谷歌研究者表示,这是一条有希望的道路,能为防御者带来不对称的优势。

因为这个漏洞相当有趣,而且SQLite的现有测试基础设施(包括OSS-Fuzz和项目自身的测试)并没有发现它,因此谷歌研究者进行了深入调查。

方法架构

Naptime和Big Sleep项目的关键驱动因素,就是已经发现并修补的漏洞变种,仍在现实中不断被发现。

显而易见,fuzzing(模糊测试)并不能成功捕获此类变种漏洞,而对攻击者而言,手动变种分析的方法仍然性价比很高。

谷歌研究者认为,相比更为宽泛的开放式漏洞研究问题,这种变种分析任务更适合当前的LLM。

快递强制保价

通过提供一个具体的起点——比如此前修复的漏洞的详细信息——我们就可以降低漏洞研究中的不确定性, 并且还能从一个明确的、有理论支撑的假设出发:这里曾经存在一个漏洞,很可能在某处还存在类似的问题。

目前,他们的项目仍处于研究阶段,正在使用带有已知漏洞的小型程序来评估研究进展。

最近,他们决定通过在SQLite上开展首次大规模的真实环境变种分析实验,来测试他们的模型和工具链。

他们收集了SQLite repository近期的一系列提交,手动筛除了无关紧要的改动和纯文档更新。

随后,他们调整了prompt,为AI Agent同时提供了提交信息和代码变更,并要求它审查当前代码库(在HEAD位置)中可能仍未修复的相关问题。

Project Naptime

Naptime采用了一种专门的架构来增强大语言模型进行漏洞研究的能力,其核心是AI Agent与目标代码库之间的交互。

系统架构

为了让AI Agent可以模仿人类安全研究员的工作流程,研究团队开发了一系列专用的工具:

  • 代码浏览工具(Code Browser)使AI Agent能够浏览目标代码库,这与工程师使用Chromium Code Search的方式类似。它提供了查看特定实体(如函数、变量等)源代码的功能,并能识别函数或实体被引用的位置。

  • Python工具让AI Agent能够在隔离的沙盒(Sandbox)环境中运行Python脚本,用于执行中间计算并生成精确而复杂的目标程序输入。

  • 调试器工具(Debugger)为AI Agent提供了程序交互能力,可以观察程序在不同输入下的行为表现。它支持断点设置并能在断点处评估表达式,从而实现动态分析。

  • 报告工具(Reporter)为AI Agent提供了一个结构化的进度通报机制。AI Agent可以发送任务完成信号,触发控制器验证是否达成成功条件(通常表现为程序崩溃)。当无法取得进一步进展时,它还允许AI Agent主动中止任务,避免陷入停滞状态。

发现漏洞

这个漏洞非常有趣,比如在一个通常为索引类型的字段iColumn中,使用了一个特殊的哨兵值-1:

7476:structsqlite3_index_constraint{7477:intiColumn;/*Columnconstrained.-1forROWID*/7478:unsignedcharop;/*Constraintoperator*/7479:unsignedcharusable;/*Trueifthisconstraintisusable*/7480:intiTermOffset;/*Usedinternally-xBestIndexshouldignore*/7481:}*aConstraint;/*TableofWHEREclauseconstraints*/

这种模式产生了一个边缘案例,所有使用该字段的代码都需要正确处理这种情况,因为按照常规预期,有效的列索引值应该是非负的。

seriesBestIndex函数在处理这个edge case时存在缺陷,当处理包含rowid列约束的查询时,导致写入了带有负索引的堆栈缓冲区。

在研究者提供给AI Agent的编译版本中,debug assertion功能已启用,这种异常情况会被第706行的断言检查所捕获:

619staticintseriesBestIndex(620sqlite3_vtab*pVTab,621sqlite3_index_info*pIdxInfo622){...630intaIdx[7];/*Constraintsonstart,stop,step,LIMIT,OFFSET,631**andvalue.aIdx[5]coversvalue=,value>=,and632**value>,aIdx[6]coversvalue<=andvalue<*/633conststructsqlite3_index_constraint*pConstraint;...642for(i=0;inConstraint;i++,pConstraint++){643intiCol;/*0forstart,1forstop,2forstep*/644intiMask;/*bitmaskforthosecolumn*/645intop=pConstraint->op;...705iCol=pConstraint->iColumn-SERIES_COLUMN_START;706assert(iCol>=0&&iCol<=2);707iMask=1<usable==0){714unusableMask|=iMask;715continue;716}elseif(op==SQLITE_INDEX_CONSTRAINT_EQ){717idxNum|=iMask;718aIdx[iCol]=i;719}720}

然而,在发布版本中,这个断言检查并不存在。

在研究者的测试环境中(具体表现会因编译器和优化级别而异),第718行的后续写入操作会越界写入aIdx缓冲区下方的内存区域,导致pConstraint指针的最低有效32位被破坏。

iphone14系列最新官方消息

当这个被破坏的指针在循环的下一次迭代中被取消引用时,就会产生潜在的可利用漏洞条件。

不过,即使有了这样的漏洞说明,对于人类研究员来说,要精确理解如何触发这个漏洞仍然不易。

虽然针对ROWID列设置约束显然是个不错的切入点,但要完全理解,还需要深入研读代码。

而 AI 智能体似乎已经掌握了比人类研究员更多的SQLite相关知识,这使它能够更高效地定位问题!

这种情况的一个典型例子,就是LLM在生成测试用例时会直接使用generate_series虚拟表。

(虽然研究者也观察到模型会先研究可用的虚拟表的情况,但很明显,它能够在这里直接运用已有的知识)。

执行过程重点分析

在这次基于Gemini1.5Pro的成功测试中,seed commit为 [1976c3f7],这是一个规模较大、复杂的代码变更。

而研究者的AI Agent发现的漏洞,与该seed commit中的变更仅存在松散关联——这种情况在手动变种分析中较为常见,因为在理解代码库中的某个漏洞时,研究人员往往会由此发现其他潜在问题。

以下是关键节点摘要,其中,所有ASSISTANT块中的内容均直接来自AI Agent。

AI Agent对差异中的变化进行了合理的评估,并以此作为研究的切入点:

ASSISTANT

通过引入termFromWhereClause函数,CL改进了在虚拟表查询中处理OR分支共享的WHERE条件的方式。该函数在考虑嵌套子句的情况下,从WhereClause中检索特定的条件。

在此更改之前,由于条件索引映射不正确,共享的条件可能未被正确处理,可能导致低效的查询计划或错误的结果。

最可能出现的问题涉及在allocateIndexInfo和whereLoopAddVirtualOne函数中不正确地处理WHERE子句约束,其中 CL 修改了如何使用新的辅助函数来处理约束偏移量。

我将首先检查allocateIndexInfo函数。

在经过数个步骤探索相关代码后,AI Agent形成了一个更明确的测试假设——它试图通过运行patch中测试用例的修改版本来验证这个假设,但未能成功。

原因在于patch中的测试用例依赖于一个在当前配置环境中未启用的扩展模块:

TOOL(debugger_run )

程序在未崩溃或命中断点的情况下退出。退出代码为1。

STDERR输出为:

Runtime error near line2: no such module: tcl

Parse error near line3: no such table: x1

ASSISTANT

程序终止是因为TCL模块不可用。测试依赖于TCL虚拟表模块,需要在编译SQLite时启用该模块。提供的程序的输入基于bestindexC.test文件,它使用TCL模块来测试虚拟表的最佳索引选择。

为了解决这个问题,需要更改程序输入,使用不需要TCL模块的其他虚拟表。然而,该漏洞与虚拟表的查询计划有关,所以我们仍然需要一个虚拟表来触发此问题。

我将使用code_browser_source工具来检索SQLite中的内置虚拟表示例。然后,我将调整输入,使用其中一个虚拟表,并重新在whereLoopAddVirtualOne中设置断点。

AI Agent很好地应对了这个问题,准确识别出了修复测试用例所需的各个步骤,并在后续几个步骤中成功收集到了所有构建测试用例所需的信息,最终实现了触达whereLoopAddVirtualOne的目标:

ASSISTANT

sqlite3_create_module函数用于注册虚拟表模块。shell.c文件包含了多个这样的实例,包括generate_series、fsdir、completion和expert模块。其中json表的实现也很值得关注。

我首先关注的是generate_series,然后构造出一个使用该模块的查询,从而触发错误的约束处理。

需要注意的是,在最初发现和复现该漏洞时,AI Agent对于它试图触发的不正确约束处理的描述相当模糊。

在这种情况下,完整的执行轨迹读起来颇似人类研究员的思维过程——从一个想法开始,在调查过程中产生其他几个想法,最终生成了一个可以复现略有不同漏洞的测试用例。

在本例中,当whereLoopAddVirtualOne在generate_series表上被调用时,执行流程最终会进入seriesBestIndex,在那里约束确实被错误处理了。

特别有趣的是,一旦程序崩溃,模型会在解释问题时表现得更为出色——在生成根因分析(root-cause analysis)和完整崩溃报告时,我们可以看到AI Agent清晰地构造了一个测试用例来触发特定的已识别边缘案例:

ASSISTANT

相关的字段是sqlite3_index_constraint结构体中的iColumn。该字段表示约束的列编号。要导致断言失败,我们需要对索引大于3或小于-1的列设置约束。

让我们构建一个涉及这些列约束的SQL查询。generate_series表有名为value、start、step和stop的列。它们的索引是:

- value:0

- start:1

- step:2

- stop:3

要触发此漏洞,我们可以对ROWID施加一个约束,并对ROWID的约束使用iColumn = -1。

示例查询如下:

SELECT * FROM generate_series(1,10,1) WHERE ROWID =1;

该查询将导致seriesBestIndex函数崩溃。

最终,得到了一个清晰准确的问题总结,几乎可以直接用于漏洞报告!

TOOL(debugger_run)

程序崩溃:SIGABRT at :0

STDERR输出为:

sqlite3: src/shell.c:6816: int seriesBestIndex(sqlite3_vtab *, sqlite3_index_info *): Assertion `iCol>=0&& iCol<=2' failed.

ASSISTANT(report_success)

程序在执行SELECT * FROM generate_series(1,10,1) WHERE ROWID =1;时因seriesBestIndex函数中的断言失败而崩溃。

断言assert(iCol>=0&& iCol<=2)失败的原因是sqlite3_index_info结构体中的iColumn字段可能包含超出列索引有效范围的值,例如在约束涉及ROWID时为-1。

这导致iCol被计算为-2,从而导致断言失败。

关于模糊测试

一个显而易见的问题是:为什么传统的模糊测试没有更早发现这个漏洞?

答案就在模糊测试工具链的配置上。

OSS-Fuzz使用的工具并没有启用generate_series扩展,而替代的fuzzingshell.c工具包含的是旧版本的seriesBestIndex函数,未受此漏洞影响。

虽然SQLite AFL仓库中包含一个针对研究者提供给Big Sleep智能体的、相同CLI二进制文件的模糊测试配置,但似乎并未被广泛使用。

这个漏洞是否真的容易发现?

为此,研究者尝试通过模糊测试重新发现它。

他们遵循SQLite文档中的模糊测试说明,并使用CLI目标。在启动AFL运行之前,他们还验证了模糊测试语料库中包含所需的generate_series和rowid关键字。

然而,经过150个CPU小时的模糊测试,问题仍未被发现。

随后,他们尝试通过将必要的关键字添加到AFL的SQL字典中,来简化模糊测试的任务。

然而,似乎只有当语料库包含与导致崩溃的输入非常接近的示例时,漏洞才能被快速发现,因为代码覆盖率对这个特定问题并不是可靠的指标。

诚然,AFL并不是针对像SQL这种基于文本的格式最适合的工具,大多数输入在语法上无效,会被解析器拒绝。

然而,如果将这一结果与Michal Zalewski在2015年关于模糊测试SQLite的博客文章进行比较,会发现十分有趣的事。

那时,AFL在发现SQLite漏洞方面相当有效;经过多年的模糊测试,该工具似乎已经达到自然的饱和点。

虽然研究者迄今为止的结果与AFL发布时带来的显著效果相比显得微不足道,但它有自己的优势——有概率能够有效地发现一组不同的漏洞。

结论

对于团队来说,这个项目无疑成功了。

在广泛使用且模糊化的开源项目中找到漏洞,非常一个令人兴奋!

这也就意味着:当提供正确的工具时,当前的LLMs可以进行漏洞研究。

不过,研究者想重申,这些都是高度实验性的结果。

Big Sleep 团队表示:目前,在发现漏洞方面,针对特定目标的模糊器可能至少同样有效。

研究者希望,未来这项工作将为防御者带来显著优势——

不仅有可能找到导致崩溃的测试用例,还能提供高质量的根本原因分析,使得问题的分类和修复变得更便宜且更有效。

谷歌研究者表示,会继续分享自己的研究成果,尽可能缩小公共技术前沿和私有技术前沿之间的差距。

Big Sleep团队也会将继续努力,推进零日计划的使命,让0-day变得更加困难。

团队介绍

Dan Zheng

团队中唯一的华人Dan Zheng是谷歌DeepMind的研究工程师,从事代码和软件工程的机器学习,以及编程语言的研究。

此前,他曾参与Swift for TensorFlow的工作,专注于Swift中的可微分编程。

他在普渡大学获得了计算机科学专业的学士学位。毕业后,他做了多年的学生研究员,期间研究成果颇丰。

参考资料:

https://googleprojectzero.blogspot.com/2024/10/from-naptime-to-big-sleep.html


返回网站首页

本文评论
新浪微博公司注册地_新浪微博已注册境内外独立公司 分拆上市前奏
  6月13日凌晨消息,网易科技上周独家报道了《曹国伟年内将清空MBO股票或为认购微博股份》,关于新浪微博的未来,网易科技又获悉,新浪分拆微博上市已经箭在弦上:除了已在海外及...
日期:07-30
苹果将在照片应用中添加AI图片擦除功能 将在WWDC2024上公布上线时间_iphone照片涂鸦消除
5月8日 消息:据悉,苹果正在测试一个增强版的“照片”应用程序,该程序将利用生成式人工智能技术来编辑图片。在macOS15的预发布版本中,这一新功能被称为“Clean Up”,即 AI 图片...
日期:05-08
填补线上空白,“DIC线上展”打造显示产业合作新入口
  疫情虽然暂时抑制线下经济的发展速度,但是给在线经济带来了前所未有的市场机遇,加速了在线办公、在线教育、云展会等在线经济形式的蓬勃发展。为了适应当前云展会的市场...
日期:07-14
《双子杀手》之后, CINITY电影技术引领中国院线行业新态势_双子杀手专业影评
  伴随着李安导演《双子杀手》的上映,全球唯一能够放映4K、3D、120帧版本影片的影院系统CINITY也进入大众的视线。CINITY影厅融合了4K、3D、高亮度、高帧率、高动态范围、...
日期:05-03
千万级网红"听泉鉴宝"停播内背后:供货商被列入异常经营名单_《听泉》
网红听泉鉴宝遭质疑,学历和藏品成焦点 继知名网红后,拥有超过 2500 万粉丝的抖音博主听泉鉴宝也引发争议,其学历真实性和藏品问题受到关注。目前,听泉鉴宝及其相关账号已删...
日期:10-26
中兴电信版路由器「华为、中兴入围中国电信CN2-DCI网扩容业务路由器(网PE)集采」
2023/5/19 17:19 华为、中兴入围中国电信CN2-DCI网扩容业务路由器(网PE)集采  焦焦 C114讯 5月19日消息(焦焦)从中国电信官网获悉,中国电信今日公示了2022年CN2-DCI网络扩容...
日期:05-26
2023年首批安卓好评榜出炉:华为成第一 小米最多「下半年安卓旗舰」
近日,安兔兔公布了2023年1月份安卓手机的好评榜,其中华为nova10 Pro竟然成为榜单第一,而小米则一骑绝尘有4款产品上榜。yoga surface 对比Intel core i9 11900k的最高睿频在排...
日期:02-03
2021年奇瑞9月销量「出口占比近1/2!奇瑞9月销量24.5万辆:同比增长28.6%」
快科技10月1日消息,奇瑞控股集团在2024年9月的销量表现强劲,共售出244,534辆汽车,同比增长28.6%。其中,出口销量达到109,048辆,同比增长20.6%,而新能源车型销量为58,941辆,同比大幅...
日期:10-02
AI说唱“入侵”影视号:单条视频获赞200万,月涨粉50万_ai说唱歌手
声明:本文来自于微信公众号 新榜(ID:newrankcn),作者:松露、阿虎,授权转载发布。AI正在“入侵”影视号。手里翻找冻鱼 精心的布局老漠却不言语 脸上带笑意冻鱼抓在手里 被它当成...
日期:03-06
最快9月12发!印度工厂开始组装iPhone 15:苹果欲让印度最大手机出口国
快科技8月21日消息,据外媒报道称,全球最大的电子产品代工商鸿海集团设在印度的工厂已经开始组装苹果公司即将于9月(据说是9月12日)正式发布的最新款智能手机iPhone 15。报道中提...
日期:08-21
京东3438亿「京东618发布“35711”梦想:打造3家万亿收入公司 创造100万就业」
快科技6月18日消息,在618这个重要日子,京东公司发布了名为《凝心聚力迈向35711”梦想》全员信,提出了未来20年的35711”梦想,其中要打造3家万亿收入的公司,还要创造100万就业。京...
日期:06-19
b站100件年轻人必备产品「B站引领年轻世代AI内容潮流-哔哩哔哩打造AI心智最强社区」
【】在2024年中国国际智能传播论坛上,哔哩哔哩(B站)董事长兼CEO陈睿分享了一个引人注目的信息:B站已经成为中国AI心智最强的社区。这一表述不仅体现了B站在AI领域的深耕细作,也彰...
日期:09-28
苹果宣布推出iPhone 15系列手机_苹果iphone15什么时候上市
财联社9月13日电,苹果宣布推出iPhone 15系列手机。富途证券 esop系统互联网加线上线下...
日期:09-13
周一Facebook正式推出iPad平板电脑应用_国内ipad上facebook
  10月11日消息,据国外媒体报道,周一,Facebook正式推出了iPad平板电脑应用,这意味这着Facebook加入了最畅销的平板电脑市场竞争中。   Facebook称,iPad应用将准许用户采用全...
日期:07-23
人人副业搞钱真相:当导师“卖铲子”月入10万_人人赚兼职
声明:本文来自于微信公众号 Tech星球(ID:tech618),作者:陈桥辉,授权转载发布。元宇宙、AI、短剧风口的爆火,涌现出了一批月入过万,甚至百万的暴富神话,而围绕这些商机,不少衍生出来...
日期:07-04
直击工博会 | 万物集与四大供应商强强联手,开启战略合作新纪元!
9 月 24 日,第 24 届中国国际工业博览会在国家会展中心(上海)开幕。本届工博会设置数控机床与金属加工展、工业自动化展、节能与工业配套展、新一代信息技术与应用展等 9 大专...
日期:10-09
但仍有超四成无计划 调查显示日本近1/4企业已在业务中使用AI
IT之家 7 月 20 日消息,当地时间 18 日,路透社、日经研究公司(Nikkei Research)共同发布了一项调查,结果显示,在接受调查的 506 家企业之中,有近 1/4 的企业已在其业务中采用了人工...
日期:07-20
微信下架重生、觉醒类多部违规微短剧:不良导向、未备案等
快科技10月13日消息,日前,微信珊瑚安全公众号发布10月违规微短剧类小程序的处置公告,多部微短剧、侵权小程序被下架。微信方面表示,近期平台通过巡查审核发现,部分微短剧类小程序...
日期:10-13
锐龙7000御用平台 微星4款X670主板开卖:顶配8999元「amd x670主板」
AMD昨晚发布了锐龙7000处理器,这一代不仅升级了5nm Zen4架构,还带来了全新的AM5平台及600系芯片组,今晚高端的X670系列也上市了,微星推出了4款X670系列主板,其中最豪华的MEG X670...
日期:10-04
一年巡礼 | 联通智慧医疗军团:逐梦健康中国 做数字健康融合创新领跑者
一年巡礼 | 联通智慧医疗军团:逐梦健康中国 做数字健康融合创新领跑者 通信产业网|2023-07-18 09:53:58作者:崔亮亮 徐鹏 梁思颖来源:通信产业网【通信产业网讯】近年来,国家大...
日期:07-18