开源LLM工具准备嗅探 Python 零日漏洞

admin 2024年10月22日12:42:59评论21 views字数 3201阅读10分40秒阅读模式

开源LLM工具准备嗅探 Python 零日漏洞

西雅图 Protect AI 的研究人员计划发布一款免费的开源工具,该工具可以在 Anthropic 的 Claude AI 模型的帮助下查找 Python 代码库中的零日漏洞。

这款名为 Vulnhuntr 的软件于周六在意大利的No Hat 安全会议上发布。https://www.nohat.it/talks

Protect AI 首席人工智能威胁研究员 Dan McInerney 与同事 Marcello Salvati 共同开发了该软件,他解释说:“该工具并不是简单地从项目中粘贴一些代码并进行分析。”

“它会自动找到可能处理远程用户输入的项目文件,Claude 会分析其中的潜在漏洞,然后针对每个潜在漏洞,为 Claude 提供针对特定漏洞的高度优化提示并进入循环。”

“在这个循环中,它会智能地不断从代码中的其他地方请求函数/类/变量,直到完成从用户输入到服务器输出的整个调用链,而不会破坏其上下文窗口。与当前的静态代码分析器相比,它的优势在于可以大幅减少误报/漏报,因为它可以读取整个调用链,而不仅仅是一次读取一小段代码。”

McInerney 声称,这种方法可以揭示复杂、多步骤的漏洞,而不是标记具有已知安全隐患的 eval() 等函数。

McInerney 表示:“该工具最初是使用 Claude 设计的,并使用了 Claude 在提示工程方面的最佳实践,因此使用 Claude 的效果是迄今为止最好的。我们提供了使用 [OpenAI 的] GPT-4 的选项,并使用 GPT-4o 对其进行了测试,但结果较差。修改提示以更好地适应 GPT-4o 非常简单,使用 GPT-4o 模型只需更改一行代码即可。通过开源,我们希望在新模型问世时鼓励进行此类修改。”

McInerney 表示,到目前为止,Vulnhuntr 已经在大型开源 Python 项目中发现了十多个零日漏洞。

他说道:“所有这些漏洞都是之前不为人所知或报告给项目维护人员的。”

该工具目前重点关注七种类型的远程可利用漏洞。

  • 任意文件覆盖 (AFO)

  • 本地文件包含 (LFI)

  • 服务器端请求伪造(SSRF)

  • 跨站点脚本 (XSS)

  • 不安全的直接对象引用(IDOR)

  • SQL 注入 (SQLi)

  • 远程代码执行(RCE)

受影响的项目包括:

  • gpt_academic,GitHub 上有 64k 个星,LFI,XSS

  • ComfyUI,50K 颗星,XSS

  • FastChat,35K 颗星,SSRF

  • Ragflow,16K 颗星,RCE

其他在不到 90 天内发现有漏洞代码的项目尚未被识别,以便维护人员有时间修复问题。

McInerney 说,Ragflow 是他所知道的唯一一个修复了已发现错误的项目。

Vulnhuntr 有一些局限性。它目前仅适用于 Python 代码,并且依赖于对 Python 静态分析器的访问。因此,该工具在扫描包含其他语言(例如 TypeScript)代码的 Python 项目时更有可能产生误报。

在生成概念验证 (PoC) 漏洞时,该软件会生成一个置信度分数,范围从 1 到 10。分数为 7 表示它可能是一个有效漏洞,尽管 PoC 代码可能需要一些改进。分数为 8 或更高表示很可能是有效的。分数为 6 或更低则不太可能有效。

输出如下所示:

