想象一下:内建于Windows服务器的安全控制(默认启用),可在操作系统启动时就开始拦截恶意软件。好吧,如果你正在运行Windows Server 2008或R2,那么你已经有这种安全保护了。实际上,如果你的企业客户使用的是Windows Vista或者Windows 7,他们也有这种机制。这就是所谓的地址空间布局随机化(address space layout randomization,ASLR)。
ASLR通过将系统可执行程序随机装载到内存里,从而防止缓冲溢出攻击。如果一个动态链接库(DLL)文件的动态重定位(dynamic-relocation)标志设置为真,那么它就会自动地随机装载到内存中。那些在特定内存区域寻找特定文件的恶意软件就会失效,不能再渗透漏洞。实际上,ASLR还能通过让那些正受攻击的系统文件崩溃来误导恶意软件。
ASLR的另一项卓越功能是它能很好地与动态内存( Dynamic Memory)协同工作。动态内存是Windows Server 2008 R2 SP1中的新功能,能在需要的时候为Hyper-V虚拟机动态地分配内存。此外,ASLR技术对客户端性能的影响几乎可以忽略不计。
当然,ASLR并不是多么新鲜的东西。第三方终端保护供应商多年前就已经提供了ASLR。Linux平台上也有类似的工具。虽然微软在这方面介入比较晚,但现在唯一重要的是该公司直接在Windows操作系统内建立了免受恶意软件侵害的预防性机制——可以说最开始就应该这么做。
那么,还需要为ASLR一样的Windows Server系统的安全控制担心什么呢?我仍然看到有许多服务器没有安装防恶意软件,可能是因为性能的原因,或是因为“这些服务器除做文件共享和活动目录管理(Active Directory management)外不作它用”。问题是此类服务器非常容易受到攻击。攻击者和他们编写的程序可不会挑三拣四,只要有大量的恶意软件和漏洞存在,他们对所有的服务器都一视同仁。
ASLR技术并不是万能的,所以你不能忘记那些意想不到的教训,也不能放松警惕。下面是你不应轻视的几点:
- ASLR对任何支持随机内存分配的DLL文件有效,这意味着你得相信你的软件开发者或供应商已经从代码上支持了这一功能。
- ASLR可能导致人们对Windows系统放松安全意识,进而缺少对传统恶意软件、补丁管理和编写粗糙的程序的维护和监督。
- 随着运行时间的增加,ASLR会带来越来越多的内存碎片,有可能导致系统不稳定并造成性能问题。
- 防护技术做成逃避(evasion)技术是不必要的,恶意软件最终还是能够检测/破解那些目标系统文件。然而考虑全盘情况,这就需要深入研究如何降低安全风险,每个人都或多或少会遇到,所以我不建议你为此付出过多努力。
还有一件事需要注意,为了充分利用其功能,ASLR需要与数据执行保护功能(Data Execution Prevention ,DEP)配合使用。DEP是一项内置的内存保护功能,设计用于保护应用程序免受攻击。幸运的是,DEP在Windows Server 2003 SP1及其以上版本中都默认开启。
总之,使用ASLR是企业在与恶意软件做斗争的过程中迈出的正确的一步,但是,其成效只有时间才能检验。
【编辑推荐】