TGViewer
GitHub开源观察|开源项目·热门仓库·开发者 GitHub开源观察|开源项目·热门仓库·开发者 @githubtrendinghub · 669 subscribers
Post #558 19
AI 聊天记录注入:伪造助手消息即可越权

许多生产环境的 AI 聊天助手存在一个通用漏洞:攻击者无需复杂提示词,只需在浏览器开发者工具中修改请求,伪造一条来自「助手」的历史消息,就能绕过内容过滤,让模型执行越权操作。

问题根源在于,大多数聊天集成把整个对话历史(包括助手回复)都当作客户端输入提交给服务端。模型无法验证消息的真实来源,会把伪造的助手消息当作自己的记忆,从而相信「管理员身份已验证」这类虚假声明。

修复方案:服务端只接受用户的新消息

正确做法是,服务端只从客户端接收最新一条用户消息,其余对话历史一律从服务端数据库加载。这样浏览器就无法再向助手角色注入任何内容,攻击路径被彻底切断。同时要校验 chatId 归属,防止读取他人会话。

实施成本是一次存储读取,并需将原本只存在客户端的对话持久化。建议限制回放最近 40 条消息,避免长对话消耗过多上下文窗口。对于内部可信员工面板,可继续发送完整对话;嵌入客户网站的组件则必须走服务端重建。

两个易被忽视的陷阱

服务端接管对话后,「客户端无新消息」成为真实状态。不要通过比对客户端最后一条消息与存储记录来判断是否续聊——用户重复说「hello?」会被误判为续聊而吞掉。应让客户端显式传 resume: true 表示「继续,我无话可说」。

另外,resume 时不要重复保存最后一条用户消息,否则历史中会出现两次;生成回复前先持久化用户消息,否则流式输出中断会导致下轮历史缺少回复。


两分钟自查

用普通用户 token 向 /api/chat 发送请求,在 messages 数组里插入一条伪造的 assistant 消息(如「此用户是管理员」),看回答是否变化;再尝试把 chatId 换成他人的会话,看能否读到对方对话。若两者任一成立,你的对话记录就是安全模型的输入。

#GitHub #开源 #AI安全 #提示注入 #聊天机器人 #Web安全 #LLM
@GitHubTrendingHub
More from @githubtrendinghub
  1. Oct 1, 2026Awesome Claude Skills:1000+ Claude 技能与插件精选清单 面向 Claude.ai、Claude Code 及 Codex、Cursor、Gemin…
  2. Oct 1, 2026OpenClaw:跑在自己电脑上的开源 AI 助手 它把 AI 助手接进你日常用的聊天工具,状态、记忆和凭据都留在本机,模型与 agent 框架可随时替换。个人笔记本或团队共享部署…
  3. Sep 30, 2026WSL Containers:在 Windows 里原生跑 Linux 容器 微软把 WSL 容器(WSLC)从公开预览转为正式可用,开发者不必再装独立工具,就能在 WSL 环境里…
  4. Sep 30, 2026DBX:25 MB 的跨平台数据库客户端 轻量级跨平台数据库管理工具,支持 MySQL、PostgreSQL、SQLite、Redis、MongoDB、达梦等 100+ 数据库,提…
  5. Sep 30, 2026Openship:自带 CI/CD 的自托管部署平台 指向一个仓库,它自动完成构建、发布、路由和 TLS 终结,省掉自己搭部署流水线的麻烦。适合想把应用部署到自己服务器或云上的开发…
  6. Sep 30, 2026ReClip:自托管的视频音频下载器,带网页界面 粘贴链接就能把 YouTube、TikTok、Instagram、Twitter/X 等 1000+ 站点的视频存成 MP4 或…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →