Exchange Server is run in many environments, including physical systems, VMs in public and private cloud environments, and Windows operating systems. Regardless of the environment, the program is located on a physical system or a VM. This environment, whether physical or virtual, is known as the security boundary.
If all code within the boundary has access to all data within that boundary, no action is required. If this is not the case, the boundary is said to be multi-tenant. The vulnerabilities that have been found make it possible for any code that is running in any process within that boundary to read any other data within that boundary. This is true even under reduced permissions. If any process in the boundary is running untrusted code, that process could use these vulnerabilities to read data from other processes.
To protect against untrusted code in a multi-tenant boundary, do either of the following:
- Remove the untrusted code.
- Turn on KVAS to protect against process-to-process reads. This will have a performance effect. See the earlier sections in this article for detailed information.
For more information about how to enable KVAS for Windows, see KB 4072698.
Example scenarios (KVAS is strongly recommended)
Scenario 1
An Azure VM runs a service in which untrusted users can submit JavaScript code that is run by having limited permissions. On the same VM, Exchange Server is running and managing data that should not be accessible to those untrusted users. In this situation, KVAS is required to protect against disclosure between the two entities.
Scenario 2
An on-premises physical system that hosts Exchange Server can run untrusted third-party scripts or executables. It is necessary to enable KVAS to protect against the disclosure of Exchange data to the script or executable.
Note Just because an extensibility mechanism within Exchange Server is being used, that does not automatically make it unsafe. These mechanisms can be used safely within Exchange Server as long as each dependency is understood and trusted. Additionally, there are other products that are built on Exchange Server that may require extensibility mechanisms to work correctly. Instead, as your first action, review each use to determine whether the code is understood and trusted. This guidance is provided to help customers determine whether they have to enable KVAS because of larger performance implications.