17611538698
info@21cto.com

VS Code 任务配置文件正被滥用运行恶意代码

安全 1 24 18小时前
图片

近日,安全人员发现了新的代码存储库漏洞,其中在 tasks.json 配置文件中存在恶意代码,这些代码被设置为在 Visual Studio Code中打开文件夹时自动执行。

在这种情况下,VS Code 的运行亦符合用户预期,看不出太多变化。

tasks.json 文件允许开发者将命令行工具集成到编辑器中,以便可以使用“运行任务”或“运行生成任务”命令来执行这些工具。此外,还可以选择在打开包含该任务的文件夹时自动运行这些任务。当 tasks.json 文件特定于某个代码仓库时,它位于隐藏的 .vscode 文件夹里。

VS Code 有两层保护机制防止不必要的任务自动运行。

一是“允许自动任务”设置,默认开启。二是文件夹默认不受信任,任务不会在不受信任的文件夹中运行。打开包含自动执行任务的文件夹时,会弹出警告提示“创建终端的进程需要执行代码”。

尽管如此,警告对话框突出显示了“信任文件夹并继续”选项,其视觉效果与文本内容并不相符。此外,VS Code 还提供了一个选项,允许信任父文件夹内的所有文件夹;如果之前已选中此选项,则默认情况下会信任新的子文件夹。

图片
图1 VS Code 在打开包含自动运行任务的文件夹时会显示警告对话框,但会突出显示“继续”选项,如同暗黑模式

安全公司也往往会夸张其发现的风险,鉴于这并非 VS Code 的漏洞,这个问题或许被夸大了;真正的问题在于恶意代码库的存在,根据jamf 团队称,这些代码库通常“以招聘流程或技术任务为幌子”被创建。即使没有恶意自动运行的任务,受感染的代码库也很危险。

不过,VS Code 在这方面的设计确实还有改进的空间。“一个文本编辑器仅仅通过打开文件夹就能运行隐藏的代码,这太可怕了……如果用户认为信任某个文件能提高工作效率,他们总是会点击信任按钮。软件设计如此容易出错,我们也不能责怪他们。”一位开发者如此评论道。

本周发现的这个特定案例中有一个后门,攻击者可以利用该后门进行“远程代码执行、系统指纹识别和持久的C2(命令与控制)通信”。它利用了tasks.json的一个特性,允许根据操作系统运行不同的命令,并针对macOS、Windows和Linux进行了相应的修改。而恶意JavaScript代码通过curl工具从远端位置获取。 

这段恶意代码库托管在 GitHub 上,现已被移除,而 JavaScript 恶意代码则托管在 Vercel 上。将恶意代码托管在外部(并不是代码库本身)会增加 GitHub 安全工具扫描的难度。

那么,开发者该如何保护自己?

研究人员指出:在将代码库标记为可信之前,“审查其内容至关重要”,但当代码量巨大时,这几乎不可能做到。更重要的是,他们建议“在与第三方代码库交互时一定要慎之又慎”。 

如果在隔离的、临时的环境中进行开发,这样运行不受信任的代码的后果就不那么严重了。

“在容器内进行开发应该成为一种默认的工作流程,“一位开发者如此提示大家

作者:洛逸

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信