本文档涵盖了 llama.cpp 的安全最佳实践、威胁建模和安全部署指南。它讨论了在从隔离的研究设置到生产多租户部署的各种环境中,使用 llama.cpp 运行大型语言模型的安全影响。
有关服务器配置和 API 安全功能的信息,请参阅 HTTP 服务器。有关模型文件的完整性和验证,请参阅 模型管理。
本文档介绍了部署和操作基于 llama.cpp 的系统的特定安全注意事项。它涵盖了 LLM 推理特有的威胁向量、缓解策略和安全部署的架构模式。这些指导原则适用于所有 llama.cpp 接口,包括 llama-cli、llama-server 和直接的 libllama 集成。
LLM 推理系统的安全环境涉及多种攻击向量,这些向量与传统的应用程序安全问题不同。
来自未知来源或训练数据集的模型会带来重大的安全风险。与传统软件不同,模型行为无法通过静态分析轻松审核。
所有不受信任的模型都必须在隔离的环境中运行。
模型的可信度存在一个范围,而非二元分类。
| 信任级别 | 来源 | 验证 | 所需隔离 |
|---|---|---|---|
| 高 | 知名供应商,经过审核的训练 | 哈希验证,签名验证 | 进程沙盒 |
| 中等 | 社区模型,已知数据集 | 哈希验证 | 容器隔离 |
| 低 | 未知来源 | 仅哈希验证 | 虚拟机隔离 |
| 不受信任 | 任意来源 | 无 | 完全隔离 + 监控 |
LLM 系统容易受到提示注入攻击,其中恶意输入会尝试覆盖模型指令或提取敏感信息。
接受图像、音频或其他媒体格式的模型需要额外的安全考虑,因为格式转换库的安全级别各不相同。
LLM 推理系统处理敏感数据,需要保护这些数据免受未经授权的访问以及通过模型行为导致的潜在泄露。
ggml-alloc 系统管理跨后端的张量内存分配,需要仔细的隔离。
llama_context 维护独立的内存空间。暴露在网络上的 llama.cpp 部署需要额外的安全控制来防止远程攻击和数据拦截。
某些 llama.cpp 组件不得在不受信任的环境中公开。
| 组件 | 文件路径 | 风险级别 | 限制 |
|---|---|---|---|
rpc-server | tools/rpc/ | 关键 | 切勿向外部公开 |
llama-server (未受保护) | tools/server/ | 高 | 需要身份验证/加密 |
RPC 后端支持分布式推理,但也带来了重大的安全风险。
多租户部署需要全面的隔离策略,以防止跨租户的数据访问和资源冲突。
GPU 和专用加速器会引入额外的攻击向量。
使用符合安全要求的构建选项配置 llama.cpp。
llama.cpp 组件的关键安全相关参数。
| 参数 | 组件 | 安全影响 |
|---|---|---|
--ctx-size | llama-cli,llama-server | 内存分配限制 |
--threads | 所有组件 | CPU 资源限制 |
--timeout | llama-server | 防止拒绝服务攻击 |
--host | llama-server | 网络绑定限制 |
实施全面的安全事件监控。
llama.cpp 中的安全漏洞应通过适当的渠道报告,以确保负责任的披露。
以下情况不被视为 llama.cpp 的漏洞: