QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

全球超万亿使用量的热门数据库,首次被大模型揪出了严重漏洞

  • 2024-11-07
    北京
  • 本文字数:2477 字

    阅读完需:约 8 分钟

全球超万亿使用量的热门数据库,首次被大模型揪出了严重漏洞

谷歌的研究人员日前声称,他们首次利用大语言模型发现了一个重要漏洞。


在一篇博客文章中,谷歌表示,他们相信这是 AI agent 在广泛使用的现实软件中发现此前未知的、可利用的内存安全问题的首个公开案例。具体来说,它在 SQLite 中发现了一个可被利用的堆栈缓冲区下溢漏洞。

这个漏洞在 10 月就被谷歌报告给 SQLite 开发团队,后者在同一天已经修复了它。由于漏洞在官方发布之前就被消除了,因此并没有影响到 SQLite 的用户。

利用大模型发现漏洞:或致程序崩溃甚至执行任意代码

这款基于大语言模型的漏洞挖掘 AI agent 名为“Big Sleep”,是谷歌的 Project Zero 和 DeepMind 合作的成果。据称,它是今年 6 月宣布的早期项目“Project Naptime”的延伸。


谷歌指出,在 8 月份的 DEFCON 安全会议上,负责创建 AI 辅助漏洞研究工具的网络安全研究人员在 SQLite 中发现了另一个问题,这激发了他们的团队去尝试看能否找到更严重的漏洞。


SQLite是一款开源的数据库引擎,堆栈缓冲区下溢漏洞可能允许攻击者导致程序崩溃,甚至执行任意代码。进一步地说,崩溃或代码执行会发生在 SQLite 可执行文件(而非库)中,原因是在代码的某个地方,特殊值 -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 未能正确处理这个边缘情况,导致在处理对 rowid 列有约束的查询时,将负索引写入栈缓冲区。在团队提供给 agent 的构建中,启用了调试断言,这个条件在第 706 行的断言中得到了检查:

