Understand OS series | Part 1 | Operating system overview | SystemAC
CERT的安全研究人员表示,如果通过EMET或Windows Defender Exploit Guard启用系统范围的强制ASLR,则Windows 10,Windows 8,1和Windows 8无法正确随机化每个应用程序。微软已经回应说,Microsoft Windows上的地址空间布局随机化(ASLR) 的实现按预期工作。让我们来看看这个问题。
什么是ASLR
ASLR扩展为Address Space Layout Randomisation,该功能在Windows Vista中首次亮相,旨在防止代码重用攻击。通过将可执行模块加载到不可预测的地址来防止攻击,从而减轻通常依赖于放置在可预测位置的代码的攻击。 ASLR经过精心调整,可以与诸如依赖于通常加载到可预测位置的代码的返回导向编程等利用技术进行对抗。除了ASLR的一个主要缺点是它需要与 / DYNAMICBASE 标志链接。
使用范围
ASLR为应用程序提供了保护,但它没有涵盖整个系统的缓解措施。实际上,正是由于这个原因,微软EMET才被发布。 EMET确保它涵盖整个系统范围和特定于应用程序的缓解措施。 EMET通过为用户提供前端而最终成为全系统缓解的表现。但是,从Windows 10 Fall Creators更新开始,EMET功能已被替换为Windows Defender Exploit Guard。
对于未链接到/ DYNAMICBASE标志的代码,可以对EMET和Windows Defender Exploit Guard强制启用ASLR这可以在每个应用程序或全系统基础上实施。这意味着Windows将自动将代码重新定位到临时重定位表,因此每次重新启动后代码的新位置都会有所不同。从Windows 8开始,设计更改要求系统范围的ASLR应该启用系统范围的自下而上的ASLR,以便为强制ASLR提供熵。
问题
ASLR始终更有效熵越多。用更简单的术语来说,增加熵增加了攻击者需要探索的搜索空间的数量。但是,EMET和Windows Defender Exploit Guard都支持系统范围的ASLR,而无需启用系统范围的自下而上的ASLR。发生这种情况时,没有/ DYNMICBASE的程序将被重新定位,但没有任何熵。正如我们前面所解释的那样,由于程序每次都会重新启动相同的地址,熵的缺失会使攻击者相对更容易。
此问题目前正在影响Windows 8,Windows 8.1和Windows 10,它们启用了系统范围的ASLR通过Windows Defender Exploit Guard或EMET。由于地址重定位本质上属于非DYNAMICBASE,所以它通常会覆盖ASLR的优势。
微软的说法
微软已经很快捷,并已发布声明。这就是微软的人必须说的,“CERT观察到的强制ASLR的行为是按设计进行的,而ASLR按预期工作。 WDEG团队正在研究阻碍系统自动启用自下而上ASLR的配置问题,并正在努力解决它。此问题不会产生额外的风险,因为它只会在尝试将非默认配置应用于现有版本的Windows时发生。即使这样,有效的安全态势也不比缺省提供的更糟糕,并且通过本文中描述的步骤解决问题很简单。“
他们详细描述了有助于实现所需级别的解决方法的安全。对于那些希望为EXE没有选择加入ASLR的流程启用强制ASLR和自下而上的随机化,有两种解决方法
1]将以下内容保存到optin.reg中,并导入它以启用系统范围内的强制ASLR和自底向上随机化。
Windows注册表编辑器版本5.00 [HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control Session Manager kernel]“MitigationOptions” = hex:00,01,01,00,00,00,00,00,00,00,00,00,00,00,00,00
2]启用强制ASLR和自底向上随机化,使用WDEG或EMET的特定配置
说微软 - 这个问题不会产生额外的风险,因为它只会在尝试将非默认配置应用到现有版本的Windows时发生