PyCharm 的 AI 代码补全功能正在向开发者建议存在安全风险的代码片段。这些建议来自 IDE 内置的「整行补全」(Full Line Completion)插件,基于本地深度学习模型运行,用户敲下几个字母后按 Tab 键即可直接接受整行建议。
安全研究员 Seth M. Larson 在测试中发现,当编写 import urllib3 后仅输入字母 u,补全功能便会建议插入 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning),即屏蔽所有不安全请求的警告提示。他进一步测试了 urllib3.PoolManager() 的实例化,补全建议直接给出 cert_reqs='CERT_NONE',这意味着禁用证书校验,使所有请求面临中间人攻击(MITM)风险。接受这两条建议的程序将包含严重漏洞,且在投入生产环境前没有任何安全提示。
Larson 于三个月前向 JetBrains 报告了该问题,使用版本为 v253.29346.142,随后再次验证问题在 v261.24374.152 版本中仍然存在。JetBrains 回复称这不是「直接安全漏洞」,但同时要求其遵循协调披露政策、暂不公开报告,Larson 等待 90 天后未收到实质性进展回复。
问题在于:这类行为是否值得分配 CVE?Larson 认为不值得以 CVE 形式处理,因为代码生成模型在所有平台都可能存在类似问题,且 CVE 的滥用对用户并无帮助。但他也指出,如果不从源头重视并修复这类行为,意味着将更多不安全的代码交到信任 IDE 建议的开发者手中,风险最终由使用者承担。这不是对 PyCharm 或 JetBrains 的单一批评,而指向一个更广泛的行业问题——AI 代码补全的安全性与便利性之间的边界尚未明确划定。
编注:信源为安全研究员个人博客(sethmlarson.dev),材料覆盖 PyCharm Full Line Completion 行为测试、报告过程及行业反思,未涉及 JetBrains 官方漏洞定级文件或代码模型训练数据说明。