聚焦源代码安全,网罗国内外最新资讯!
Windows 打印组件自 Win2000时代就被引入,作为一个”历史悠久”的组件其安全问题也一直广受安全研究人员关注。近期围绕 printer port 相关机制就连续爆出安全问题,本文旨在对相关漏洞进行一个简要梳理介绍。
Windows 打印组件简介
Windows 打印组件是一个典型的c/s架构,如图1-1所示:
图1-1
客户端通过 gdi api 经由 winspool.drv 模块,向 spoolsv 进程发送 rpc 请求,spoolsv 进程经由 spoolss.dll 将打印请求分发给不同的 print provider 处理,本地的打印请求由 localspl.dll 模块进行处理,而远程的打印请求则通常由win32spl.dll 模块进行处理如图1-2所示:
图1-2
漏洞分析
需要注意的是作为 server 端的 spoolsv 进程是 system 权限,这也意味着如果spoolsv 没有正确处理 client 发送过来的打印请求,很容易产生 EOP 类漏洞。