写点什么

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

  • 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:0110916

评论

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

做中台,我从一名产品经理做成了合伙人

木木杨老师

中台 产品经理 产品设计 数字化 企业数智化

面试官:linux零拷贝的原理是什么?

CRMEB

用了区块链技术,破产清算办案更透明了!

CECBC

盖世无双之国产数据库风云榜-2022年02月

墨天轮

数据库 GaussDB TiDB 国产数据库

如何基于 Agora Android SDK 在应用中实现视频通话?

声网

人工智能 android 音视频

回声嘹亮 之 Go 的 Echo 框架 —— 上手初体验

宇宙之一粟

Go web Go 语言 2月月更

OpenHarmony移植:如何适配utils子系统之KV存储部件

华为云开发者联盟

LiteOS OpenHarmony utils KV存储部件

容器化 | 在 KubeSphere 中部署 MySQL 集群

RadonDB

MySQL 数据库 高可用 RadonDB KubeSphere

频繁项集挖掘算法在告警关联中的应用

云智慧AIOps社区

算法 告警

云防火墙:防御企业上云“亿”点网络攻击

青云技术社区

燃气表场景物联解决方案

😌

IoT 燃气

【Python】第三章(string)

謓泽

Python 2月月更

唯一一家!腾讯云数据库入选“科创中国”先导技术榜

科技热闻

MySQL是怎么保证redo log和binlog是完整的?

华为云开发者联盟

MySQL Binlog Redo Log WAL机制 日志逻辑序列号

资本热衷的垂直SaaS,如何能大有作为?

ToB行业头条

阿里卖家 Flutter for Web 工程实践

阿里巴巴终端技术

flutter Web 客户端开发 ffw

保证业务高效运营 专有云虚拟网络是关键

百度开发者中心

| 从DevOps到BizDevOps, 研发效能提升的系统方法

阿里云云效

云计算 阿里云 DevOps 云原生 研发

Python代码阅读(第76篇):摄氏温度与华氏温度互转

Felix

Python 编程 阅读代码 Python初学者

Kaggle冠军解读:风电场短期风况预测任务方案

百度大脑

产品更新 | 云原生综合运维平台SchedulX V 0.2.0 已发布,支持部署服务至云服务器

星汉未来

解码北京冬奥沉浸式报道黑科技: 阿里云视频云「互动虚拟演播技术」

阿里云CloudImagine

阿里云 计算机视觉 音视频 视频云 冬奥会

大力发展区块链技术,做好数字经济“新基建”

CECBC

全球首个开源车路协同数据集发布,促进学界业界跨界融合

百度开发者中心

【网络安全】Agent内存马的自动分析与查杀

H

网络安全 WEB安全

MySQL是怎么保证redo log和binlog是完整的?

华为云开发者联盟

MySQL Binlog Redo Log WAL机制 日志逻辑序列号

数字人民币 为经济添活力

CECBC

博文干货|Apache InLong 使用 Apache Pulsar 创建数据入库

Apache Pulsar

开源 架构 云原生 Apache Pulsar apache 社区

快上车!第十七届全国大学生智能汽车竞赛百度创意组来啦

百度大脑

腾讯WeTest开通微信视频号啦

WeTest

如何高效交付专有云?百度智能云有妙招

百度开发者中心

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