VS Code 新 Bug:疯狂创造垃圾文件+自动修改用户文件

发表于:2022-3-21 09:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:罗奇奇    来源:开源中国

#
漏洞
  近日, 用户 na-an 发现:使用微软的 VSCode 编辑器打开文件夹时,目录中会自动生成许多带有无效代码的空文件。该用户随即在 VSCode GitHub 仓库中发布了相关 Issue,随机引发了热烈讨论,很多用户表示自己也饱受该 Bug 的困扰。
  有些文件名称很短,有些名称很长,这些文件的名称不是有效的 unicode ,比如图中的 \312\316\361 是八进制。随机创建的文件似乎来自正在运行的进程内存转储,包含一些通常出现在可执行文件中的字符串,看起来像指针出现了堆栈损坏或越界问题。
  最可怕的是,除了疯狂创造空文件外,VSCode 还会随机修改用户文件,比如用户 daantimmer 的所有头文件的内容都被清了,通通变成 0 KB(希望有备份)
  该 Bug 的影响范围不限于当前的工作区文件夹,它甚至能清空一些系统文件/文件夹:
  该 Bug 在 WindowsLinux 等不同系统中都出现过,但受害者有一个非常有趣的共同点:他们都写 C++ 代码,并使用 VSCode 的 C++ 扩展。有人尝试把所有扩展禁用所有扩展后,问题就消失了;如果将 C++ 扩展切换到稳定版本(1.8.4),问题也会消失。
  如此一来就破案了( issues 9041),原来 Bug 的源头是 VSCode C++ 扩展 1.9.4 预发行版本,该版本并不稳定,出现了上述的文件系统 Bug。但如果用户勾选了 VSCode 自动更新功能,则会自动更新到预发行的 C++ 扩展 1.9.4 版本。
  然而,C++ 扩展的开发者也不知道 1.9.4 版本具体到底是哪里出现了问题,该内存损坏问题似乎跟 C++ 扩展早已存在,但无法解决的几个文件损坏 Bug: #4573 和 #5061 有关。目前的推测是 1.9.4 版本意外使用了未初始化的内存,由于修改了不遵循现代 C++ 编码指南的外部第三方子系统,可能会阻止或检测到未初始化指针的使用,指针问题导致出现了一些文件系统的问题。
  用户解决该问题的方法也很简单,不再安装 1.9.4 版本的 C++ 扩展即可,1.9.5、1.9.3 、 1.8.4,或是 最新发布的 1.9.6 版本都不存在该问题。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号