安全指南

一般安全原则

以下原则是安全使用任何应用程序的基础。

  • 保持软件最新。良好安全实践的原则之一是保持所有软件版本和补丁的最新状态。激活 Oracle VirtualBox 更新通知,以便在新 Oracle VirtualBox 版本可用时收到通知。更新 Oracle VirtualBox 时,不要忘记更新增强功能包(Guest Additions)。同时保持宿主操作系统和客户机操作系统最新。

  • 限制对关键服务的网络访问。使用适当的方法,例如防火墙,来保护您的计算机和客户机免受外部访问。为虚拟机选择适当的网络模式有助于将宿主网络与客户机网络分开,反之亦然。

  • 遵循最小权限原则。最小权限原则指出,用户应被授予执行其工作所需的最小权限。始终以普通用户身份执行 Oracle VirtualBox。我们强烈不建议任何人以系统权限执行 Oracle VirtualBox

    创建配置文件时,请选择限制性权限,例如创建 /etc/default/virtualbox 时,请参阅自动安装选项。首选模式 0600。

  • 监控系统活动。系统安全建立在三大支柱之上:良好的安全协议、适当的系统配置和系统监控。审计和审查审计记录满足第三项要求。系统中的每个组件都具有一定程度的监控能力。遵循本文件中的审计建议,并定期监控审计记录。

  • 及时了解最新的安全信息。Oracle 不断改进其软件和文档。请每年查看此说明的修订版。

安全安装和配置

安装概述

Oracle VirtualBox 基本软件包应仅从受信任的来源下载,例如官方网站 https://virtualbox.ac.cn。软件包的完整性应通过官方网站上提供的 SHA256 校验和进行验证。

有关受支持宿主机的通用 Oracle VirtualBox 安装说明,请参阅安装详情

在 Windows 宿主机上,安装程序可用于禁用 USB 支持、桥接网络支持、仅宿主网络支持和 Python 语言绑定。请参阅在 Windows 宿主机上安装。所有这些功能默认都是启用的,但如果任何虚拟机不需要相应的功能,禁用其中一些功能可能是合适的。Python 语言绑定仅在外部 Python 应用程序需要使用 Oracle VirtualBox API 时才需要。特别是 USB 支持和两种网络模式的支持需要主机上安装 Windows 内核驱动程序。因此,禁用这些选定的功能不仅可以限制用户使用某些功能,还可以最小化潜在攻击者可利用的攻击面。

通常情况是安装完整的 Oracle VirtualBox 软件包。安装必须使用系统权限完成。所有 Oracle VirtualBox 二进制文件都应作为普通用户执行,绝不能作为特权用户执行。

Oracle VirtualBox 扩展包提供附加功能,必须单独下载和安装,请参阅安装 Oracle VirtualBox 和扩展包。与基本软件包一样,应验证扩展包的 SHA256 校验和。由于安装需要系统权限,Oracle VirtualBox 在安装扩展包期间会要求输入系统密码。

安装后配置

通常,Oracle VirtualBox 组件不需要进行安装后配置。但是,在 Oracle Solaris 和 Linux 宿主机上,需要为执行虚拟机并应能访问某些宿主资源的用户的配置适当的权限。例如,Linux 用户必须是 vboxusers 组的成员才能将 USB 设备传递给客户机。如果虚拟机需要访问串行宿主接口,则必须授予用户适当的权限才能访问该设备。这同样适用于其他资源,如裸分区、DVD/CD 驱动器和声音设备。

安全功能

本节概述了 Oracle VirtualBox 提供的特定安全机制。

安全模型

Oracle VirtualBox 这样的虚拟机监视器 (VMM) 的一个特性是,通过在宿主操作系统上作为用户进程运行的受保护环境(虚拟机)中执行客户机来封装客户机。客户机无法直接与硬件或其他计算机通信,只能通过 VMM 进行通信。VMM 为客户机提供模拟的物理资源和设备,客户机操作系统通过这些资源和设备执行所需任务。虚拟机设置控制提供给客户机的资源,例如客户机内存量或客户机处理器数量,以及为该客户机启用的功能,例如远程控制、某些屏幕设置等。请参阅通用设置

