震惊!Google的AI驱动的OSS-Fuzz工具在开源项目中发现大量漏洞!

谷歌宣布,他们使用AI增强的模糊测试工具OSS-Fuzz,在多个开源代码库中发现了26个漏洞,其中包括OpenSSL加密库中的一个中等严重程度的缺陷。

技术要点:

  • OSS-Fuzz:这是一个由Google开发的免费模糊测试平台,专门为开源社区服务。模糊测试是一种通过提供无效、 неожиданный 或随机数据作为输入,来测试软件的健壮性的方法,目的是发现潜在的漏洞和错误。

  • AI-Powered Fuzzing:谷歌在2023年8月开始使用大型语言模型(LLM)来改进OSS-Fuzz的模糊测试覆盖率。LLM通过生成更多的模糊测试目标(类似于单元测试,用于测试相关功能以查找漏洞)来工作,从而实现更深层次的漏洞检测。

  • CVE-2024-9143:这是OpenSSL中的一个漏洞编号,CVSS评分为4.3。该漏洞是一个越界内存写入错误,可能导致应用程序崩溃或远程代码执行。OpenSSL 3.3.3、3.2.4、3.1.8、3.0.16、1.1.1zb和1.0.2zl版本中已修复此问题。

实际应用例子:

假设你正在开发一个处理图像的开源软件。你可以使用OSS-Fuzz来测试你的代码,看它是否能正确处理各种格式错误的图像文件。如果OSS-Fuzz发现了一个导致程序崩溃的图像文件,那么你就找到了一个需要修复的漏洞。

Demo 代码 (Python 示例):

python 复制代码
import atheris
import sys

def TestOneInput(data):
  if len(data) < 5:
    return
  if data[0] == ord('f'):
    if data[1] == ord('u'):
      if data[2] == ord('z'):
        if data[3] == ord('z'):
          if data[4] == ord('!'):
            raise RuntimeError("Boom!")

def main():
  atheris.Setup(sys.argv, TestOneInput)
  atheris.Fuzz()

if __name__ == "__main__":
  main()

这段代码定义了一个简单的模糊测试目标,当输入数据的前五个字节是"fuzz!"时,程序会崩溃。你可以使用Atheris(一个用于Python的模糊测试工具)来运行这个测试。

AI 的作用:

AI能够模仿开发人员的模糊测试工作流程,从而实现更高的自动化。通过AI生成和增强的模糊测试目标,可以发现那些人工编写的测试目标难以发现的漏洞. 谷歌表示,使用AI生成模糊测试目标已经提高了272个C/C++项目的代码覆盖率,并增加了超过37万行的新代码。

传统方法的局限性:

谷歌指出,仅仅依靠代码覆盖率并不能保证一个函数没有漏洞。代码覆盖率作为一个指标,无法测量所有可能的代码路径和状态。不同的标志和配置可能会触发不同的行为,从而发现不同的错误.

其他安全措施:

谷歌一直在努力将其自身的代码库过渡到内存安全语言(如Rust),同时改进现有的C++项目,以解决空间内存安全漏洞。这包括迁移到安全缓冲区和启用强化的libc++,后者为标准C++数据结构添加了边界检查,以消除一类重要的空间安全错误。虽然C++不会完全变为内存安全,但这些改进降低了风险,从而使软件更加可靠和安全。

相关推荐
ZJU_统一阿萨姆14 小时前
【推理优化进阶】通信关键路径:NCCL、RDMA 与计算通信重叠
开发语言·人工智能·语言模型·架构·系统架构
m0_5873830014 小时前
智慧场馆解决方案实战指南:从系统架构到落地部署全解析
java·spring boot·架构·系统架构
省长14 小时前
Sa-Token v1.46.0 发布 🚀,来看看有没有令你心动的功能!
java·后端·开源
tech_zjf14 小时前
当 AI 把 Next.js Route 越写越快:我为什么做了 next-route-kit
前端·后端
ZYJCSZKJ15 小时前
AI数字人直播系统的技术架构与多方言交互实现方案——基于广西区域商业场景的工程实践
人工智能·架构·交互
Keystone_Onion15 小时前
跨境电商架构演进:基于美国海外仓的中大件分布式仓网路由优化方案
分布式·架构
喜乐MI15 小时前
Git 分支操作避坑指南:merge、cherry-pick、revert 与 reset 怎么选?
git·github
无凭15 小时前
DeepSeek Harness 为什么需要 Cordis:从 Everything is Plugin 开始看
人工智能·架构
魔兽大山哥15 小时前
提示词注入很热闹:NL2SQL 里它打得穿 Prompt,打不穿执行层
后端
智能架构人生15 小时前
Java开发者技能如何迁移到Kotlin
后端