[NTOSKRNL] Forbid processes without the Tcb prvilege to perform a user-mode hard-error BSOD.

This commit is contained in:
Hermès Bélusca-Maïto
2018-04-01 22:39:31 +02:00
parent ed06b843fb
commit f0729b30bb
+12 -2
View File
@@ -132,8 +132,18 @@ ExpRaiseHardError(IN NTSTATUS ErrorStatus,
/* Check if this error will shutdown the system */
if (ValidResponseOptions == OptionShutdownSystem)
{
/* Check for privilege */
if (!SeSinglePrivilegeCheck(SeShutdownPrivilege, PreviousMode))
/*
* Check if we have the privileges.
*
* NOTE: In addition to the Shutdown privilege we also check whether
* the caller has the Tcb privilege. The purpose is to allow only
* SYSTEM processes to "shutdown" the system on hard errors (BSOD)
* while forbidding regular processes to do so. This behaviour differs
* from Windows, where any user-mode process, as soon as it has the
* Shutdown privilege, can trigger a hard-error BSOD.
*/
if (!SeSinglePrivilegeCheck(SeTcbPrivilege, PreviousMode) ||
!SeSinglePrivilegeCheck(SeShutdownPrivilege, PreviousMode))
{
/* No rights */
*Response = ResponseNotHandled;