虚拟机安全配置

虚拟机配置的几个方面需要考虑安全性。

网络

虚拟机的默认网络模式是 NAT,这意味着虚拟机就像路由器后面的计算机一样,请参阅网络地址转换 (NAT)。客户机是属于该虚拟机的私有子网的一部分,客户机 IP 在外部不可见。这种网络模式无需任何额外设置即可工作,并且适用于许多用途。请记住,NAT 允许访问宿主操作系统的回环接口。

如果使用桥接网络,虚拟机就像与宿主机位于同一网络中的计算机一样,请参阅桥接网络。在这种情况下,客户机与宿主机具有相同的网络访问权限,因此可能需要防火墙来保护子网上的其他计算机免受潜在恶意客户机的侵害,以及保护客户机免受其他计算机的直接访问。在某些情况下,考虑在 NAT 模式下为特定端口使用转发规则而不是使用桥接网络是值得的。

某些设置根本不需要虚拟机连接到公共网络。内部网络(请参阅内部网络)或仅宿主网络(请参阅仅宿主网络)通常足以使虚拟机之间相互连接,或仅将虚拟机与宿主机连接而不连接到公共网络。

远程虚拟机的安全性

远程虚拟机需要安全协议来控制对提供访问的 VRDP 服务器的虚拟机访问。您可以使用 VBoxManage 或 VirtualBox 管理器中的虚拟机设置更改安全方法,如RDP 加密中所述。

默认的安全方法是 TLS,它需要证书才能运行。您可以设置自定义证书,或接受默认的自签名证书。有关更多信息,请参阅RDP 加密

VRDP 远程桌面认证

当使用 Oracle 提供的 Oracle VirtualBox 扩展包进行 VRDP 远程桌面支持时,您可以选择使用各种方法配置 RDP 身份验证。“null”方法非常不安全,应在公共网络中避免使用。请参阅RDP 身份验证

剪贴板

共享剪贴板使用户能够在宿主机和客户机之间共享数据。在双向模式下启用剪贴板可使客户机读写宿主机剪贴板。宿主机到客户机模式和客户机到宿主机模式将访问限制为单向。如果客户机能够访问宿主机剪贴板,它也可能潜在地访问通过剪贴板共享的宿主机的敏感数据。

如果客户机能够从宿主机剪贴板读取或写入宿主机剪贴板,那么通过网络连接到客户机的远程用户也将获得此能力,这可能不合适。因此,新机器的共享剪贴板默认禁用。

共享文件夹

如果任何主机文件夹与客户机共享,则通过网络连接到客户机的远程用户也可以访问这些文件,因为无法针对远程用户选择性地禁用文件夹共享机制。

CD/DVD 直通

启用 CD/DVD 直通功能可使客户机对 CD/DVD 驱动器执行高级操作,请参阅CD/DVD 支持。这可能会带来安全风险,因为客户机可能会覆盖 CD/DVD 介质上的数据。

USB 直通

将 USB 设备传递给客户机可使客户机完全访问这些设备,请参阅USB 设置。例如,除了读写外部 USB 磁盘的分区内容外,客户机还将能够读写该磁盘的分区表和硬件数据。

配置和使用认证

Oracle VirtualBox 的以下组件可以使用密码进行身份验证

  • 使用远程 iSCSI 存储且存储服务器需要身份验证时,可以使用 VBoxManage storageattach 命令选择性地提供发起方密钥。只要没有通过命令行选项 --settingspwfile 提供设置密码,此密钥就会未加密地存储在机器配置中,因此可能在宿主机上可读。请参阅iSCSI 服务器VBoxManage storageattach

  • 当使用 Oracle VirtualBox Web 服务远程控制 Oracle VirtualBox 宿主机时,与 Web 服务的连接通过多种方式进行身份验证。这在 Oracle VirtualBox 软件开发工具包 (SDK) 参考中详细描述。请参阅Oracle VirtualBox 编程接口

