Windows 8 和 10 存在 ASLR 缺陷,修复方法如下
2分钟读
发表于
阅读我们的披露页面,了解如何帮助 MSPoweruser 维持编辑团队 查看更多
在 Windows 8 及更高版本上发现了一个新的安全漏洞,这使得 ASLR 无用。 该漏洞是由一位名叫 Will Dormann 的安全研究员发现的。 他在 CERT 上的详细帖子中解释了这个问题:
EMET 和 Windows Defender Exploit Guard 都启用了系统范围的 ASLR,但同时也启用了系统范围的自下而上 ASLR。 尽管 Windows Defender Exploit 防护确实为系统范围的自下而上 ASLR 提供了一个系统范围的选项,但“默认开启”的默认 GUI 值并不反映底层注册表值(未设置)。 这会导致没有 /DYNAMICBASE 的程序被重新定位,但没有任何熵。 这样做的结果是此类程序将被重新定位,但每次重新启动甚至跨不同系统时都会重新定位到相同的地址。
对于那些不知道的人,微软首先在 Windows Vista 中实现了 ASLR(地址空间布局随机化),有助于防止代码重用攻击。 ASLR 使用随机内存地址来执行代码,但在 Windows 8、Windows 8.1 和 Windows 10 中,该功能并不总是正确应用。 在 Windows 8、8.1 和 Windows 10 中,ASLR 不使用随机内存地址,本质上使其无用。
实际上,对于 Windows 7 和 EMET 系统范围的 ASLR,eqnedt32.exe 的加载地址在每次重启时都是不同的。 但是对于带有 EMET 或 WDEG 的 Windows 10,eqnedt32.exe 的基础每次都是 0x10000。
结论:Win10不能像Win7一样强制ASLR! pic.twitter.com/Jp10nqk1NQ-Will Dormann(@wdormann) 2017 年 11 月 15 日
好消息是,Will 共享了一个手动注册表编辑来解决这个问题。 为此,您需要执行以下操作。
- 使用以下内容创建文本文件:Windows 注册表编辑器版本 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
“缓解选项”=十六进制:00,01,01,00,00,00,00,00,00,00,00,00,00,00,00,00 - 使用注册表扩展名 (.reg) 保存文件
- 在开始菜单中输入“regedit”打开注册表编辑器
- 选择 File>Import 并选择您刚刚创建的 .reg 文件。
这应该能够解决问题,直到 Microsoft 发送更新以完全修复它。
通过: 比特科技