爱AI工具库,国内AIGC产品探索者分享平台
注册
99%工具无需特殊网络!
当前位置:首页

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

爱AI工具库 2024-11-02
24

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 NaptimeNaptime 采用了一种专门的架构来增强大语言模型进行漏洞研究的能力,其核心是 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   struct sqlite3_index_constraint {
7477      int iColumn              /* Column constrained.  -1 for ROWID */
7478      unsigned char op         /* Constraint operator */
7479      unsigned char usable     /* True if this constraint is usable */
7480      int iTermOffset          /* Used internally – xBestIndex should ignore */
7481   } *aConstraint            /* Table of WHERE clause constraints */这种模式产生了一个边缘案例,所有使用该字段的代码都需要正确处理这种情况,因为按照常规预期,有效的列索引值应该是非负的。seriesBestIndex 函数在处理这个 edge case 时存在缺陷,当处理包含 rowid 列约束的查询时,导致写入了带有负索引的堆栈缓冲区。在研究者提供给 AI Agent 的编译版本中,debug assertion 功能已启用,这种异常情况会被第 706 行的断言检查所捕获:619 static int seriesBestIndex(
620 sqlite3_vtab *pVTab,
621 sqlite3_index_info *pIdxInfo
622 ){

630 int aIdx[7]; /* Constraints on start, stop, step, LIMIT, OFFSET,
631 ** and value. aIdx[5] covers value=, value>=, and
632 ** value>, aIdx[6] covers valueiColumn – SERIES_COLUMN_START;
706 assert( iCol>=0 && iCol

来源:IT之家

相关推荐

暂无数据

评论 ( 0 )

aiaitool@163.com

打开微信扫一扫

qrcode

回顶部

×

我的收藏

请先登录登录

请先登录登录