潜在不安全操作

Oracle VirtualBox 的以下功能可能带来安全问题

  • 在虚拟机传送(teleporting)时,机器内存内容从一台宿主机传输到另一台宿主机的数据流未加密。因此,能够访问传输数据网络的第三方可能会截获这些数据。可以使用 SSH 隧道来保护两台宿主机之间的连接。但是,当考虑通过不受信任的网络传送虚拟机时,首先要回答的问题是两台虚拟机如何以合理的性能安全地访问相同的虚拟磁盘映像。

    如果网络不够受信任,每次传送时都应更改密码,因为第三方在密码哈希在目标和源宿主机之间传输时可能会检测到未加密的密码哈希。

  • 启用页面融合(Page Fusion)后,可能会出现侧信道,使恶意客户机能够确定在同一宿主机上运行的另一台虚拟机的地址空间布局。例如,DLL 通常加载的位置。这种信息泄漏本身是无害的,但恶意客户机可能会利用它来优化通过无关攻击向量对该虚拟机的攻击。建议仅在您认为在您的设置中这不是问题时才启用页面融合。

  • 当使用 Oracle VirtualBox Web 服务远程控制 Oracle VirtualBox 宿主机时,通过 SOAP XML 传输 API 调用的 Web 服务连接未加密。它们默认使用纯 HTTP。这是一个潜在的安全风险。有关 Web 服务的详细信息,请参阅Oracle VirtualBox 编程接口

    Web 服务默认不启动。请参阅自动启动 Oracle VirtualBox Web 服务以了解如何启动此服务以及如何启用 SSL/TLS 支持。它必须以普通用户身份启动,并且只能控制该用户的虚拟机。默认情况下,该服务绑定到 localhost,阻止任何远程连接。

  • 通过 UDP 隧道网络附件发送的流量未加密。您可以选择在主机网络级别使用 IPsec 进行加密,或在客户机网络中使用加密协议,例如 SSH。其安全特性与桥接以太网相似。

  • 由于旧版 Windows 的缺陷,不建议在早于带 Service Pack 1 的 Windows Vista 版本上使用 Oracle VirtualBox

加密

Oracle VirtualBox 的以下组件使用加密来保护敏感数据

  • 当使用 Oracle 提供的 Oracle VirtualBox 扩展包进行 VRDP 远程桌面支持时,RDP 数据可以可选地加密。请参阅RDP 加密。只有采用 TLS 协议的增强型 RDP 安全方法 (RDP5.2) 提供安全连接。标准 RDP 安全 (RDP4 和 RDP5.1) 容易受到中间人攻击。

  • 当使用 Oracle 提供的 Oracle VirtualBox 扩展包进行磁盘加密时,磁盘映像中存储的数据可以可选地加密。请参阅磁盘映像加密。此功能仅涵盖磁盘映像内容。虚拟机的所有其他数据都未加密存储,包括虚拟机的内存和设备状态,这些数据作为保存状态的一部分存储,无论是在显式创建时还是作为正在运行的虚拟机快照的一部分。

安全建议

本节包含针对特定问题的安全建议。默认情况下,VirtualBox 会将虚拟机配置为安全运行,但并非总是能够在不进行额外用户操作(例如宿主操作系统或固件配置更改)的情况下实现。

CVE-2018-3646

此安全问题影响一系列具有嵌套分页的 Intel CPU。AMD CPU 预计不受影响(有待 AMD 直接确认)。此外,此问题不影响禁用硬件虚拟化或禁用嵌套分页的虚拟机。

有关嵌套分页的更多信息,请参阅嵌套分页和 VPID

以下缓解选项可用。

禁用嵌套分页

通过禁用嵌套分页 (EPT),VMM 将构建影子页表以映射客户机中的页表。客户机无法在页表中插入任何可疑内容,因为 VMM 在映射之前会仔细验证每个条目。

