文章插图
Ant的注入点和触发生成时的命令执行示例
当开发者使用Maven作为生成工具时,可以通过更改项目文件夹中的pom.xml来实现相同的目标 。这一次,在生成标记中使用了org.codehaus.mojo插件 。所使用的语法类似于Ant所使用的语法 。
文章插图
Maven第三方执行示例
对于Gradle,Groovy语言脚本用于位于App/build.gradle内部的生成定义,并且对所选任务内的字符串调用execute()函数将触发代码执行 。
文章插图
Gradle第三方执行示例
尽管“打开项目”对话框有一个“信任项目生成脚本”选项,但其功能仅对Gradle项目有效 。如果未选中,它将阻止Gradle脚本启动,因此,当加载项目作为CVE-2020-11986修复时,代码执行是可能的 。尽管如此,当用户决定手动执行生成时,不会显示进一步的对话框,并且生成被认为是可信的 。
文章插图
NetBeans中的“信任项目生成脚本”复选框
IntelliJ IDEA是另一个用于Java、Kotlin、Groovy和其他基于Java虚拟机(JVM)的语言开发的IDE 。它还支持Ant生成脚本 。加载包含Ant生成脚本的项目会触发一个对话框警告,提示它可能会执行潜在的恶意代码,如果它不是来自可信的源,建议使用安全模式 。当开发者试图在安全模式下执行生成时,IDE会警告用户该操作只能在可信模式下完成 。
文章插图
IntelliJ IDEA显示潜在恶意生成脚本的警告
文章插图
IntelliJ IDEA生成安全模式生成警告
PyCharm是用于Python开发的IDE 。Python脚本通常不会在执行之前编译 。然而,开发者仍然可以指定自定义运行/调试配置,允许在实际脚本执行之前执行第三方二进制文件 。这可能用于脚本数据输入准备 。
文章插图
运行执行前的外部工具
该操作在项目内部被参考 。但是,实际的可执行规范存储在不同的位置,更具体地说,存储在 ~/.config/JetBrains/PyCharmXXXX/tools/External Tools.xml 。正如我们所看到的,该文件存储在用户主目录中,保护它不受攻击模型场景的影响,因为它需要修改本地文件系统 。
运行前任务参考
文章插图
运行前任务定义
文章插图
总结
研究人员使用执行恶意生成脚本的攻击场景评估了所有已识别的IDE,向这些生成脚本中注入恶意命令是可能的 。如上所述,一些IDE明确警告开发者恶意操作的可能性,除非项目配置将其标记为明确可信,否则不允许执行任务 。另一方面,一些IDE使用这样的假设,即当开发者打开一个项目或将其复制到他的工作区时,它会自动被信任,并且不需要任何进一步的操作 。
无论我们使用什么IDE,总会权衡安全性和可用性 。开发者不应该盲目地相信互联网上的每一个开源项目 。在执行任何生成操作之前,开发者至少应该知道他们有可能成为目标并审查生成脚本 。
推荐阅读
- 干货| 如何实现VLAN间的通信
- RotaJakiro 双头龙,一个至少潜伏了3年的后门木马
- 运维工程师必知的十项Linux常识
- TouchEn nxKey键盘加密应用程序出现的许多漏洞很容易使其被黑化
- 答案是什么?ChatGPT和谷歌的搜索之战
- ChatGPT爆火, 是AI的“狂飙”吗
- 初学者轻松学习 JavaScript 的路线图
- 一键恢复和重装系统的区别是什么
- 如何区分市面上的液晶显示屏?找到最适合你的液晶显示屏!
- 可以提高 ssh 安全性的几个配置
