usr/etc/Get-SpeCtrlSettings.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
function Get-SpecCtrlSettings {
  [CmdletBinding()]param()

  begin {
    New-Delegate ntdll {
      int NtQuerySystemInformation([int, buf, int, buf])
    }

    $buf = [Byte[]](,0 * 4) # [Byte[]]::new([Marshal]::SizeOf([UInt32]0))
    # SystemKernelVaShadowInformation = 0n196
    if (($nts = $ntdll.NtQuerySystemInformation.Invoke(196, $buf, $buf.Length, $null)) -ne 0) {
      throw (ConvertTo-ErrMessage -NtStatus $nts)
    }
    $ks = ConvertTo-BitMap -Value ([BitConverter]::ToUInt32($buf, 0)) -BitMap {
       KvaShadowEnabled           : 1
       KvaShadowUserGlobal        : 1
       KvaShadowPcid              : 1
       KvaShadowInvpcid           : 1
       KvaShadowRequired          : 1
       KvaShadowRequiredAvailable : 1
       Reserved                   : 26
    }

    $buf.Clear() # using same buffer, simply clear it
    # SystemSpeculationControlInformation = 0n201
    if (($nts = $ntdll.NtQuerySystemInformation.Invoke(201, $buf, $buf.Length, $null)) -ne 0) {
      throw (ConvertTo-ErrMessage -NtStatus $nts)
    }
    $sc = ConvertTo-BitMap -Value ([BitConverter]::ToUInt32($buf, 0)) -BitMap {
       BpbEnabled                               : 1
       BpbDisabledSystemPolicy                  : 1
       BpbDisabledNoHardwareSupport             : 1
       SpecCtrlEnumerated                       : 1
       SpecCmdEnumerated                        : 1
       IbrsPresent                              : 1
       StibpPresent                             : 1
       SmepPresent                              : 1
       SpeculativeStoreBypassDisableAvailable   : 1
       SpeculativeStoreBypassDisableSupported   : 1
       SpeculativeStoreBypassDisabledSystemWide : 1
       SpeculativeStoreBypassDisabledKernel     : 1
       SpeculativeStoreBypassDisableRequired    : 1
       BpbDisabledKernelToUser                  : 1
       SpecCtrlRetpolineEnabled                 : 1
       SpecCtrlImportOptimizationEnabled        : 1
       EnhancedIbrs                             : 1
       HvL1tfStatusAvailable                    : 1
       HvL1tfProcessorNotAffected               : 1
       HvL1tfMigitationEnabled                  : 1
       HvL1tfMigitationNotEnabled_Hardware      : 1
       HvL1tfMigitationNotEnabled_LoadOption    : 1
       HvL1tfMigitationNotEnabled_CoreScheduler : 1
       EnhancedIbrsReported                     : 1
       MdsHardwareProtected                     : 1
       MbClearEnabled                           : 1
       MbClearReported                          : 1
       TsxCtrlStatus                            : 2
       TsxCtrlReported                          : 1
       TaaHardwareImmune                        : 1
       Reserved                                 : 1
    }
  }
  process {}
  end {
    $ks
    ''
    $sc
  }
}