作为禁用嵌套分页的副作用,某些 CPU 功能将无法提供给客户机。这些功能包括 AVX、AVX2、XSAVE、AESNI 和 POPCNT。并非所有客户机都能在安装后适应这些功能的丢失。此外,对于某些客户机,尤其是在 SMP 配置中,禁用嵌套分页可能会导致稳定性问题。最后,某些工作负载可能会出现性能下降。

刷新一级数据缓存

这旨在在运行客户机代码时从一级数据缓存中移除潜在的敏感数据。然而,由于超线程设置共享一级缓存,这变得困难,从而可能让一对中的另一个线程用用户不希望客户机看到的数据重新填充缓存。此外,刷新一级数据缓存通常并非没有性能副作用。

最新的 CPU 微码是缓存刷新缓解措施的先决条件。有些宿主操作系统可能会自动安装这些,尽管传统上这是系统固件最好执行的任务。因此,请向您的系统/主板制造商查询最新的固件更新。

我们建议在宿主机上禁用超线程。这通常通过固件设置完成,但某些操作系统也提供禁用 HT 的方法。在某些情况下,它可能默认禁用,但请验证,因为缓解措施的有效性取决于它。

VirtualBox 采取的默认操作是在线程计划执行客户机代码时(而不是在每次虚拟机进入时)刷新一级数据缓存。这降低了性能影响,同时假设宿主操作系统在不采取预防措施的情况下不会处理来自中断处理程序和类似来源的安全敏感数据。

使用 VBoxManage modifyvm --l1d-flush-on-vm-entry 选项提供更积极的刷新选项。启用后,一级数据缓存将在每次虚拟机进入时刷新。性能影响比默认选项更大,尽管这当然取决于工作负载。产生大量虚拟机退出的工作负载(如网络、VGA 访问等)可能会受到最大影响。

对于不关心此安全问题的用户,可以使用 VBoxManage modifyvm name --l1d-flush-on-sched off 命令禁用默认的缓解措施。

CVE-2018-12126、CVE-2018-12127、CVE-2018-12130、CVE-2019-11091

这些安全问题影响从 Nehalem 开始的一系列 Intel CPU。CVE-2018-12130 也影响部分 Atom Silvermont、Atom Airmont 和 Knights 系列 CPU,但影响范围非常有限,应由宿主操作系统处理,因此 Oracle VirtualBox 不受影响。泄漏只发生在进入和离开 C 状态时。

以下缓解选项可用。

缓冲区覆盖和禁用超线程

首先,最新的 CPU 微码是缓冲区覆盖(清除)缓解措施的先决条件。有些宿主操作系统可能会自动安装这些,尽管传统上这是系统固件最好执行的任务。请向您的系统或主板制造商查询最新的固件更新。

此缓解措施旨在在运行客户机代码之前从受影响的缓冲区中移除潜在的敏感数据。由于这意味着每次调度客户机时都需要额外的工作,因此可能会有一些性能副作用。

我们建议在受 CVE-2018-12126 和 CVE-2018-12127 影响的宿主机上禁用超线程 (HT),因为受影响的缓冲区集通常在线程对之间共享,因此会导致线程之间发生泄漏。这通常通过固件设置完成,但某些操作系统也提供禁用 HT 的方法。在某些情况下,它可能默认禁用,但请验证,因为缓解措施的有效性取决于它。

Oracle VirtualBox 采取的默认操作是在线程计划执行客户机代码时(而不是在每次虚拟机进入时)清除受影响的缓冲区。这降低了性能影响,同时假设宿主操作系统在不采取预防措施的情况下不会处理来自中断处理程序和类似来源的安全敏感数据。

VBoxManage modifyvm 命令通过 --mds-clear-on-vm-entry 选项提供更积极的刷新选项。启用后,受影响的缓冲区将在每次虚拟机进入时清除。性能影响比默认选项更大,尽管这当然取决于工作负载。产生大量虚拟机退出的工作负载(如网络、VGA 访问等)可能会受到最大影响。

对于不关心此安全问题的用户,可以使用 VBoxManage modifyvm name --mds-clear-on-sched off 命令禁用默认的缓解措施。