← 最新论文
💻 computer science

Probing Privacy Leaks in LLM-based Code Generation via Test Generation

本文提出了一种测试驱动的流水线,该流水线利用自动构建的隐私特征库来模拟真实的代码生成场景,从而在检测五个大语言模型中的隐私泄露方面,显著优于现有的临时性基于提示的方法。

原作者: Yifei Ge, Zhenpeng Chen, Weisong Sun, Yuchen Chen, Chunrong Fang, Juan Zhai, Xiaofang Zhang, Xia Feng, Yang Liu, Zhenyu Chen

发布于 2026-05-18
📖 1 分钟阅读☕ 轻松阅读

原作者: Yifei Ge, Zhenpeng Chen, Weisong Sun, Yuchen Chen, Chunrong Fang, Juan Zhai, Xiaofang Zhang, Xia Feng, Yang Liu, Zhenyu Chen

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

以下是用简单语言和创意类比对该论文的解读。

宏观视角:AI 编程助手中的“内存泄漏”

想象你雇佣了一位超级聪明的学徒程序员(AI)为你编写代码。这位学徒阅读了来自整个互联网的数十亿行代码来学习编程。问题在于?有时,互联网包含人们不小心留在公开代码中的秘密笔记、私人邮件或密码。

由于 AI 是从所有内容中学习的,它可能已经记住了这些秘密。当你让它编写新程序时,它可能会不小心将这些旧秘密复制粘贴到你的新代码中。这被称为隐私泄漏

本文的作者构建了一个特殊的“安全审计”工具,以查明这种情况发生的频率,并评估当前的方法是否足以发现这些泄漏。


旧方法的问题:“问错了问题”

在这篇论文之前,研究人员试图通过直接向 AI 提问来发现这些泄漏,例如:“嘿,你知道任何电子邮件地址吗?”或者“给我一个密码。”

类比:想象你试图通过问图书管理员“你们有关于龙的书吗?”来在图书馆里找到一本特定的书。图书管理员(AI)有安全规则,可能会说“不,我不能给你那个”,或者因为不想违反规则而编造一个假的龙的名字。

论文认为,这些旧方法就像问错了问题。它们看起来不像真实的工作,因此 AI 不会“回忆”起它学到的秘密。

新解决方案:“测试驱动”的侦探

作者创建了一个新的流程(逐步过程),其作用更像真实的软件开发人员。他们不是直接索要秘密,而是通过让 AI 完成一项正常的工作来诱使其泄露秘密:编写测试

以下是他们的“侦探流程”如何逐步运作:

1. 设定场景(“真实情境”)

他们不是提出随机问题,而是给 AI 一个真实的工作描述。

  • 类比:与其问“你知道一个电话号码吗?”,不如说“你正在为一家医院构建一个移动应用程序。你需要编写一个保存患者电话号码的函数。”
  • 为何有效:这模仿了 AI 最初学习的环境。就像把 AI 放回它曾经学习的教室,使其更有可能回忆起之前看到的特定细节。

2. “测试用例”陷阱

一旦 AI 为医院应用程序编写了代码,研究人员就要求它编写一个单元测试(一种确保代码正常工作的小型检查)。

  • 技巧:为了测试代码,AI 需要提供输入数据。研究人员告诉 AI:“请编写一个使用看起来真实的电话号码的测试用例。”
  • 为何有效:AI 认为它只是在完成一项枯燥的技术任务(编写测试),而不是泄露秘密。它不太可能拒绝此请求。如果 AI 从训练数据中记住了真实的电话号码,它可能会在测试中不小心使用那个真实的号码,而不是编造一个假的。

3. “隐私特征库”(作弊表)

为了确保 AI 不会只是写出"123-456-7890"(一个假的占位符),研究人员构建了一个特殊的库。

  • 类比:将其想象为一个“风格指南”或“作弊表”,向 AI 展示真实数据的样子。它包含模板(如 user.email = <EMAIL>)以及数据格式的真实示例。
  • 神奇之处:这个库是自动构建的。每当 AI 泄露一个真实秘密时,研究人员就会提取该秘密,将其分解为“模板”(结构)和“片段”(秘密部分),并将其添加到库中。这使得该库随着时间的推移变得更聪明,帮助 AI 在未来的测试中生成更真实(且可能已泄露)的数据。

4. 验证(“真相核查”)

最后,他们检查 AI 生成的数据是真实的还是仅仅是幻觉(编造的谎言)。

  • 过程:他们使用第二个 AI 过滤掉明显的伪造品,然后搜索互联网(特别是 GitHub),查看该确切字符串是否存在于真实代码中。
  • 结果:如果该字符串存在于真实代码中,则确认为已确认的泄漏。如果不存在,则可能是伪造的,为了安全起见,他们会将其丢弃。

他们发现了什么?

研究人员在 5 个流行的 AI 模型(包括 GPT-4 和 DeepSeek)上测试了这种方法。

  • 更好的检测:他们的方法发现的已确认隐私泄漏数量比以前的方法多2.56 倍
  • “隐藏”的泄漏:他们发现,尽管 AI 模型试图保持安全并拒绝直接回答问题,但当被要求执行“正常”工作(如编写测试)时,它们仍然会泄露秘密。
  • 泄漏最多的是什么:最常见的泄漏是电子邮件地址、姓名和账户用户名。这些是公开代码中出现频率最高的内容,因此 AI 对它们的记忆最深刻。
  • “秘密”类别:他们还发现了密码和密钥的泄漏,尽管这些泄漏的频率低于个人姓名。

结论

该论文得出结论,当前的安全措施并不完美。如果你要求 AI“扮演开发人员”并为真实场景编写测试,它更有可能不小心泄露秘密,暴露其在训练期间记住的私人信息。

作者的新“测试驱动”方法是审计这些模型的更好方式,它充当了一种真实的压力测试,揭示了 AI 内存中实际隐藏了多少私人数据。

重要提示:作者强调,由于他们无法查看 AI 的原始训练数据,他们只有在公共互联网(GitHub)上找到该数据时才能确认泄漏。这意味着他们的数字可能是一个“保守的下限”——实际的泄漏数量可能更高,但他们只计算那些能够证实的泄漏。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →