PrintNightmare 是什么
PrintNightmare 指 Windows 打印后台程序(Print Spooler,进程 spoolsv.exe)上的一组漏洞,2021 年 6 至 7 月被集中披露与利用。主编号 CVE-2021-34527 属远程代码执行,攻击者通过打印服务的远程调用接口即可在目标主机上以 SYSTEM 权限执行代码;同服务的 CVE-2021-1675 在 2021 年 6 月的更新中修复。域控与打印服务器默认运行 Spooler,是最需要优先处理的资产。
基本信息
| 受影响组件 | Windows Print Spooler(spoolsv.exe)服务 |
|---|---|
| 受影响系统 | Windows Server 与客户端多个版本,具体以微软公告的适用列表为准 |
| 高风险资产 | 域控、打印服务器、开启打印服务的跳板机 |
| 利用后果 | 以 SYSTEM 权限执行代码,域内可进一步横向移动 |
| 修复方式 | 安装微软对应版本的安全更新;无法打补丁的先停用服务 |
| 编号关系 | CVE-2021-34527 为主,另有 CVE-2021-1675 等同服务问题 |
处置顺序
- 先盘点:哪些主机真的在打印(域控、打印服务器、票据与报表打印端)
- 域控优先打补丁;本轮排不上窗口的先停用 Spooler 并改启动类型
- 打印服务器与终端随后跟进,保留打印能力的主机必须打补丁
- 清理历史策略残留:放宽打印驱动安装权限的老策略要一并收回
- 记录例外清单与复核时间,避免停用后无人跟进恢复
- 复查域内是否还有未纳入台账的打印服务实例
停用 Spooler 服务
停用 Spooler 服务
Get-Service Spooler # 先确认当前状态
Stop-Service Spooler # 立即停服务
Set-Service Spooler -StartupType Disabled # 改启动类型,防重启复活
Get-Service Spooler | Select-Object Status, StartType # 复核:应为 Stopped 且 Disabled
# 批量执行示例:把脚本推到清单内主机,逐台收集执行结果
$hosts = Get-Content .\spooler-hosts.txt
Invoke-Command -ComputerName $hosts -ScriptBlock { Stop-Service Spooler; Set-Service Spooler -StartupType Disabled }域内缓解思路
域内缓解思路
# 1) 域控与服务器默认不保留不需要的打印服务,先确认谁在用
# 2) 限制普通用户安装打印驱动:收紧 Point and Print 相关策略与注册表项
# 3) 尽快安装微软修复更新,并按公告确认是否还需额外缓解
# 4) 清理历史遗留:老域里放宽打印驱动安装的策略常被遗忘
# 5) 停用前留出回滚步骤:记录原启动类型,业务确需打印时能快速恢复停用 Spooler 前确认业务无打印依赖,包括票据、报表、签字打印与共享打印机的服务端。停用属于缓解,不等于修复,保留打印能力的资产仍要打补丁。
只执行 Stop-Service 不改启动类型,重启后服务会恢复,问题回到原点。改动前后的状态与执行主机要留痕,便于事后核查。