PyCharm 中不安全的代码补全是一个漏洞吗?
Seth Larson @ 2026-06-10 三个月前,我看到 PyCharm 附带了一个 "全行补全" 插件,这个插件 "使用本地深度学习模型来建议整行代码"。这些建议在你开始输入后会以整行建议的形式出现,可以使用 Tab 键接受。基本上是针对整行的自动完成。我决定测试这个功能。我先写了 `import urllib3`,然后创建了一新行,接着输入了 `u`,得到了下面带虚线框的建议。对于这个结果我不太满意: `import urllib3 u rllib3 . disable_warnings ( urllib3 . exceptions . InsecureRequestWarning )`。接受这行代码意味着,任何使用 urllib3 发出的不安全请求将不会造成用户可见的警告。我没有接受这个建议,然后开始实例化一个 `urllib3.PoolManager`,我担心接下来会发生的情况得到了证实: `import urllib3 urllib3 . PoolManager ( cert_reqs = 'CERT_NONE' ,`。建议禁用证书验证 (`CERT_NONE`),这将使 `PoolManager` 发出的每一个请求都容易受到中间人攻击 (MITM)。如果按原样接受此代码,意味着我正在写的程序存在严重漏洞。如果我也接受了之前的建议,那么在将这段代码投入生产之前,urllib3 将没有机会警告用户这个错误。显然这里发生了一些不安全的事情,但为了分配 CVE,我们必须决定哪个软件组件存在漏洞。这个行为是否值得被分配 CVE?我不确定,这很不幸,因为没有安全角度的错误报告,公司更不太可能优先处理这些报告。我向 JetBrains 报告了这一行为,针对 "全行代码补全" v253.29346.142,显然他们的支持人员也不确定这个缺陷是否是安全漏洞。当我询问是否可以发布一篇关于这一行为的博客文章时,他们确认这个报告不是 "直接的安全漏洞"(我同意这一点),但随后要求我不要公开我的报告,并提到 PyCharm 的协调披露政策……那么,这算不算安全漏洞?最终我还是等了 90 天,开发团队没有给我任何实质性的更新。我今天再次检查了 "全行代码补全" v261.24374.152,发现行为完全一样,在两个上下文中都建议相同的不安全代码。这并不是针对 PyCharm 或 JetBrains 的特定攻击,我毫不怀疑这样的例子在所有可用的代码生成模型中都存在。我认为将 CVE 用于这个目的也不适合或对用户没有帮助。但如果不优先处理并解决这个行为,其源头意味着需要更多的工作来缓解不安全代码被用户接受的潜在风险,尤其是用户信任他们的 IDE 提供给他们的内容。你怎么看?我很想知道你对这类代码生成模型的问题的看法。哇,你看到了最后!通过 Mastodon、电子邮件或 Bluesky 与我分享你的想法。浏览本博客的 183 篇文章存档。查看我在互联网上找到的酷炫东西列表。订阅本博客的 RSS 或电子邮件通讯。走出去(最佳选择)
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