早前微软公布 Windows 10&Windows Server 系列新安全漏洞 , 这枚安全漏洞被微软发现前已经遭到黑客利用。
相对来说这枚漏洞的危害程度还是非常高的,因为攻击者可使用特制的文件诱导用户加载然后远程执行任意命令。
严格来说也并不需要完全打开这类特制的文档,微软强调甚至用户在资源管理器中预览这类文档都可以触发漏洞。
目前微软尚未发布安全更新对这枚高危级别的安全漏洞进行修复, 不过第三方安全公司0Patch已经推出缓解程序。
第三方安全公司Acros Security日前已经更新漏洞修复工具0Patch,借助这款工具所有用户均可无差别获得缓解。
缓解原理是0Patch内置多种安全漏洞信息及应对方法, 当检测到用户系统受特定漏洞影响时便自动加载修复程序。
此次字体管理器漏洞实际上还没有比较彻底的修复方法, 因此0Patch内置的是微软安全响应中心提供的缓解方法。
当用户安装该程序后会自动执行相应的修复方法进行缓解,具体缓解方法是禁用资源管理器预览和详细信息窗格。
因 Windows 7&Windows Server 2008 系列已经结束支持 , 因此微软在下月发布安全更新时不会修复上述系统。
有鉴于此仍在使用这些操作系统的用户可以使用0Patch获得保护, 该软件有收费版本但普通用户使用免费版即可。
同时安装该工具后也有助于解决其他微软不会进行修复的漏洞 , 相对来说算是在生命周期结束后的临时应对办法。
当然蓝点网依然推荐您尽早升级到受支持的操作系统获得完整的安全支持,旧系统总归有些漏洞无法被彻底修复。
这款工具最初的开发目的其实是解决微软修复速度比较慢的缺点,通常微软需要半个月甚至更长时间来修复漏洞。
为此Acros Security安全公司开发这款工具,收集微软发布的缓解方法及该安全公司自己开发部分漏洞修复方案。
当用户安装该程序后会自动连接服务器获得最新的漏洞信息和修复方法,就及时性上说这款工具要比微软更快些。
当然如上面所述并不是所有修复方案都是该安全公司原创的,也不是所有安全漏洞都可以被这款工具彻底的修复。
因此在紧急时刻例如漏洞已经被爆出但微软无法及时修复的情况下,使用该工具可以更简单快速的缓解漏洞危害。
MODULE_PATH "..Affected_Modulesgdi32.dll_6.1.7601.24540_64bitgdi32.dll" PATCH_ID 420 PATCH_FORMAT_VER 2 VULN_ID 6050 PLATFORM win64 patchlet_start PATCHLET_ID 1 PATCHLET_TYPE 2 PATCHLET_OFFSET 0x00009c00 ; Beginning of function NtGdiAddFontResourceW N_ORIGINALBYTES 5 JUMPOVERBYTES 0 code_start ; font path string (wide char) is in rcx ; example: "??C:AnalysisADV200006SOSUE___.pfm|??C:AnalysisADV200006SOSUE___.PFB" ; we make sure to restore rcx after we're done ; we can pollute rax because the original code doesn't use its value after our patch ; first upper-case the whole string push rcx LOOP1: cmp word [rcx], 0 je END1 cmp byte [rcx], 'a' ; if below 'a', no need to upper-case jb SKIP1 cmp byte [rcx], 'z' ; if above 'z', no need to upper-case ja SKIP1 sub byte [rcx], 0x20 ; make it upper-case SKIP1: add rcx, 2 ; next wide-char character jmp LOOP1 END1: pop rcx ; now search for ".PFM" and ".MMM" in the string push rcx LOOP2: cmp word [rcx], 0 ; did we reach end of the string? je END2 ; note that we don't care if we test for four ; characters a bit beyond the buffer; ; there's always readable memory there and there can't be an ; unwanted match because the string is null-terminated mov rax, 004D00460050002Eh ; ".PFM" (in LSB byte order) cmp qword [rcx], rax ; is there ".PFM" at [rcx]? je BLOCK ; if ".PFM" is found, we block the loading of the font mov rax, 004D004D004D002Eh ; ".MMM" (in LSB byte order) cmp qword [rcx], rax ; is there ".MMM" at [rcx]? je BLOCK ; if ".MMM" is found, we block the loading of the font SKIP2: add rcx, 2 ; next wide-char character jmp LOOP2 BLOCK: pop rcx mov rax, 0 ; simulate the syscall returning an error when trying to ; load the font retn ; return and avoid syscall being called END2: pop rcx code_end patchlet_end