Ollama未授权访问漏洞(CNVD-2025-04094)

本脚本及生成结果仅用于技术交流与测试,使用者需自行承担所有风险。作者不保证数据的准确性、完整性,不对因使用此工具造成的任何直接或间接损失负责。请确保已获相关IP所有者授权后再进行检测。

国家信息安全漏洞共享平台(CNVD)收录了Ollama未授权访问漏洞(CNVD-2025-04094)。未经授权的攻击者可以远程访问Ollama服务接口执行敏感资产获取、虚假信息投喂、拒绝服务等恶意操作。脚本目前仅实现了未授权访问/api/tags获取ollama的列出本地模型,要使用请自行配合chatbox或其他应用。

漏洞简介

Ollama是一个本地私有化部署大语言模型(LLM,如DeepSeek等)的运行环境和平台,简化了大语言模型在本地的部署、运行和管理过程,具有简化部署、轻量级可扩展、API支持、跨平台等特点,在AI领域得到了较为广泛的应用。

Ollama存在未授权访问漏洞。由于Ollama默认未设置身份验证和访问控制功能,未经授权的攻击者可在远程条件下调用Ollama服务接口,执行包括但不限于敏感模型资产窃取、虚假信息投喂、模型计算资源滥用和拒绝服务、系统配置篡改和扩大利用等恶意操作。未设置身份验证和访问控制功能且暴露在公共互联网上的Ollama易受此漏洞攻击影响。

CNVD对该漏洞的综合评级为“高危”。

import requests
import pandas as pd
from requests.exceptions import RequestException

# 读取IP列表
with open('ips.txt', 'r') as f:
    ips = [line.strip() for line in f if line.strip()]

results = []

for ip in ips:
    url = f'http://{ip}:11434/api/tags'
    try:
        # 发送请求,设置超时时间为5秒
        response = requests.get(url, timeout=5)
        response.raise_for_status()  # 检查HTTP错误
        
        # 解析JSON数据
        data = response.json()
        models = data.get('models', [])
        
        # 提取所有model的name
        model_names = [model.get('name', '') for model in models]
        model_names_str = ', '.join(filter(None, model_names))  # 过滤空名称并连接
        
        results.append((ip, model_names_str))
    
    except RequestException as e:
        results.append((ip, f'请求错误: {str(e)}'))
    except ValueError as e:
        results.append((ip, f'JSON解析错误: {str(e)}'))
    except Exception as e:
        results.append((ip, f'未知错误: {str(e)}'))

# 写入Excel文件
df = pd.DataFrame(results, columns=['IP', 'Models'])
df.to_excel('2.xlsx', index=False)

print('处理完成,结果已保存到2.xlsx')

使用方法

    • 使用app.name==”Ollama Server” 或者 port=11434 语法自行去资产探测网站搜索ollama应用

    • 将获取的ip保存到本地 ips.txt 文档

    • 运行以下命令:

python ollama_unauth_CNVD-2025-04094.py

    • 查看同目录的2.xlsx 获取结果。

参考:Ollama API文档

https://github.com/b3nguang/Ollama-Scan

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容