将分享如何使用经过微调的用于查找漏洞的开源 AI 模型codeastra-7B来识别各种开源项目(如 apache pulsar、apache airflow、apache cocoon、tensorflow、imagemagik 等)中的零日漏洞,以及如何构建一个结合静态分析工具(如 semgrep)和基于开源模型(如 CodeAstra-7B)构建的 AI 代理的框架,以有效地查找 0 日和 n 日漏洞。
在 Apache Pulsar 中查找CVE-2023-51437定时攻击
在上面的例子中!我将 Apache Pulsar 项目的代码片段(易受 CVE-2023-51437 攻击)输入到 CodeAstra 模型中,并且 CodeAstra 模型已成功识别漏洞
总的来说!大多数使用基于规则引擎的静态分析工具都很难找到基于时间的漏洞
Apache cooccon 项目中发现CVE-2022-45135 SQL 注入攻击
在上面的例子中!我将 Apache Cocoon 项目中存在 SQL 注入漏洞的代码片段输入到 CodeAstra 模型中,并且 CodeAstra 模型已成功识别漏洞
Apache Pulsar 项目中发现CVE-2024-27317文件覆盖漏洞
在上面的例子中!我将 Apache Pulsar 项目的文件覆盖漏洞代码片段输入到 CodeAstra 模型中,尽管 CodeAstra 模型没有识别出确切的漏洞,但它已经识别出了潜在的攻击面
发现 Apache Air Flow 项目中的 CVE-2021–45229 XSS 漏洞
在上面的例子中!我将 Apache Airflow 项目中存在 XSS 漏洞的代码片段输入到 CodeAstra 模型中,并且 CodeAstra 模型已成功识别 XSS 漏洞。
发现 CVE-2021-37678 不安全的 yaml 反序列化漏洞,导致 TensorFlow 项目中出现 RCE
在上面的例子中!我将 Tensorflow 项目中 yaml 反序列化不安全的代码片段漏洞输入到 CodeAstra 模型中,并且 CodeAstra 模型已成功识别漏洞
在 Imagemagick 库中查找CVE-2019-17541堆缓冲区溢出漏洞
在上面的例子中!我将存在堆缓冲区溢出漏洞的代码片段输入到 CodeAstra 模型中,并且 CodeAstra 模型已成功识别漏洞
在 Apache Trafficops 中查找 CVE-2021-43350 LDAP 注入
在上面的例子中!我将 go 代码片段 LDAP 注入漏洞输入到 CodeAstra 模型中,并且 CodeAstra 模型已成功识别漏洞
观察与分析
当我使用单次提示来触发CodeAstra-7B模型时,与业务逻辑漏洞相比,它能够轻松找到常见漏洞,例如 SQL 注入、XSS 等。
当我使用少量提示时,它往往比单次提示更准确地发现漏洞
注意:如果你使用 GPT-4 或任何 LLM 来查找漏洞,请始终使用一些带有示例的提示来提高准确性
与 Semgrep 和其他静态分析工具的比较
Semgrep 和其他静态分析使用一些基于规则的引擎来检测易受攻击的模式。它们可以非常快速地检测已知代码模式中出现的常见漏洞,但无法检测基于时间的漏洞、otp 绕过类型的业务逻辑漏洞。要查找业务逻辑漏洞(如 OTP 绕过、特权提升、IDOR 等),我们需要了解代码的上下文。因此,AI 模型可以轻松理解此代码并找到业务逻辑漏洞,但与基于规则引擎的静态分析工具相比,它们的速度会更慢
既然 GPT4 可以更好地进行代码审查,为什么还要开源 AI 模型?
大多数公司都有一项政策,不允许员工将源代码等敏感信息发送给托管封闭式 AI 模型的公司的第三方 API,除非他们与这些公司有合作关系,例如 OpenAI Enterprise Subscription,他们不会使用用户数据训练 ML 模型。在这种情况下,我们需要一个可以在我们控制的环境中部署的开源 AI 模型。
如何使用静态分析工具和AI模型构建一个能够更有效地发现漏洞的工具。
我们需要使用静态分析工具来查找基于常见模式的漏洞、低悬置错误、硬编码凭据等,并使用基于 codeastra 的 LLM 代理来理解代码并查找需要有关代码实现上下文的复杂错误,例如 OTP 绕过、权限提升、时间相关漏洞等,这将帮助安全人员减少攻击面并在几个小时内更快地在具有较大代码库的软件中识别 n 天漏洞。
LLM 基本上非常擅长识别代码中的潜在攻击面,并且人类可以将报告和潜在攻击面关联起来,以找到 AI 可能错过的漏洞并快速修补它们。
原文始发于微信公众号(KK安全说):使用开源AI探寻0day的艺术
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论