理论上,是的。
首先,介绍一下 Wine 的背景。Wine为运行 Windows 可执行文件提供了一个可执行加载程序。还可选地安装或使用了此处描述的 binfmt 处理程序,这是 linux 内核如何推断要执行的加载程序 - 例如,内核中内置的某处是用于 Linux 的 ELF 文件的 binfmt 处理程序。然后,Wine 运行时将来自这些可执行文件的函数调用转换为它们等效的 Linux 系统调用。Wine FAQ 处理了wine 作为模拟器的问题。
那么,回到你的问题——Windows 恶意软件会感染 Linux 机器吗?我理论上说是的 - 以下是您面临的各种威胁:
- 格式处理程序中的错误。如果一个特制的可执行文件导致 Wine 错误地加载 PE 文件,那么您很可能能够利用它。
- Wine 函数翻译中的错误。这与说“Windows API 中的错误”相同,如果您愿意的话 - 如果在 Wine 中翻译的某些函数容易受到缓冲区溢出等的影响,那么它们就可以被利用。
- 函数调用被翻译的事实。这一事实本身就意味着可能发生恶意活动。
- Wine 安装的设置和限制。您映射了哪些文件系统?可执行文件可以逃脱这个“chroot”吗?
这里有一个关键的附带条件——意识到或计划感染 Wine。如果编写恶意软件时期望它可以在 Wine 上运行,那么它可以开始使用 Wine 特定的漏洞利用,可能检测到 Z: 映射到 / 并执行适当的操作。我上面列表中的前面几点是最不可能的,但如果它们发生,也是最具破坏性的。
然而,大多数恶意软件不是为 Wine 编写的。您几乎可以将 Wine 视为一个单独的构建目标,因为它实现 Windows API 的方式与 Windows 实现 API 的方式不同。大多数恶意软件都直接针对 Windows,所以我预计损坏只会发生在“Windows”安装上。事实上,有些恶意软件可能无法运行,Wine 开发人员假设严格使用 API 函数,而 Windows 允许不同的东西。
因此,长话短说,Wine 允许您执行任意 Windows 程序,从而大大增加了您的攻击面。适用于 Wine 的一般规则与适用于任何软件的一般规则相同:
- 你需要它吗?如果没有,请不要安装它。
- 它是最新的吗?如果没有,请更新它。
- 小心你用它运行的东西。它不能替代小心下载、访问和运行的内容。