菜单

安全考量

相关源文件

本文档涵盖了 llama.cpp 的安全最佳实践、威胁建模和安全部署指南。它讨论了在从隔离的研究设置到生产多租户部署的各种环境中,使用 llama.cpp 运行大型语言模型的安全影响。

有关服务器配置和 API 安全功能的信息,请参阅 HTTP 服务器。有关模型文件的完整性和验证,请参阅 模型管理

目的与范围

本文档介绍了部署和操作基于 llama.cpp 的系统的特定安全注意事项。它涵盖了 LLM 推理特有的威胁向量、缓解策略和安全部署的架构模式。这些指导原则适用于所有 llama.cpp 接口,包括 llama-clillama-server 和直接的 libllama 集成。

威胁模型概述

LLM 推理系统的安全环境涉及多种攻击向量,这些向量与传统的应用程序安全问题不同。

来源:SECURITY.md1-69

不受信任的模型

来自未知来源或训练数据集的模型会带来重大的安全风险。与传统软件不同,模型行为无法通过静态分析轻松审核。

模型隔离要求

所有不受信任的模型都必须在隔离的环境中运行。

  • 容器隔离:使用 Docker 或类似的容器化技术
  • 虚拟机沙盒:用于最大程度的隔离
  • 进程级沙盒:可接受的最低隔离级别

风险评估框架

模型的可信度存在一个范围,而非二元分类。

信任级别来源验证所需隔离
知名供应商,经过审核的训练哈希验证,签名验证进程沙盒
中等社区模型,已知数据集哈希验证容器隔离
未知来源仅哈希验证虚拟机隔离
不受信任任意来源完全隔离 + 监控

来源:SECURITY.md13-19

输入清理和提示注入

LLM 系统容易受到提示注入攻击,其中恶意输入会尝试覆盖模型指令或提取敏感信息。

输入处理管道

所需的清理步骤

  1. 字符验证:强制执行严格的字符集和数据类型
  2. 内容过滤:删除潜在的恶意代码片段
  3. 安全编码:将特殊字符转换为安全表示形式
  4. 注入检测:使用专用模型或基于规则的系统

多模态输入风险

接受图像、音频或其他媒体格式的模型需要额外的安全考虑,因为格式转换库的安全级别各不相同。

来源:SECURITY.md21-34

数据隐私和内存隔离

LLM 推理系统处理敏感数据,需要保护这些数据免受未经授权的访问以及通过模型行为导致的潜在泄露。

内存管理安全

ggml-alloc 系统管理跨后端的张量内存分配,需要仔细的隔离。

  • 上下文隔离:每个 llama_context 维护独立的内存空间。
  • 后端内存隔离:GPU 内存池必须正确隔离。
  • 清理程序:推理完成后安全地清除内存。

敏感数据处理

  • 内存加密:用于敏感的提示和响应。
  • 内存清除:显式清除敏感数据结构。
  • 交换预防:防止敏感数据写入磁盘。

来源:SECURITY.md36-38

网络安全

暴露在网络上的 llama.cpp 部署需要额外的安全控制来防止远程攻击和数据拦截。

不受信任网络中禁止的组件

某些 llama.cpp 组件不得在不受信任的环境中公开。

组件文件路径风险级别限制
rpc-servertools/rpc/关键切勿向外部公开
llama-server (未受保护)tools/server/需要身份验证/加密

网络安全控制

  • 哈希验证:使用已知的校验和验证模型文件的完整性。
  • 传输加密:所有网络通信使用 TLS。
  • 网络分段:隔离推理系统与其他网络。
  • 访问控制:实施身份验证和授权。

RPC 后端安全注意事项

RPC 后端支持分布式推理,但也带来了重大的安全风险。

  • 远程代码执行:RPC 端点可以执行任意计算图。
  • 身份验证绕过:没有内置的身份验证机制。
  • 网络暴露:直接访问内部推理 API。

来源:SECURITY.md40-46

多租户安全架构

多租户部署需要全面的隔离策略,以防止跨租户的数据访问和资源冲突。

隔离要求

  1. 租户隔离:使用容器化或虚拟机隔离实现强隔离。
  2. 网络分段:防止跨租户网络访问。
  3. 资源分配:速率限制和资源配额,以防止拒绝服务攻击。
  4. 模型共享安全:了解共享模型权重时的风险。

硬件攻击注意事项

GPU 和专用加速器会引入额外的攻击向量。

  • 侧信道攻击:通过时间和功耗分析泄露信息。
  • 内存残留:前一个租户的数据仍然保留在 GPU 内存中。
  • 共享资源:共享计算单元中的冲突。

来源:SECURITY.md47-57

安全配置指南

构建时安全选项

使用符合安全要求的构建选项配置 llama.cpp。

运行时安全参数

llama.cpp 组件的关键安全相关参数。

参数组件安全影响
--ctx-sizellama-clillama-server内存分配限制
--threads所有组件CPU 资源限制
--timeoutllama-server防止拒绝服务攻击
--hostllama-server网络绑定限制

监控和日志记录

实施全面的安全事件监控。

  • 模型加载事件:跟踪加载了哪些模型以及由谁加载。
  • 资源使用模式:检测异常的资源消耗。
  • 输入验证失败:记录并警报恶意输入尝试。
  • 网络访问模式:监控异常的网络行为。

来源:SECURITY.md1-69

漏洞报告

llama.cpp 中的安全漏洞应通过适当的渠道报告,以确保负责任的披露。

什么是漏洞

以下情况被视为 llama.cpp 的漏洞:

  • 恶意的模型行为(模型级别的安全问题)
  • 提示注入成功(输入验证问题)
  • 共享硬件上的侧信道攻击(基础设施问题)

报告流程

  1. 私密披露:使用 GitHub 安全公告,而不是公开问题。
  2. 合理时间:允许 90 天的补丁开发时间。
  3. 协调披露:在公开披露之前与维护者合作。

来源:SECURITY.md59-69