开发者生态
morning
PyCharm 中不安全的代码完成是一个漏洞吗?
2026-06-11
1 阅读
12_throw_away
不安全的代码完成是一个漏洞吗? Seth Larson @ 2026-06-10 三个月前,我看到 PyCharm 附带了一个“全行完成”插件,该插件“使用本地深度学习模型来建议整行代码”。这些建议在您开始输入后表现为整行建议,并且可以通过 Tab 接受。本质上是自动完成整行。我决定测试一下这个功能。我首先编写 import urllib3 ,创建一个新行,然后输入 u 并收到下面用虚线边框标记的行的建议完成。我对结果没有印象: import urllib3 u rllib3 。接受此行意味着使用 urllib3 发出的任何不安全请求都不会导致用户可见的警告。我没有接受这个建议,然后开始实例化 urllib3.PoolManager ,我担心接下来会发生的事情得到了证实: import urllib3 urllib3 。 PoolManager ( cert_reqs = 'CERT_NONE' ,建议禁用证书验证 ( CERT_NONE ),这将使 PoolManager 发出的每个请求都容易受到中间人 (MITM) 攻击。按原样接受此代码将意味着我正在编写的程序存在严重漏洞。如果我也接受了之前的建议,那么 urllib3 将没有机会在生成此代码之前警告用户此错误。显然,这是不安全的正在发生,但对于要分配的 CVE,我们必须确定哪个软件组件存在漏洞。我不确定这是否是不幸的,因为没有安全角度的错误报告,公司不太可能优先向 JetBrains 报告“全行代码完成”v253.29346.142,并且当我要求时,他们的支持人员显然也不确定此缺陷是否是安全漏洞。在他们确认该报告不是“直接安全漏洞”(我同意)后,发布了一篇有关此行为的博客文章,但随后被要求不要公开我的报告,并提到了 PyCharm 的协调披露政策,那么……到底是哪个安全漏洞?我最终还是等了 90 天,但没有收到开发团队的任何实质性更新,我今天再次使用“全行代码完成”进行了仔细检查。 v261.24374.152 并且行为是相同的,这表明这两种情况都存在相同的不安全代码,我毫不怀疑每个可用的代码生成模型中都存在这样的示例,我也不认为为此目的使用 CVE 对用户来说是合适的或有帮助的,但不从源头上优先考虑和解决这种行为意味着需要做更多工作来减轻不安全代码被接受的可能性。相信他们的 IDE 提供的内容的用户,我有兴趣了解您对代码生成模型的此类特定问题的看法。请在 Mastodon、电子邮件或 Bluesky 上与我分享您的想法。查看我在互联网上找到的精彩内容列表。