暂存器:
1. 分析 llm_app.py 中的 add_llm 函数。
2. 已识别出用作访问字典的键的用户输入:EmbeddingModel、ChatModel、RerankModel、CvModel 和 TTSModel。
3. 这些字典包含类引用,这些引用使用用户提供的参数进行实例化。
4. 工厂变量直接从用户输入(req['llm_factory'])中使用,而未经过适当验证。[...]
----------------------------------------
分析:
llm_app.py 中的 add_llm 函数包含一个严重的远程代码执行 (RCE) 漏洞。该函数使用用户提供的输入(req['llm_factory'] 和 req['llm_name'])从 EmbeddingModel、ChatModel、RerankModel、CvModel 和 TTSModel 字典中动态实例化类。这种使用用户输入作为访问和实例化类的密钥的模式本质上是危险的,因为它允许攻击者潜在地执行任意代码。由于缺乏对这些用户提供的值的全面输入验证或清理,漏洞变得更加严重。[...]
----------------------------------------

poc:
POST /add_llm HTTP/1.1 
Host: target.com 
Content-Type: application/json
Authorization: Bearer <valid_token> 

{ "llm_factory": "__import__('os').system", "llm_name": "id", "model_type": "EMBEDDING", "api_key": "dummy_key"}
----------------------------------------
confidence_score: 8 
----------------------------------------
vulnerability_types:
  - RCE
----------------------------------------

另一个问题是 LLM 不是确定性的——它们可能在不同时间对同一提示提供不同的结果——因此可能需要多次运行。尽管如此,McInerney 表示 Vulnhuntr 比当前一代静态分析仪有了显著的改进。

由于 Claude API 不是免费的,因此还需要一些成本。

McInerney 说:“我通常使用它来识别项目中处理远程用户输入的一两个文件,并告诉该工具只对这几个文件进行分析。这样使用时,平均令牌使用量不到 0.50 美元。它还会自动找到这些与网络相关的文件,但这是一个广泛的搜索,通常会扫描 10-20 个文件,而不是通常能产生最佳结果的 1-2 个文件。根据项目规模,扫描所有与网络相关的文件仍只需花费约 1-3 美元。”

据我们研究,Vulnhuntr 的发布将是 LLM 首次在野外发现零日漏洞。

麦克伊纳尼表示,他相信 Vulnhuntr 的发现代表着首次通过人工智能辅助工具在公共项目中发现真正的零日漏洞。

“有多篇论文声称这一点,但都是误导性的,因为他们的人工智能并没有发现零日漏洞,只是向它输入了已知的易受攻击的目标或未经训练的代码,然后声称这是他们的人工智能能够发现零日漏洞的证据,”他说。“据我们的研究显示,Vulnhuntr 的发布将是 LLM 首次在野外发现零日漏洞。”

作为例子,他指出了一篇我们之前报道过的学术研究人员的论文。

伊利诺伊大学厄巴纳-香槟分校计算机科学助理教授 Daniel Kang 是该论文和类似论文的合著者,他向The Register表示,依赖模拟数据是安全研究中的常见做法。

“人们普遍认为,模拟真实环境是真实世界的可接受替代方法,”他说。“我可以链接到数百份安全文件和新闻稿,其中安全工具用于模拟环境或过去的真实世界漏洞,没有人对这些发现提出异议。正确的说法是,我们模拟了零日设置,但同样,这被广泛接受为常见做法。”

Kang 的论文描述了使用 LLM 代理团队利用零日漏洞,并指出 Vulnhuntr 不处理漏洞利用。他还表示,由于没有对误报进行分析或与 ZAP、Metasploit 或 BurpSuite 等工具进行比较,很难说该工具与现有的开源或专有替代方案相比如何。

McInerney 表示,Vulnhuntr 发现的漏洞一旦被发现就很容易被利用。

“一旦该工具发现漏洞,它就会为你提供概念验证漏洞,”他说。“需要对 PoC 进行一些细微调整才能使其发挥作用,这并不罕见,但在阅读了 LLM 提供的关于它为何存在漏洞的分析后,你就会明白需要进行哪些调整。”

原文始发于微信公众号(Ots安全):开源LLM工具准备嗅探 Python 零日漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月22日12:42:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   开源LLM工具准备嗅探 Python 零日漏洞https://cn-sec.com/archives/3300936.html

发表评论

匿名网友 填写信息