619 static int seriesBestIndex(620   sqlite3_vtab *pVTab,621   sqlite3_index_info *pIdxInfo622 ){...630   int aIdx[7];           /* Constraints on start, stop, step, LIMIT, OFFSET,631                          ** and value.  aIdx[5] covers value=, value>=, and632                          ** value>,  aIdx[6] covers value<= and value< */633   const struct sqlite3_index_constraint *pConstraint;...642   for(i=0; i<pIdxInfo->nConstraint; i++, pConstraint++){643     int iCol;    /* 0 for start, 1 for stop, 2 for step */644     int iMask;   /* bitmask for those column */645     int op = pConstraint->op;...705     iCol = pConstraint->iColumn - SERIES_COLUMN_START;706     assert( iCol>=0 && iCol<=2 );707     iMask = 1 << iCol;...713     if( pConstraint->usable==0 ){714       unusableMask |=  iMask;715       continue;716     }else if( op==SQLITE_INDEX_CONSTRAINT_EQ ){717       idxNum |= iMask;718       aIdx[iCol] = i;719     }720   }
复制代码


然而,在发布版本中,这个断言不存在。因此,在谷歌的测试中(这会因编译器和优化级别而异),在第 718 行的后续写入操作会破坏指向 pConstraint 的指针的最低有效 32 位,这将在下一次循环迭代中导致取消引用。这种漏洞可能会被利用。


不过,谷歌的研究人员也承认,这个漏洞的利用难度不小。


“Big Sleep”目前仍处于研究阶段,到目前为止,它使用带有已知漏洞的小型程序来评估其查找漏洞的能力。这是它的在真实世界环境中的首次实验。


在测试中,团队收集了 SQLite 代码库最近的几次提交。“在手动删除了琐碎的和仅用于文档的修改后,我们调整了 prompt,向 agent 提供了提交消息和更改的差异,并要求 agent 审查当前的代码库(在 HEAD)中是否存在可能未被修复的相关问题,”谷歌在博文中写道。


基于 Gemini 1.5 Pro 的大模型最终发现了这个漏洞。在博文中,“Big Sleep”团队还详细介绍了代理评估代码、发现漏洞、导致系统崩溃以及生成根本原因分析的步骤要点。详情可查看:https://googleprojectzero.blogspot.com/2024/06/project-naptime.html

AI 是模糊测试的未来?


像谷歌这样的许多公司使用一种称为“模糊测试”(Fuzzing)的过程,通过向软件提供随机或无效的数据来测试软件,以识别漏洞、触发错误或使程序崩溃。


但谷歌表示,模糊测试在“帮助防御者找到那些难以(或不可能)通过模糊测试发现的漏洞”方面做得还不够,并补充说,他们“希望 AI 能缩小这一差距”。


“我们认为这项工作具有巨大的防御潜力,”“Big Sleep”团队博客文章中宣称。“这个漏洞本身非常有趣,而且现有的 SQLite 测试基础设施(通过 OSS-Fuzz 和项目自己的基础设施)都没有发现这个问题,因此我们做了一些进一步的调查。”


值得注意的是,在 10 月,总部位于西雅图的 Protect AI 公司宣布了一款免费、开源的工具,声称可以在 Anthropic 的 Claude AI 模型的帮助下,在 Python 代码库中发现零日漏洞。这个工具名为 VulnHunter,根据其开发人员的说法,它已经在大型开源 Python 项目中发现了十多个零日漏洞。


根据谷歌的说法,这两个工具的目的不同。谷歌的一位发言人在接受《The Register》采访时强调,“我们在博客文章中的声明是,‘Big Sleep’在广泛使用的真实软件中发现了首个未知的、可被利用的内存安全问题。”“Python 的 LLM 发现的不是与内存安全相关的漏洞,而是不同类型的缺陷。”


“然而,我们想重申,这些都是高度实验性的结果,”谷歌团队写道。“‘Big Sleep’团队的立场是,Big Sleep Agent 目前针对特定目标的模糊测试工具在(发现漏洞)方面至少同样有效。”


参考链接:

https://www.theregister.com/2024/11/05/google_ai_vulnerability_hunting/

https://googleprojectzero.blogspot.com/2024/06/project-naptime.html

https://www.forbes.com/sites/daveywinder/2024/11/05/google-claims-world-first-as-ai-finds-0-day-security-vulnerability/

2024-11-07 17:0110676

评论

发布
暂无评论
发现更多内容

在大数据量中Spark数据倾斜问题定位排查及解决

五分钟学大数据

大数据 spark 年度总结 数据倾斜

广西汽车集团携手时习知打造数字化学习平台,加速人才转型

轶天下事

开发体育竞赛直播系统平台:创新与活力的释放,引爆比赛激情

软件开发-梦幻运营部

2023-12-09:用go语言,给你两个整数数组 arr1 和 arr2, 返回使 arr1 严格递增所需要的最小「操作」数(可能为 0)。 每一步「操作」中,你可以分别从 arr1 和 arr2

福大大架构师每日一题

福大大架构师每日一题

我与Stable Diffusion的“缘”

AI 大模型训练 Stable Diffustion 大模型推理

华为云耀云服务器L实例:让小程序开发更简单,上线更迅速,性能更稳定

平平无奇爱好科技

华为云耀云服务器L实例:跨境电商数字化转型的智选之道

平平无奇爱好科技

qemu调试kernel启动(从第一行汇编开始)

无人知晓

qemu kernel 内核调试 linux

SpringSecurity全限验证实战!

是月月啊2023

Java 面试题

一种在数据量比较大、字段变化频繁场景下的大数据架构设计方案

编程攻略

大数据 架构设计

数字时代智选,华为云耀云服务器L实例:数据分析背后的智能小程序开发解决方案

轶天下事

手撸了一个API网关,代码已上传,自取~

是月月啊2023

Java

面试官:线程崩了,会导致 JVM 崩溃吗?

是月月啊2023

JVM;

一款LED大灯泡设计方案

芯动大师

探索华为云耀云服务器L实例:助力中小企业高效迈入数字化时

平平无奇爱好科技

华为云耀云服务器L实例:小程序时代的得力伙伴

平平无奇爱好科技

qemu + vscode图形化调试linux kernel

无人知晓

Linux Kenel qemu 内核调试 linux

2023年大数据个人技术能力提升心得体会

大数据技术指南

大数据 技术总结

飞跃时代的翅膀,华为云这款服务器可助力企业数字化升级的强大能力

轶天下事

qemu单步调试arm64 linux kernel

无人知晓

qemu 内核调试 linux

游戏开发不再难:华为这款服务器为小程序与PC游戏提供强大支持

轶天下事

华为云耀云服务器L实例:助力初创企业数字化腾飞

YG科技

灵活弹性、成本优化:深度解析华为云耀云服务器L实例在企业数字化转型中的全面优势

轶天下事

qemu搭建arm64 linux kernel调试环境

无人知晓

qemu 单步调试linux driver

无人知晓

qemu driver 单步调试

闲聊ArrayList的那些事儿

是月月啊2023

Java 面试题

华为云耀云服务器L实例:赋能中小企业数字化转型

平平无奇爱好科技

华为云耀云服务器L实例:小程序开发者的智选

平平无奇爱好科技

通义家族大模型总结

多啦A梦

大模型

全球超万亿使用量的热门数据库,首次被大模型揪出了严重漏洞_数据库_罗燕珊_InfoQ精选文章