为了让开发人员加入额外的功能,许多集成式开发环境(IDE)支持延伸组件的机制,但有安全企业发现,这些IDE工具验证延伸组件的流程存在弱点,使得攻击者有机会将恶意组件标记为已通过验证(Verified),引诱开发人员下载、安装,从而在计算机执行恶意程序代码。
安全企业OX指出,他们在今年5月至6月,发现Visual Studio Code(VSCode)、Visual Studio、IntelliJ IDEA、Cursor等IDE工具,在检验延伸组件的验证方式存在瑕疵,导致攻击者能让恶意组件伪装成已经过验证的状态,进而引诱开发人员安装,而能在开发环境执行任意程序代码。
针对上述的发现,OX向微软、Cursor、JetBrains通报此事,三家厂商都表示他们不会进一步处理,对此该安全企业呼吁,开发人员最好直接从官方市场安装延伸组件,并避免以组件是否具备通过验证的徽章,作为主要确认的依据。
一般来说,IDE工具会向服务器发出请求,判断延伸组件是否通过验证,但OX发现,这个流程只会检验发行者的身份,并非确认组件内容有无遭到篡改,因此,攻击者只要盗用已通过验证的延伸组件中继数据(Metadata),再以此制作恶意组件,在开发人员手动安装这些文件的过程其中,IDE工具就会显示组件已通过官方验证,从而降低开发人员的戒心。
为了映证这项发现,OX在上述4款IDE工具进行概念验证(PoC),结果这些恶意组件都会显示已通过验证的标章,但安装后,都会让IDE工具打开小算盘程序。
针对研究人员的发现,3家厂商也给出说明,解释他们为何不给处理。其中,微软的回复最完整,该公司表示根据他们详细调查,这样的现象符合设计预期,不构成需立即修补的安全漏洞。他们也强调攻击者无法在市场发布这些有问题的延伸组件文件,只能经由侧载(side-loading)安装到Visual Studio或Visual Studio Code。这项弱点他们评估仅有中低风险,将不会登记CVE编号,也不会发布更新,微软安全事件回应中心(MSRC)不会进行后续关注。
JetBrains则认为,开发人员手动安装打包成ZIP文件的延伸组件是刻意为之,由于这种组件并非来自JetBrains市场,他们一律视为第三方、未经验证的组件。JetBrains强调在开发人员手动安装的过程里,IntelliJ IDEA会明确显示警告,指出用户从不受信任的来源安装程序代码,必须自行负责。至于Cursor,他们表示不会验证延伸组件的签章。