详细了解Windows Vista内核的安全性( 四 )


6.受保护的进程 下一代多媒体内容 , 如 HD-DVD、BluRay 和高级访问内容系统 (AACS) 下许可的其他格式 , 在以后几年内会变得更加常见 。Windows Vista 包括许多技术 , 统称为受保护的媒体路径 (PMP) , AACS 标准要求在播放此类内容时使用这些技术 。PMP 包括受保护的用户模式音频 (PUMA) 和受保护的视频路径 (PVP) , 它们一直为音频和视频驱动程序及媒体播放机应用程序提供机制 , 以防止未授权软件或硬件捕获高清晰度格式的内容 。PUMA 和 PVP 定义特定于音频和视频播放机、设备驱动程序和硬件的接口和支持 , 但是 PMP 也依赖在 Windows Vista 中引入的一般内核机制 , 即称为受保护的进程 。受保护的进程以标准的 Windows 进程构造为基础 , 该构造封装了运行的可执行映像、其 DLL、安全上下文(进程运行所在的帐户及其安全权限) , 及在进程内执行代码但阻止某些访问类型的线程 。标准进程实施访问控制模式 , 允许使用“调试程序”权限完全访问进程所有者和管理帐户 。完全访问允许用户查看和修改进程的地址空间 , 包括映射到进程的代码和数据 。用户也可以将线程注入进程 。这些访问类型与 PMP 的要求不一致 , 因为它们允许未授权代码获取存储在播放内容的进程中的高清晰度内容和数字版权管理 (DRM) 密钥的访问权限 。受保护的进程限制访问一组受限的信息和进程管理界面 , 包括查询进程的映像名和终止或挂起进程 。但是 , 内核通过一般的进程查询功能(返回有关系统上所有进程的数据)为受保护的进程提供诊断信息 , 因此不要求直接访问进程 。访问可能会损坏只允许通过其他受保护的进程访问的媒体 。此外 , 为避免从内部受到危害 , 加载到受保护进程的所有可执行代码(包括其可执行映像和 DLL)必须由 Microsoft (WHQL) 使用受保护的环境 (PE) 标记签名 , 或者(如果是音频编解码器)由开发人员使用从 Microsoft 获得的 DRM 签名证书签名 。因为内核模式代码可以获取任何进程的完全访问权限(包括受保护的进程) , 并且 32 位 Windows 允许加载未签名的内核模式代码 , 所以内核可为受保护的进程提供 API , 以查询内核模式环境的“清洁度” , 并仅在没有加载未签名代码时使用结果解除对高级内容的锁定 。没有特定识别受保护进程的 API , 但是您可以间接地根据有关它们的受限信息以及甚至无法从管理帐户进行调试来识别它们 。音频设备图形隔离进程 (%Systemroot%System32Audiodg.exe) 用于播放使用内容加密系统 (CSS) 编码的 DVD , 并在“任务管理器”窗格中标识为受保护的进程 。事实上 , 即使使用管理权限运行 , 任务管理器也无法获得其命令行、虚拟化和数据执行保护状态 。
7.地址空间加载随机化
不管采取什么措施 , 如数据执行保护和增强的编译器错误检查 , 恶意软件作者都会继续找到缓冲区溢出漏洞 , 这些漏洞使他们能够感染面向网络的进程(如 Internet Explorer、Windows 服务及第三方应用程序) , 获得进入系统的立足点 。不过 , 在设法感染进程后 , 他们必须使用 Windows API 通过修改用户或系统配置设置来完成读取用户数据或建立永久存在的最终目的 。使用 DLL 导出的 API 入口点连接应用程序 , 通常由操作系统加载器处理 , 但是这些类型的恶意软件感染不会从加载器的服务中受益 。恶意软件在以前的 Windows 版本中还没有出现过此类问题 , 因为对于任何特定的 Windows 版本 , 系统可执行映像和 DLL 总在同一个位置加载 , 让恶意软件假定 API 驻留在固定的地址 。Windows Vista 地址空间加载随机化 (ASLR) 功能使恶意软件不可能知道 API 的位置 , 方法是通过每次系统启动时在不同位置加载系统 DLL 和可执行文件 。在启动进程早期 , 内存管理器会从用户模式地址空间顶部 16MB 区域的 256 个 64KB 对齐地址中随机选取一个作为 DLL 映像加载偏差 。由于在映像标头中有新的动态重新定位标记的 DLL 加载到进程中 , 因此内存管理器会从映像加载偏差地址开始并继续将 DLL 选取到内存中 。具有标记组的可执行文件会得到类似的处理 , 在存储在其映像标头中的 16MB 基本加载地址内以随机的 64KB 对齐点加载 。此外 , 如果使用给定的 DLL 或可执行文件的所有进程卸载后再次加载它 , 内存管理器会重新选择一个随机的加载位置 。图 7 所示为一个 32 位 Windows Vista 系统的示例地址空间布局 , 包括 ASLR 选取映像加载偏差和可执行文件加载地址的区域 。

推荐阅读