针对开发者的供应链攻击( 二 )


这里要强调的是,不要盲目地信任每一个工作区 。

针对开发者的供应链攻击

文章插图
Visual Studio代码工作区信任对话框
开发者应该寻找和考虑哪些代码不应该被信任的可疑迹象?在其他示例中,应该引起开发者警惕的迹象包括:
较低的下载量;
论坛上共享的项目;
灰色区域;
一般未经证实的来源;
未知的人;
在执行IDE任务之前,应通过审计项目目录中的文件以查找可疑或恶意命令来验证.vscode/tasks.json文件,尤其是从未知源下载时 。
针对开发者的供应链攻击

文章插图
恶意生成任务的示例
恶意命令可以隐藏在tasks.json文件下并伪装成生成命令 。当开发者试图生成之前盲目信任的项目时,开发者设备将执行远程代码,这可能是恶意的 。攻击者还可以通过在常规生成命令之间隐藏恶意命令,使有效负载更为隐蔽,这将减少开发者的怀疑 。
在模拟中,我们通过Pastebin在远程服务器上放置了一个脚本 。这是一种被一些攻击者滥用的方法,将其恶意有效载荷发送到受感染的设备中 。这项技术对攻击者的好处是可以远程更改有效载荷 。例如,在成功感染后,可以将有效负载更改为无害的内容 。
【针对开发者的供应链攻击】
针对开发者的供应链攻击

文章插图
使用Visual Studio
Visual Studio是Microsoft用于.NET和C++开发的专有IDE,它没有工作区信任功能 。因此,开发者在加载不受信任的项目文件和执行生成时应该格外小心 。恶意的生成前或生成后任务可能会被注入到文件中,从而导致从生成开始就执行不必要的执行 。
针对开发者的供应链攻击

文章插图
Visual Studio项目文件预生成任务命令示例
针对开发者的供应链攻击

文章插图
嵌入预生成PowerShell执行的概念验证示例
针对开发者的供应链攻击

文章插图
使用其他IDE
在Eclipse IDE中,仍然可以注入生成命令 。因此,文件是不同的 。首先,ExternalToolBuilder的生成命令必须在.project文件中指定,参考在. externaltoolbuilders文件夹中定义实际执行命令的另一个文件 。通过将多个生成命令链接在一起,我们可以实现与Visual Studio Code中相同的多个命令执行 。
针对开发者的供应链攻击

文章插图
.project文件节链接生成执行规范的示例
针对开发者的供应链攻击

文章插图
生成事件外部命令规范
由于使用外部生成工具的项目文件注入适用于基本IDE的范围,因此它仅适用于实际代码编译为二进制文件的语言 。这包括Java和C/ c++,但不包括像php这样的语言,因为不执行生成 。
NetBeans IDE主要用于Java开发,尽管它还通过第三方扩展支持PHP、html5、JavaScript或C/C++开发 。Java开发项目可以利用Maven、Gradle或Ant作为其依赖关系管理和生成自动化工具 。因此,项目和生成定义可能不同 。然而,所有这些工具都支持将第三方流程作为生成前或生成后操作来执行 。在这种情况下,攻击者可以注入恶意代码,并希望开发者不会注意到并不情愿地执行 。
对于Ant,注入可以在nbproject/build-impl.xml文件中完成,方法是将以下代码片段添加到一个合适的目标标记中:


推荐阅读