震惊!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++不会完全变为内存安全,但这些改进降低了风险,从而使软件更加可靠和安全。

相关推荐
苏三说技术5 分钟前
Spring AI 2.0和Spring AI Alibaba,哪个更好?
后端
用户6757049885025 分钟前
还在用字符串返回错误提示?Go语言优雅错误处理的正确姿势!
后端·go
雪隐17 分钟前
用Flutter做背单词APP-02我画了设计稿,然后让AI帮我设计了数据库(顺便聊了会天)
前端·人工智能·后端
想你依然心痛21 分钟前
AUTOSAR Classic Platform架构解析:BSW、RTE与ASW——分层、配置、代码生成
java·架构·实时互动
江华森27 分钟前
【玩转 AtomCode】源码编译与架构解析:深入理解开源 AI 编码代理的内核设计
架构·开源
得物技术33 分钟前
得物 OceanBase 落地实践
数据库·分布式·架构
用户9385156350740 分钟前
从零打造你的第一个智能体(Agent):*手写一个能自主建项目的Mini Cursor (三)
javascript·人工智能·后端
Alan_7543 分钟前
GraphQL 深度解析:为什么它能替代传统 REST API
数据库·后端
SamDeepThinking43 分钟前
为什么很多人学了Java,还是没真正理解类和对象?
java·后端·面试
逝水无殇1 小时前
C# 多态性详解
开发语言·后端·c#