k4w-wak/ollama-silent-patches

GitHub: k4w-wak/ollama-silent-patches

该项目是一份针对 Ollama 的安全漏洞完整披露报告,详细记录了七个严重漏洞并提供多个 PoC 与 CVE 编号。

Stars: 1 | Forks: 0

# 🦙🔒 Ollama 静默补丁 — 完整披露 ### 7 个严重漏洞 • 3 个 CVE • 15+ 个 PoC • 25K–175K+ 个暴露实例 [![CVE-2026-42248](https://img.shields.io/badge/CVE--2026--42248-HIGH-red)](https://nvd.nist.gov/vuln/detail/CVE-2026-42248) [![CVE-2026-42249](https://img.shields.io/badge/CVE--2026--42249-HIGH-red)](https://nvd.nist.gov/vuln/detail/CVE-2026-42249) [![CVE-2026-7482](https://img.shields.io/badge/CVE--2026--7482-HIGH-red)](https://nvd.nist.gov/vuln/detail/CVE-2026-7482) [![CVE-2026-5757](https://img.shields.io/badge/CVE--2026--5757-MEDIUM-yellow)](https://nvd.nist.gov/vuln/detail/CVE-2026-5757) [![CVE-2026-5530](https://img.shields.io/badge/CVE--2026--5530-HIGH-red)](https://nvd.nist.gov/vuln/detail/CVE-2026-5530) [![License: CC0](https://img.shields.io/badge/License-CC0--1.0-green)](LICENSE) [![Ollama Stars](https://img.shields.io/badge/Ollama-173K%2B%20stars-blue)](https://github.com/ollama/ollama) **📰 媒体报道:** [Help Net Security](https://www.helpnetsecurity.com/2026/05/05/ollama-windows-vulnerabilities-cve-2026-42248-cve-2026-42249/) • [The Hacker News](https://thehackernews.com/2026/05/ollama-out-of-bounds-read-vulnerability.html) • [CERT/CC VU#518910](https://kb.cert.org/vuls/id/518910) • [CERT Polska](https://cert.pl/en/posts/2026/04/CVE-2026-42248/) • [CSO Online](https://www.csoonline.com/article/4168584/ollama-vulnerability-highlights-danger-of-ai-frameworks-with-unrestricted-access.html) • [Cybersecurity News](https://cybersecuritynews.com/ollama-vulnerability-exposes-servers/) **📖 完整报告:** [Medium — k4w_wak](https://medium.com/@k4w_wak_21591) ## TL;DR — 为什么你应该关注 | 影响 | 详情 | |--------|---------| | 🔴 **通过更新流程实现 RCE** | `ollama pull` 可执行任意代码 (CVE-2026-42248/9) | | 🔴 **SSRF/钓鱼** | URL 策略绕过导致 Ollama 获取内部资源 (CVE-2026-5530) | | 🔴 **内存泄漏** | 3 个未经身份验证的 API 调用即可转储 **整个进程内存** — API 密钥、prompt、凭据 (CVE-2026-5757) | | 🔴 **"Bleeding Llama"** | 未经身份验证的堆读取从 30 万+ 实例中泄漏凭据 (CVE-2026-7482) | | 🟡 **配置劫持** | Codex 启动配置接管 | | 🟡 **SDK 泄漏** | macOS SDK 目标信息泄露 | | 🔴 **15+ 个 GGUF 解析器漏洞** | 模型解析器中未修补的整数溢出 | **25,000–175,000+ 个 Ollama 实例公开暴露。大多数未打补丁。** ## 漏洞公告摘要 Ollama 是全球最受欢迎的本地 LLM 运行时(GitHub Star 数 173K+,公开暴露实例 25K+),它存在一种**系统性的模式:在不发布 CVE、安全公告或致谢研究人员的情况下,静默修补安全漏洞**。本披露记录了: - **7 个主要发现**(从 10 个重构而来 — Regex 绕过合并入 SSRF;CVE-2026-5757 和 CVE-2026-7482 分离并阐明;根据 6 月 8 日的深入研究添加了 CVE-2026-5530) - **15+ 个额外的未修补 GGUF 解析器漏洞** - Ollama 团队的**“拒绝 → 修补 → 沉默”循环** - 尽管 Ollama 发布了 15+ 个与安全相关的补丁,但发布了**零 CVE、零公告、零致谢** - **打压研究人员的模式**(5+ 名研究人员被无视或拒绝) - Ollama 团队的**“拒绝 → 修补 → 沉默”循环** - 尽管 Ollama 发布了 15+ 个与安全相关的补丁,但发布了**零 CVE、零公告、零致谢** - **Huntr.com 证据:38/40 份漏洞赏金报告被拒绝,0 份被接受,0 份被修复** — 规模化的相同模式 - Ollama 团队的**“拒绝 → 修补 → 沉默”循环** - 尽管 Ollama 发布了 15+ 个与安全相关的补丁,但发布了**零 CVE、零公告、零致谢** ## 漏洞发现摘要(已重新校准) | # | 发现 | CVE/PR | CVSS v3.1 | 严重性 | 状态 | |---|---------|--------|-----------|----------|--------| | 1 | 通过 URL 策略的 SSRF/钓鱼(包括 Regex 绕过) | PR #16380/#16436 | **7.1** | 高危 | ✅ 已在 v0.30.2 修复 (静默) | | 2 | 更新流程 RCE | CVE-2026-42248/9, PR #16100 | **7.5** | 高危 | ✅ 已在 v0.30.0 修复 (静默) | | 3 | Codex 启动配置劫持 | PR #16437 | **7.1** | 高危 | ✅ 已在 v0.30.2 修复 (半静默) | | 4 | macOS SDK 目标泄漏 | PR #16053 | **INFO** | 信息级 | ✅ 已在 v0.30.0 修复 (静默) | | 5 | CVE-2026-5757 — GGUF 内存泄漏 | CVE-2026-5757 | **5.3** (v4.0) / **7.5** (v3.1, 如果 /api/create 开放) | 中高危 | 🔴 未修补 | | 6 | CVE-2026-7482 "Bleeding Llama" | CVE-2026-7482 | **7.5** | 高危 | ✅ 已在 v0.17.1 修复 (静默) | | 7 | CVE-2026-5530 — 通过 skipVerify 冲突导致的 SSRF | CVE-2026-5530 | **6.3** | 中危 | 🔴 未修补 (修复 PR 被无视 2 个月) | ## 发现 1:通过 URL 策略导致的 SSRF/钓鱼 (高危 — CVSS 7.1) | 字段 | 值 | |-------|-------| | **PR** | [#16380](https://github.com/ollama/ollama/pull/16380) — "Harden app markdown URL handling" | | **CVSS v3.1** | **7.1** (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N) | | **类型** | SSRF / 间接 Prompt 注入 → 钓鱼覆盖 | | **作者** | dhiltgen (Daniel Hiltgen) | | **合并日期** | 2026-06-02 | | **修复于** | v0.30.2 | | **发布说明** | ❌ **未提及** | | **CVE** | ❌ 无 | ### 漏洞描述 Ollama 的 agent 工具(`BrowserOpen`、`WebFetch`、`WebSearch`)以前允许 AI 模型作为工具参数访问**任何 URL** — 包括通过间接 Prompt 注入注入的、由攻击者控制的 URL。 攻击者可以: 1. 在网页上嵌入隐藏的 Prompt 注入(1pt 白底白字文本) 2. AI 模型读取该页面,获取注入的指令 3. 模型调用 `WebFetch` 或 `BrowserOpen`,并将攻击者的 URL 作为参数 4. 攻击者接收请求 (SSRF) 或提供一个覆盖 Ollama UI 的钓鱼页面 这是对 PromptArmor 披露(2025 年 12 月)的**直接修复**,而 Ollama 对此**没有做出回应**。 ### 修复方案 (PR #16380) **新文件:** `app/tools/url_policy.go` (58 行) ``` type directURLContextKey struct{} var directURLPattern = regexp.MustCompile(`https?://[^\s<>"']+`) func WithAllowedDirectURLs(ctx context.Context, text string) context.Context { allowed := make(map[string]struct{}) for _, match := range directURLPattern.FindAllString(text, -1) { addAllowedDirectURLToMap(allowed, match) } return context.WithValue(ctx, directURLContextKey{}, allowed) } func allowedDirectURL(ctx context.Context, raw string) bool { // Only URLs explicitly provided by the user or returned by web_search are allowed } ``` **修改:** `app/tools/browser.go`、`app/tools/web_fetch.go`、`app/tools/web_search.go` — 现在在执行前都会检查 `allowedDirectURL()`。 **新测试:** `app/tools/browser_test.go` — `TestBrowserOpen_RejectsUncachedDirectURL` **新增:** `StreamingMarkdownContent.test.tsx` — 移除了 `raw` rehype 插件,防止通过 `