慎用LLM、慎用中转商、慎用IDE插件

大语言模型插件(比如那些帮你写代码的助手)越来越火,但它们背后藏着一个大问题:服务商可以看到甚至拿走你所有输入的内容,包括你的代码、API密钥和数据库密码!

如果走的官方接口,例如 Copilot、阿里、腾讯那么会泄露给这些大厂,你可以从主观上默认他们遵守协议规则不存不看。

但如果是配置的其它的三方接入地址,尤其因为网络等各种问题接了其它中转商,他们完全可以拦截过滤所有提交内容中自己感兴趣的部分。

为什么他们能看到

  1. LLM靠“上下文”干活: LLM必须看你输入的内容(代码、问题描述等)才能理解你要它做什么。这就像你跟人聊天,对方得知道上下文。
  2. 中间商是明文必经之路: 只要你用的LLM功能(比如IDE里的代码补全插件)不是直接连到模型(如GPT)。它都需要先把你输入的东西发给中间服务商,服务商再转发给模型,拿到结果后再返回给你。
  3. 程序员风险最大: 写代码时,你很容易在文件里放测试用的API密钥(apiKey = "sk-xxx")、数据库密码等。当你用LLM插件(比如让它优化代码或解释错误),插件会自动抓取你当前编辑的代码块(上下文),连带着这些敏感信息一起发给中间商!

中间商的风险原理:合法但危险

  • 不是黑客,没有技术难度: 和传统“中间人攻击”(黑客窃听)不同,这些服务商是你合法授权使用的,风险在于他们可以滥用你给的数据。
  • 他们控制数据流: 你的请求和模型的回复都必须经过他们的服务器。这让他们能:
    • 看数据: 如果传输没加密好,或者密钥在他们手里,你的明文信息(代码、密钥)等于在他们面前“裸奔”。
    • 存数据: 他们可能打着“改进服务”的旗号,把你交互的完整上下文(含敏感信息)存下来。存得越多,泄露风险越大。
    • 挖数据: 更可怕的是,他们可能用技术主动扫描你上传的文本,专门提取里面的密钥、密码等结构化信息。这就完全超出了“中转”的本分。

IDE插件:高危现场!

  • 自动抓取上下文: 你写代码时,按个Tab触发补全,或者点一下“解释这段代码”,插件瞬间就抓取了你当前编辑窗口的一大片代码(前后N行) 发走。
  • 过滤是摆设: 有些插件说能过滤敏感词(如apiKey, secret)。但通常就靠简单关键词匹配。如果你用my_aws_keydb_pass这种自定义名字,密钥照样被原样上传!
  • 你根本不知道: 这些上传动作很隐蔽,没有明显提示。你可能随手一操作,密钥就发出去了。

如何防御

  • 选靠谱工具:
    • 优先考虑能本地运行的模型(如Llama 3),数据不出门。
    • 如果用第三方服务,选明确承诺“零数据留存” 并尽量挑选值得信任的大厂。
  • 管好你的数据:
    • 不要在代码里硬编码密钥密码!可以在代码里引用环境变量(如${DB_PASSWORD})。
    • git-secrets等工具在提交代码前扫描,防止密钥误提交(也防止它进LLM上下文)。
  • 提高警惕: 时刻记住,你输入给LLM的任何内容(代码、提示)都可能被中间商看到或存下。像保护密码一样保护你的上下文!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注