研究人员 Amit Assaraf、Itay Kruk 和 Idan Dardikman 对 Visual Studio Code Marketplace 的安全性进行了探索。他们首先创建了一个山寨版的 “Dracula Official” 恶意扩展,并通过 darculatheme.com 域名抢注、官方 Dracula 主题存储库等一系列举措增强了概括站的可信性。
正版 Dracula (域名为 draculatheme.com) 是一款流行的配色方案,因炫酷的暗黑模式和高对比度的色调而被大量开发人员使用,在 VSCode Marketplace 上安装量超过 700 万次。
山寨版 “Dracula Official” 扩展使用了正版 Darcula 主题的代码,但额外包括一个附加脚本,用于收集系统信息,包括主机名、已安装的扩展数量、设备的域名和操作系统平台,并通过 HTTPS POST 请求将其发送到远程服务器。
“30 分钟。30 分钟是我们开发、发布和完善 Visual Studio Code 扩展所花费的时间,该扩展可以改变你的集成开发环境的颜色,同时将你的所有源代码泄露到远程服务器。我们编写了代码、设计了资产、注册了域名、发布了扩展、生成了虚假评论、得到了第一个受害者,并在 VSCode Marketplace 上达到热门状态,并确认安装在了多家市值数十亿美元的公司内,所有这一切都在 30 分钟内完成。
我们正处于安全应用程序和环境的顶峰,但只需 30 分钟即可绕过最复杂的安全环境。”
在研究人员没有采取任何措施主动推广的前提下,当用户搜索 “Darcula Theme” 时,显示在第一页的就是该虚假扩展,而它还是唯一经过验证的发布者。在一天时间内,就产生了 100 多名不同的受害者。
几天后,一家市值 4830 亿美元的上市公司成为新的受害者。此后又新增了数十家市值达数十亿美元的公司,以及全球最大的安全公司之一和某个国家的司法法院网络。
研究人员指出,“这向我们证明了这种攻击载体的巨大危险性...... 在亲身体验了创建和发布恶意扩展是多么容易之后,我们知道了在评估 VSCode 扩展的风险时需要注意什么。”
在深入研究 VSCode Marketplace 的威胁状况后,研究人员发现目前托管在 VSCode Marketplace 上的扩展中:
- 1,283 个扩展包含已知的恶意依赖项,总计安装量达 2.29 亿次。
- 87 个扩展尝试读取主机系统上的 /etc/passwd 文件。
- 8161 个扩展通过硬编码 IP 地址进行通信。
- 1,452 个扩展在主机上运行未知的可执行二进制文件或 DLL。
- 267 个扩展已验证其中嵌入的硬编码秘密。
- VirusTotal 对 145 个扩展的代码和资源进行了高可信度标记。
- 2,304 个扩展使用其他发布者的 Github 代码库作为其官方列出的代码库,这意味着存在山寨扩展。
研究人员认为,VSCode 扩展存在安全设计缺陷,譬如缺乏权限模型、VSCode 扩展缺乏限制等。正式因为 VSCode Marketplace 上缺乏严格的管控和审查机制,才纵容了一些恶意行为的滋生;而随着平台用户的增长,滥用情况也会越来越多。
“从数字可以看出,Visual Studio Code Marketplace 上有大量的扩展对组织构成风险。VSCode 扩展是一种被滥用和暴露的攻击垂直领域,具有零可见性、高影响和高风险。这个问题对组织构成了直接威胁,值得安全社区的关注。”
目前,研究人员已经将检测到的所有恶意扩展都报告给了微软以进行删除。希望微软能在接下来的几个月内对安全设计缺陷进行修复。