7月19日那场震荡环球的「史上最大规模IT故障」,影响还在连续……
25日,情形最为严重、持续韶光也最长的航司——达美航空,终于完成了系统修复,规复正常运营。期间,共有2500多个航班被迫取消。
27日,美国奥兰多警察局发布寻人缘由称,一名83岁男子在因CrowdStrike宕机导致回家航班被取消后,已经失落踪一周了。
根据剖析和保险做事商Parametrix的打算,这次宕机事宜给财富500强企业带来了高达54亿美元的丢失。
而这种搞崩环球设备的操作,可以算是CrowdStrike家的传统艺能了。
首席实行官George Kurtz早在2010年的Windows XP时期,就曾在McAfee用一个更新搞崩了环球设备;跟CEO的作风类似的,CrowdStrike在过去的四个月里,差不多每30天就要搞垮一个操作系统!
终于,在7月27日,微软针对这次CrowdStrike导致的环球蓝屏事宜,给出了一份官方的剖析。
「Windows安全工具的集成与管理最佳实践」
而看完报告之后,网友纷纭开启了嘲讽模式:
「难道CrowdStrike的高层领导都睡着了?为什么连续几个月来每30天都会发生这么多事宜?」
「微软已经在言辞上尽可能地保持委婉了,但这绝对是对CrowdStrike的一记耳光!
」
CrowdStrike不知道如何展开事情,并且须要基本的质量担保(QA)实践辅导,我们很乐意教他们……
接着,便列出了一堆在用户模式下运行的功能,见告他们如何避免须要在内核模式下运行太多东西。
有人表示,自己在微软事情的朋友对此深表不满,每次有类似的宕机事宜,微软都得背黑锅。
「接口之以是这样设计,是由于不在内核模式下进行,就很难在实时文件系统过滤中得到足够的性能。这是困扰很多操作系统的难题。」
实际上,微软许可第三方代码加载到自己的内核,跟其他的紧张操作系统内核(Linux或Apple XNU之类)并没什么不同。
这次的问题紧张是,CrowdStrike在内核模式下做了很多本可以在用户模式下完成的事情。
接下来,就让我们看看,微软官方对付宕机事宜的详细剖析。
CrowdStrike事宜剖析
在博客中,微软阐明了为什么现在的安全产品,必须利用内核模式驱动程序。
为此,Windows也为第三方办理方案供应了安全方法。
报告中,CrowdStrike将缘故原由归根为内存安全问题,特殊是CSagent驱动程序中的越界读取访问违规
对付CrowdStrike给出的阐明,微软利用Microsoft WinDBG内核调试器和任何人都可免费谁用的几个扩展,来实行了如下剖析。
基于Microsoft对与该事宜干系的Windows缺点报告(WER)内核崩溃转储的剖析,可以不雅观察到反响这一点的环球崩溃模式:
FAULTING_THREAD: ffffe402fe868040READ_ADDRESS: ffff840500000074 Paged poolMM_INTERNAL_CODE: 2IMAGE_NAME: csagent.sysMODULE_NAME: csagentFAULTING_MODULE: fffff80671430000 csagentPROCESS_NAME: SystemTRAP_FRAME: ffff94058305ec20 -- (.trap 0xffff94058305ec20).trap 0xffff94058305ec20NOTE: The trap frame does not contain all registers.Some register values may be zeroed or incorrect.rax=ffff94058305f200 rbx=0000000000000000 rcx=0000000000000003rdx=ffff94058305f1d0 rsi=0000000000000000 rdi=0000000000000000rip=fffff806715114ed rsp=ffff94058305edb0 rbp=ffff94058305eeb0 r8=ffff840500000074 r9=0000000000000000 r10=0000000000000000r11=0000000000000014 r12=0000000000000000 r13=0000000000000000r14=0000000000000000 r15=0000000000000000iopl=0 nv up ei ng nz na po nccsagent+0xe14ed:fffff806`715114ed 458b08 mov r9d,dword ptr [r8] ds:ffff8405`00000074=????????.trapResetting default scopeSTACK_TEXT: ffff9405`8305e9f8 fffff806`5388c1e4 : 00000000`00000050 ffff8405`00000074 00000000`00000000 ffff9405`8305ec20 : nt!KeBugCheckEx ffff9405`8305ea00 fffff806`53662d8c : 00000000`00000000 00000000`00000000 00000000`00000000 ffff8405`00000074 : nt!MiSystemFault+0x1fcf94 ffff9405`8305eb00 fffff806`53827529 : ffffffff`00000030 ffff8405`af8351a2 ffff9405`8305f020 ffff9405`8305f020 : nt!MmAccessFault+0x29c ffff9405`8305ec20 fffff806`715114ed : 00000000`00000000 ffff9405`8305eeb0 ffff8405`b0bcd00c ffff8405`b0bc505c : nt!KiPageFault+0x369 ffff9405`8305edb0 fffff806`714e709e : 00000000`00000000 00000000`e01f008d ffff9405`8305f102 fffff806`716baaf8 : csagent+0xe14edffff9405`8305ef50 fffff806`714e8335 : 00000000`00000000 00000000`00000010 00000000`00000002 ffff8405`b0bc501c : csagent+0xb709effff9405`8305f080 fffff806`717220c7 : 00000000`00000000 00000000`00000000 ffff9405`8305f382 00000000`00000000 : csagent+0xb8335ffff9405`8305f1b0 fffff806`7171ec44 : ffff9405`8305f668 fffff806`53eac2b0 ffff8405`afad4ac0 00000000`00000003 : csagent+0x2f20c7ffff9405`8305f430 fffff806`71497a31 : 00000000`0000303b ffff9405`8305f6f0 ffff8405`afb1d140 ffffe402`ff251098 : csagent+0x2eec44ffff9405`8305f5f0 fffff806`71496aee : ffff8405`afb1d140 fffff806`71541e7e 00000000`000067a0 fffff806`7168f8f0 : csagent+0x67a31ffff9405`8305f760 fffff806`7149685b : ffff9405`8305f9d8 ffff8405`afb1d230 ffff8405`afb1d140 ffffe402`fe8644f8 : csagent+0x66aeeffff9405`8305f7d0 fffff806`715399ea : 00000000`4a8415aa ffff8eee`1c68ca4f 00000000`00000000 ffff8405`9e95fc30 : csagent+0x6685bffff9405`8305f850 fffff806`7148efbb : 00000000`00000000 ffff9405`8305fa59 ffffe402`fe864050 ffffe402`fede62c0 : csagent+0x1099eaffff9405`8305f980 fffff806`7148edd7 : ffffffff`ffffffa1 fffff806`7152e5c1 ffffe402`fe864050 00000000`00000001 : csagent+0x5efbbffff9405`8305fac0 fffff806`7152e681 : 00000000`00000000 fffff806`53789272 00000000`00000002 ffffe402`fede62c0 : csagent+0x5edd7ffff9405`8305faf0 fffff806`53707287 : ffffe402`fe868040 00000000`00000080 fffff806`7152e510 006fe47f`b19bbdff : csagent+0xfe681ffff9405`8305fb30 fffff806`5381b8e4 : ffff9680`37651180 ffffe402`fe868040 fffff806`53707230 00000000`00000000 : nt!PspSystemThreadStartup+0x57 ffff9405`8305fb80 00000000`00000000 : ffff9405`83060000 ffff9405`83059000 00000000`00000000 00000000`00000000 : nt!KiStartSystemThread+0x34
如果深入剖析这个崩溃转储,就可以规复访问违规时的堆栈帧,从而理解更多起因了。
然而不幸的是,由于利用WER数据时,微软只能吸收到压缩状态,因此就无法反向反汇编,查看崩溃前的更多指令了。
不过,在反汇编中可以看到,在读取R8寄存器中指定的地址之前,有一个NULL检讨:
6: kd> .trap 0xffff94058305ec20.trap 0xffff94058305ec20NOTE: The trap frame does not contain all registers.Some register values may be zeroed or incorrect.rax=ffff94058305f200 rbx=0000000000000000 rcx=0000000000000003rdx=ffff94058305f1d0 rsi=0000000000000000 rdi=0000000000000000rip=fffff806715114ed rsp=ffff94058305edb0 rbp=ffff94058305eeb0 r8=ffff840500000074 r9=0000000000000000 r10=0000000000000000r11=0000000000000014 r12=0000000000000000 r13=0000000000000000r14=0000000000000000 r15=000000000000000iopl=0 nv up ei ng nz na po nccsagent+0xe14ed:fffff806`715114ed 458b08 mov r9d,dword ptr [r8] ds:ffff8405`00000074=????????6: kd> !pte ffff840500000074!pte ffff840500000074 VA ffff840500000074PXE at FFFFABD5EAF57840 PPE at FFFFABD5EAF080A0 PDE at FFFFABD5E1014000 PTE at FFFFABC202800000contains 0A00000277200863 contains 0000000000000000pfn 277200 ---DA--KWEV contains 0000000000000000not valid6: kd> ub fffff806`715114edub fffff806`715114edcsagent+0xe14d9:fffff806`715114d9 04d8 add al,0D8hfffff806`715114db 750b jne csagent+0xe14e8 (fffff806`715114e8)fffff806`715114dd 4d85c0 test r8,r8fffff806`715114e0 7412 je csagent+0xe14f4 (fffff806`715114f4)fffff806`715114e2 450fb708 movzx r9d,word ptr [r8]fffff806`715114e6 eb08 jmp csagent+0xe14f0 (fffff806`715114f0)fffff806`715114e8 4d85c0 test r8,r8fffff806`715114eb 7407 je csagent+0xe14f4 (fffff806`715114f4)6: kd> ub fffff806`715114d9ub fffff806`715114d9 ^ Unable to find valid previous instruction for 'ub fffff806`715114d9'6: kd> u fffff806`715114ebu fffff806`715114ebcsagent+0xe14eb:fffff806`715114eb 7407 je csagent+0xe14f4 (fffff806`715114f4)fffff806`715114ed 458b08 mov r9d,dword ptr [r8]fffff806`715114f0 4d8b5008 mov r10,qword ptr [r8+8]fffff806`715114f4 4d8bc2 mov r8,r10fffff806`715114f7 488d4d90 lea rcx,[rbp-70h]fffff806`715114fb 488bd6 mov rdx,rsifffff806`715114fe e8212c0000 call csagent+0xe4124 (fffff806`71514124)fffff806`71511503 4533d2 xor r10d,r10d6: kd> db ffff840500000074db ffff840500000074ffff8405`00000074 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????ffff8405`00000084 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????ffff8405`00000094 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????ffff8405`000000a4 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????ffff8405`000000b4 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????ffff8405`000000c4 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????ffff8405`000000d4 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????ffff8405`000000e4 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
不雅观察以上结果,就可以证明CrowdStrike的剖析是精确的——
在CrowdStrike开拓的CSagent.sys驱动程序中,存在越界读取内存安全缺点。
其余,微软还创造,csagent.sys模块被注册为文件系统过滤驱动程序——常日被反恶意软件用来吸收与文件操作有关的关照。
安全软件会用它来扫描保存到磁盘的任何新文件,比如通过浏览器下载的文件。
typedef union _FLT_PARAMETERS { ... ; struct { PIO_SECURITY_CONTEXT SecurityContext; ULONG Options; USHORT POINTER_ALIGNMENT Reserved; USHORT ShareAccess; PVOID Parameters; } CreatePipe; ... ;} FLT_PARAMETERS, PFLT_PARAMETERS;
而且,文件系统过滤器还可以作为监控系统行为的安全办理方案的旗子暗记。
正如CrowdStrike在博客中指出,他们内容更新的一部分,便是变动传感器逻辑,以处理与命名管道创建干系的数据。
而文件系统过滤驱动程序API,许可驱动程序在系统上发生命名管道活动时吸收调用,从而能够检测恶意行为。
这种驱动程序的一样平常功能,是与CrowdStrike分享的信息干系联的。
6: kd>!reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csagentHive ffff84059ca7b000KeyNode ffff8405a6f67f9c[SubKeyAddr] [SubKeyName]ffff8405a6f683ac Instancesffff8405a6f6854c Sim Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details[ValueType] [ValueName] [ValueData]REG_DWORD Type 2REG_DWORD Start 1REG_DWORD ErrorControl 1REG_EXPAND_SZ ImagePath \??\C:\Windows\system32\drivers\CrowdStrike\csagent.sysREG_SZ DisplayName CrowdStrike FalconREG_SZ Group FSFilter Activity MonitorREG_MULTI_SZ DependOnService FltMgr\0REG_SZ CNFG Config.sysREG_DWORD SupportedFeatures f
可以看到,在CrowdStrike剖析中指定的掌握通道文件版本291也涌如今了崩溃中,这表明文件已被读取。
如何确定文件本身与崩溃转储中不雅观察到的访问违规干系联呢?这就须要利用这些工具对驱动程序进行额外的调试了。(这次咱不谈论)
!ca ffffde8a870a8290ControlArea @ ffffde8a870a8290 Segment ffff880ce0689c10 Flink ffffde8a87267718 Blink ffffde8a870a7d98 Section Ref 0 Pfn Ref b Mapped Views 0 User Ref 0 WaitForDel 0 Flush Count 0 File Object ffffde8a879b29a0 ModWriteCount 0 System Views 0 WritableRefs 0 PartitionId 0 Flags (8008080) File WasPurged OnUnusedList \Windows\System32\drivers\CrowdStrike\C-00000291-00000000-00000032.sys1: kd> !ntfskd.ccb ffff880ce06f6970!ntfskd.ccb ffff880ce06f6970 Ccb: ffff880c`e06f6970 Flags: 00008003 Cleanup OpenAsFile IgnoreCaseFlags2: 00000841 OpenComplete AccessAffectsOplocks SegmentObjectReferenced Type: UserFileOpenFileObj: ffffde8a879b29a0(018) ffff880c`db937370 FullFileName [\Windows\System32\drivers\CrowdStrike\C-00000291-00000000-00000032.sys](020) 000000000000004C LastFileNameOffset (022) 0000000000000000 EaModificationCount (024) 0000000000000000 NextEaOffset (048) FFFF880CE06F69F8 Lcb (058) 0000000000000002 TypeOfOpen
我们可以做的,是通过崩溃转储,来确定在崩溃发生时,运行的系统上是否存在其他由CrowdStrike供应的驱动程序。
6: kd> lmDvmCSFirmwareAnalysislmDvmCSFirmwareAnalysisBrowse full module liststart end module namefffff806`58920000 fffff806`5893c000 CSFirmwareAnalysis (deferred) Image path: \SystemRoot\system32\DRIVERS\CSFirmwareAnalysis.sys Image name: CSFirmwareAnalysis.sys Browse all global symbols functions data Symbol Reload Timestamp: Mon Mar 18 11:32:14 2024 (65F888AE) CheckSum: 0002020E ImageSize: 0001C000 Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4 Information from resource tables:6: kd> lmDvmcspcm4lmDvmcspcm4Browse full module liststart end module namefffff806`71870000 fffff806`7187d000 cspcm4 (deferred) Image path: \??\C:\Windows\system32\drivers\CrowdStrike\cspcm4.sys Image name: cspcm4.sys Browse all global symbols functions data Symbol Reload Timestamp: Mon Jul 8 18:33:22 2024 (668C9362) CheckSum: 00012F69 ImageSize: 0000D000 Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4 Information from resource tables:6: kd> lmDvmcsboot.syslmDvmcsboot.sysBrowse full module liststart end module nameUnloaded modules:fffff806`587d0000 fffff806`587dc000 CSBoot.sys Timestamp: unavailable (00000000) Checksum: 00000000 ImageSize: 0000C0006: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csboot!reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csbootHive ffff84059ca7b000KeyNode ffff8405a6f68924[ValueType] [ValueName] [ValueData]REG_DWORD Type 1REG_DWORD Start 0REG_DWORD ErrorControl 1REG_EXPAND_SZ ImagePath system32\drivers\CrowdStrike\CSBoot.sysREG_SZ DisplayName CrowdStrike Falcon Sensor Boot DriverREG_SZ Group Early-Launch6: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csdevicecontrol!reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csdevicecontrolHive ffff84059ca7b000KeyNode ffff8405a6f694ac[SubKeyAddr] [VolatileSubKeyName]ffff84059ce196c4 Enum Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details[ValueType] [ValueName] [ValueData]REG_DWORD Type 1REG_DWORD Start 3REG_DWORD ErrorControl 1REG_DWORD Tag 1fREG_EXPAND_SZ ImagePath \SystemRoot\System32\drivers\CSDeviceControl.sysREG_SZ DisplayName @oem40.inf,%DeviceControl.SVCDESC%;CrowdStrike Device Control ServiceREG_SZ Group BaseREG_MULTI_SZ Owners oem40.inf\0!csdevicecontrol.inf_amd64_b6725a84d4688d5a\0!csdevicecontrol.inf_amd64_016e965488e83578\0REG_DWORD BootFlags 146: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csagent!reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csagentHive ffff84059ca7b000KeyNode ffff8405a6f67f9c[SubKeyAddr] [SubKeyName]ffff8405a6f683ac Instancesffff8405a6f6854c Sim Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details[ValueType] [ValueName] [ValueData]REG_DWORD Type 2REG_DWORD Start 1REG_DWORD ErrorControl 1REG_EXPAND_SZ ImagePath \??\C:\Windows\system32\drivers\CrowdStrike\csagent.sysREG_SZ DisplayName CrowdStrike FalconREG_SZ Group FSFilter Activity MonitorREG_MULTI_SZ DependOnService FltMgr\0REG_SZ CNFG Config.sysREG_DWORD SupportedFeatures f6: kd> lmDvmCSFirmwareAnalysislmDvmCSFirmwareAnalysisBrowse full module liststart end module namefffff806`58920000 fffff806`5893c000 CSFirmwareAnalysis (deferred) Image path: \SystemRoot\system32\DRIVERS\CSFirmwareAnalysis.sys Image name: CSFirmwareAnalysis.sys Browse all global symbols functions data Symbol Reload Timestamp: Mon Mar 18 11:32:14 2024 (65F888AE) CheckSum: 0002020E ImageSize: 0001C000 Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4 Information from resource tables:6: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csfirmwareanalysis!reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csfirmwareanalysisHive ffff84059ca7b000KeyNode ffff8405a6f69d9c[SubKeyAddr] [VolatileSubKeyName]ffff84059ce197cc Enum Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details[ValueType] [ValueName] [ValueData]REG_DWORD Type 1REG_DWORD Start 0REG_DWORD ErrorControl 1REG_DWORD Tag 6REG_EXPAND_SZ ImagePath system32\DRIVERS\CSFirmwareAnalysis.sysREG_SZ DisplayName @oem43.inf,%FirmwareAnalysis.SVCDESC%;CrowdStrike Firmware Analysis ServiceREG_SZ Group Boot Bus ExtenderREG_MULTI_SZ Owners oem43.inf\0!csfirmwareanalysis.inf_amd64_12861fc608fb1440\06: kd> !reg querykey \REGISTRY\MACHINE\system\Controlset001\control\earlylaunch!reg querykey \REGISTRY\MACHINE\system\Controlset001\control\earlylaunch
从上述剖析中可见,CrowdStrike加载了四个驱动程序模块。
个中一个模块根据CrowdStrike的初步事宜后审查韶光线,会频繁吸收动态掌握和内容更新。
利用这次崩溃的独特堆栈和属性,便可以识别出由CrowdStrike特定编程缺点导致的Windows崩溃报告。
图1 CrowdStrike驱动程序干系的崩溃转储报告随韶光的变革(仅包括选择上传的用户)
总之,这次环球宕机事宜见告我们:任何无效内存访问之类的可靠性问题,如果没有结合安全支配实践,都会导致严重的后果。
以是,为什么安全办理方案必须在Windows上利用内核驱动程序呢?
对此,微软给出了以下阐明。
为什么安全办理方案,必须依赖内核驱动程序
首先最主要的一点缘故原由,便是内核驱动程序许可系统范围的可见性。
而且,它能在早起启动时运行,这样就能检测出像启动工具包和根工具包这样的威胁(要知道,后者可是在用户模式运用程序加载前,就可以运行的)。
微软为内核驱动程序供应了一套丰富的功能,包括用于进程和线程创建的系统事宜回调,以及可以监控文件创建、删除或修正的过滤驱动程序。
而且,内核活动还可以触发回调,让驱动程序决定何时阻挡文件或创建进程。
因此,许多供应商都是用NDIS驱动,在内核中利用驱动程序来网络各种网络信息。
性能内核驱动程序,还会带来潜在的性能上风。
比如,它可以帮助进行高吞吐量的网络活动剖析或数据网络。
当然,有许多场景可以在非内核模式下优化数据网络和剖析操作,微软也会连续与生态系统互助。
防修改能力加载到内核模式的另一个好处,便是防修改能力。
纵然攻击者具有管理员权限,安全产品也不肯望软件被恶意软件、针对性攻击或恶意的内部职员击溃。
另一个哀求,便是让驱动程序尽早加载,以便尽早不雅观察到系统事宜。
为此,微软供应了一种机制,可以在启动过程的早期,启动标记为早期启动反恶意软件(ELAM)的驱动程序。
内核驱动程序供应了以上好处,但是因此弹性为代价的。
因此,安全供应商在利用内核驱动程序时,就必须仔细权衡利弊,平衡可见性和防修改需求,与在内核模式下操作的风险。
微软表示,如今安全工具已经可以在安全性和可靠性之间实现平衡。
例如,安全供应商可以利用在内核模式下运行的最小传感器进行数据网络和实行,以限定暴露于可用性问题的风险。
别的的关键产品功能则在用户模式下隔离进行,然后再规复。
图2 平衡安全性和可靠性的示例安全产品架构
而对付用户模型保护方法,Windows也同样供应了几种防修改的方法,比如基于虚拟化的安全(VBS)隔离区和受保护进程,以及ETW事宜和用户模式接口,如反恶意软件扫描接口。
如何在更高安全模式下进行支配
微软表示,Windows实质上是一个开放、多功能的操作系统,可以通过集成工具轻松锁定,以提高安全性。
此外,Windows也在不断增加安全默认值,包括在Windows 11中默认启用的数十个新的安全功能。
在Windows的自我防御方面,默认启用的关键反恶意软件功能包括:
安全启动(Secure Boot):通过在系统启动过程中逼迫实行署名同等性,防止早期启动恶意软件和rootkit丈量启动(Measured Boot):通过集成的证明做事(如设备康健证明)供应基于TPM的硬件加密丈量,以检测启动时的属性。内存完全性(Memory integrity,也称HVCI):防止在内核中运行时天生动态代码,确保掌握流完全性易受攻击驱动程序阻挡列表:集成在操作系统中并由微软管理,与恶意驱动程序黑名单相辅相成受保护确当地安全机构(Protected Local Security Authority):卖力保护一系列凭据,企业版默认开启基于硬件的凭据保护Microsoft Defender Antivirus:在全体操作系统中供应反恶意软件保护利用Windows集成的安全功能来防止攻击,可以提高安全性,同时减少本钱和繁芜性。可参考的最佳实践如下:
通过App Control for Business来编写一个安全策略,只许可受信赖和/或业务关键的运用程序结合内存完全性(Memory integrity)与特定的许可列表策略,利用基于虚拟化的安全性(VBS)进一步保护Windows内核以标准用户身份运行,并仅在必要时提升权限利用设备康健证明(Device Health Attestation, DHA)监控设备的精确安全策略,包括硬件根本的机器安全姿态丈量为反恶意软件生态供应最佳实践
末了,微软操持利用新推出的数十种安全功能和架构改进,来帮助反恶意软件完成方法的当代化,从而提升安全性和可靠性:
供应安全支配指南、最佳实践和技能,使实行安全产品更新更安全减少内核驱动程序访问主要安全数据的需求供应增强的隔离和防修改能力,如VBS enclaves技能启用零信赖方法,如高完全性证明微软表示,Windows今后将连续创新并供应新的方法,使安全工具能够安全地检测和相应新兴威胁。