作者 akihi(白帽攻防录讲师),某甲方网络安全工程师,合合 SRC 年度第一、腾讯 SRC 连续三年前十,单漏洞赏金 4w+,擅长 Web/App/PC 客户端漏洞挖掘。专注 Windows 内核安全、打印服务攻击面与企业内网渗透研究。本文基于公开 CVE 信息与技术原理深度复盘,供安全研究与防护参考。
一、漏洞时间线
2026 年 10 月 13 日,微软发布了 10 月 Patch Tuesday------有史以来最大规模的月度安全更新,共修复 1414 个漏洞。在这堆漏洞中,有一组特别值得内网安全研究者关注:Microsoft PostScript Printer Driver 同时存在两个 RCE 漏洞,全部都是 CVSS 9.8,全部不需要认证,全部不需要用户交互,攻击者只要能访问打印服务器的网络端口,发送一个特制打印任务就能在 SYSTEM 权限下执行代码。
| 时间 | 事件 | 影响 |
|---|---|---|
| 2026-10-13 | 微软 10 月 Patch Tuesday 发布 | 修复 1414 个漏洞,历史最大 |
| 2026-10-13 | CVE-2026-70147 公开披露 | PostScript 打印机驱动堆缓冲区溢出 RCE,CVSS 9.8 |
| 2026-10-13 | CVE-2026-70153 公开披露 | PostScript 打印机驱动堆缓冲区溢出 RCE,CVSS 9.8 |
| 2026-10-13 | CrowdStrike 发布技术分析 | 指出打印服务器是横向移动关键枢纽 |
| 2026-10-14 | Qualys 发布详细分析报告 | 确认两个 PostScript 漏洞影响范围 |
为什么说这组漏洞危险?因为打印服务器是企业内网的"隐形枢纽"------它连接着多个网段,被客户端工作站信任,而且运行在 SYSTEM 权限下。历史上 PrintNightmare(CVE-2021-34527)曾经震惊整个安全圈,因为它实现了"网络可达 + 无需认证 + SYSTEM 权限 RCE"的完美攻击链。这次的 PostScript 打印机驱动漏洞,本质上是同一个攻击面的新变种------攻击者不需要用户做任何事,只要能网络访问打印服务,就能拿下 SYSTEM 权限。
二、攻击链全景
让我们先还原完整的攻击路径:
攻击者准备特制 PostScript 打印任务
│
▼
第一步:构造恶意打印任务
│ 攻击者做什么?
│ - 构造特殊格式的 PostScript 打印数据
│ - 在打印任务中放入恶意载荷
│ - 触发 PostScript 解析器中的堆缓冲区溢出
│
│ 为什么能触发?
│ - PostScript 是一种图灵完备的编程语言
│ - 打印驱动需要解析复杂的 PostScript 代码
│ - 解析过程中存在边界检查缺陷
▼
第二步:发送到打印服务器
│ 攻击者做什么?
│ - 通过网络连接打印服务器的打印端口
│ - 发送特制的打印任务
│ - 模拟正常的打印请求
│
│ 为什么能送达?
│ - 打印服务监听在标准端口
│ - 为了支持客户端打印,通常开放给整个内网
│ - 传统防护难以区分恶意打印任务
▼
第三步:Spooler 服务接收任务
│ 攻击者做什么?
│ - Print Spooler 服务接收打印任务
│ - 将任务交给 PostScript 驱动处理
│ - 驱动在 SYSTEM 上下文中运行
│
│ 为什么权限高?
│ - Print Spooler 服务默认以 SYSTEM 权限运行
│ - 打印驱动也在 SYSTEM 上下文中加载
│ - 漏洞直接获得最高系统权限
▼
第四步:PostScript 解析触发漏洞
│ 攻击者做什么?
│ - PostScript 解析器处理恶意打印数据
│ - 堆缓冲区溢出破坏内存
│ - 攻击者控制溢出数据
│
│ 为什么能控制?
│ - 攻击者完全控制 PostScript 代码
│ - 可以精确控制溢出长度和内容
│ - 内存布局可预测
▼
第五步:SYSTEM 权限代码执行
│ 攻击者做什么?
│ - 在打印服务器上以 SYSTEM 权限执行任意代码
│ - 窃取凭证、安装后门
│ - 利用打印服务器作为枢纽横向移动
│
│ 为什么影响大?
│ - 打印服务器通常连接多个网段
│ - 被大量客户端工作站信任
│ - 是横向移动的完美跳板
▼
攻击者获得企业内网 SYSTEM 立足点
│
├─ 窃取打印服务器上的所有凭证
├─ 利用打印服务器的多网段连接横向移动
├─ 部署持久化后门
└─ 作为跳板攻击域控制器
**关键结论:**CrowdStrike 在分析中特别指出:"打印服务器经常保持与多个网段的连接,并与客户端工作站维持提升的信任关系,这使得它们成为横向移动的宝贵枢纽。"这句话点出了打印服务器在企业内网中的特殊地位------它不仅仅是一个打印服务,更是一个连接内网各个区域的"信任节点"。历史上 PrintNightmare 之所以被评为最危险的漏洞之一,就是因为它同时满足三个条件:网络可达(不需要先进入内网)、无需认证(匿名就能打)、SYSTEM 权限(拿下就是最高权限)。这次的 PostScript 打印机驱动漏洞,再次印证了 Windows 打印服务这个攻击面的长期性------每隔几年就会出新的漏洞,因为这个子系统太复杂、权限太高、部署太广。在 SRC 内网渗透测试中,打印服务一直是高价值目标------它往往被安全团队忽略,但一旦被利用,直接拿下 SYSTEM 权限。
三、PostScript 与打印机驱动原理
3.1 PostScript 是什么
| 特性 | 说明 |
|---|---|
| PostScript | 一种页面描述语言,用于描述打印输出 |
| 设计方 | Adobe Systems,1984 年发布 |
| 特点 | 图灵完备------可以执行任意计算 |
| 用途 | 激光打印机、专业印刷系统 |
| 解析方式 | 打印机驱动解析 PostScript 代码生成位图 |
| 风险 | 解析复杂代码容易出内存漏洞 |
3.2 为什么 PostScript 容易出漏洞
// PostScript 为什么容易出内存问题?
// 原因一:图灵完备的语言
// - PostScript 不只是简单的打印指令
// - 它是一种完整的编程语言
// - 支持变量、循环、条件判断
// - 解析器需要处理各种复杂逻辑
// - 逻辑复杂就容易出 bug
// 原因二:历史包袱重
// - PostScript 已经有 40 多年历史
// - 很多解析代码是几十年前写的
// - 为了兼容性保留了旧功能
// - 旧代码中积累了大量内存问题
// 原因三:解析器复杂度高
// - PostScript 有上千个操作符
// - 支持各种数据类型和编码
// - 需要处理嵌套结构和错误恢复
// - 任何一个解析路径都可能出问题
// 原因四:网络可达
// - 打印任务可以通过网络发送
// - 攻击者不需要物理接触打印机
// - 远程就能触发解析器漏洞
// - 攻击面从本地扩展到全网
// 原因五:SYSTEM 权限
// - 打印机驱动在 SYSTEM 上下文中运行
// - 一个内存漏洞直接获得最高权限
// - 不需要提权,一步到位
3.3 两个漏洞的区别
// CVE-2026-70147 / 70153
// 共同点:
// - 都是 Microsoft PostScript Printer Driver
// - 都是远程代码执行
// - 都是 CVSS 9.8
// - 都是堆缓冲区溢出(CWE-122)
// - 都不需要认证
// - 都不需要用户交互
// - 都可以通过网络触发
// 不同点:
// - 可能是不同的 PostScript 操作符
// - 或者不同的解析路径
// - 或者不同的内存分配模式
// - 但本质上是同一类问题
// 为什么微软一次修复了两个?
// - 说明 PostScript 解析器
// - 存在系统性的内存安全问题
// - 不是一个孤立的 bug
// - 而是一类架构设计缺陷
// - 两个 CVE 只是冰山一角
四、漏洞深度分析
4.1 CVE-2026-70147 技术细节
// CVE-2026-70147 漏洞分析
// 基本信息:
// - 漏洞类型:Heap-based Buffer Overflow(CWE-122)
// - 影响组件:Microsoft PostScript Printer Driver
// - CVSS:9.8(Critical)
// - 攻击向量:Network(网络)
// - 攻击复杂度:Low(低)
// - 所需权限:None(无需认证)
// - 用户交互:None(不需要用户操作)
// - 机密性:High
// - 完整性:High
// - 可用性:High
// CVSS 向量:
// CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
// 什么场景下会触发?
// - 攻击者发送特制打印任务到打印服务器
// - Print Spooler 服务接收任务
// - 交给 PostScript 驱动处理
// - 驱动解析 PostScript 代码时触发堆溢出
// - 攻击者控制溢出数据执行代码
4.2 CVE-2026-70153 技术细节
// CVE-2026-70153 漏洞分析
// 基本信息:
// - 漏洞类型:Heap-based Buffer Overflow(CWE-122)
// - 影响组件:Microsoft PostScript Printer Driver
// - CVSS:9.8(Critical)
// - 攻击向量:Network(网络)
// - 攻击复杂度:Low(低)
// - 所需权限:None(无需认证)
// - 用户交互:None(不需要用户操作)
// 与 CVE-2026-70147 的区别:
// - 可能是不同的 PostScript 操作符
// - 或者不同的解析路径
// - 但本质上都是堆缓冲区溢出
// - 都是网络可达 + 无需认证 + SYSTEM 权限
4.3 影响范围
| 项目 | 说明 |
|---|---|
| 漏洞类型 | 堆缓冲区溢出 |
| 影响组件 | Microsoft PostScript Printer Driver |
| 攻击向量 | 网络(发送打印任务) |
| 认证要求 | 不需要 |
| 用户交互 | 不需要 |
| CVSS 评分 | 9.8(Critical) |
| 运行权限 | SYSTEM(最高权限) |
| 部署位置 | 打印服务器、工作站 |
4.4 哪些系统受影响
// 哪些系统在用 PostScript Printer Driver?
// 1. 企业打印服务器
// - 很多企业有专门的打印服务器
// - 集中管理所有打印机
// - 运行 Print Spooler 服务
// - 攻击面最大
// 2. 终端服务器
// - RDS 终端服务器也安装打印驱动
// - 多个用户共享打印服务
// - 一个漏洞影响所有用户
// 3. 域控制器
// - 有些域控制器也安装打印服务
// - 一旦被利用直接控制整个域
// - 影响最大
// 4. 普通工作站
// - 每台 Windows 电脑都有打印服务
// - 但通常不开放网络打印
// - 本地攻击面为主
4.5 为什么这两个漏洞对 SRC 特别重要
| 原因 | 说明 |
|---|---|
| SYSTEM 权限 | 直接获得最高系统权限,不需要提权 |
| 无需认证 | 匿名就能打,不需要任何凭证 |
| 网络可达 | 远程就能触发,不需要物理接触 |
| 内网枢纽 | 打印服务器连接多个网段,是横向移动跳板 |
| 历史验证 | PrintNightmare 证明了这类漏洞的巨大危害 |

五、修复方案分析
微软在 10 月 Patch Tuesday 中修复了这两个 PostScript Printer Driver RCE 漏洞。修复方式是在 PostScript 解析器中完善了边界检查,修复了堆缓冲区溢出问题。
| CVE 编号 | 漏洞类型 | 修复方式 |
|---|---|---|
| CVE-2026-70147 | 堆缓冲区溢出 | 修复 PostScript 解析中的边界检查 |
| CVE-2026-70153 | 堆缓冲区溢出 | 修复 PostScript 解析中的内存管理 |
5.1 临时缓解措施
// 临时缓解措施(不需要打补丁)
// 1. 关闭 Print Spooler 服务
// - 在不需要打印的服务器上关闭 Spooler
// - 路径:services.msc > Print Spooler > 禁用
// - 这样攻击面完全消失
// - 但会影响打印功能
// 2. 限制网络打印访问
// - 只允许特定 IP 连接打印端口
// - 通过防火墙限制 9100/515 等端口
// - 减少暴露面
// 3. 移除 PostScript 驱动
// - 如果不需要 PostScript 打印
// - 可以卸载 PostScript 打印机驱动
// - 只保留必要的打印驱动
// 4. 启用打印安全策略
// - 配置打印机访问控制
// - 限制谁可以提交打印任务
// - 减少未授权访问风险
5.2 暴露面分级
| 暴露级别 | 情况 | 风险 |
|---|---|---|
| 严重 | 打印服务器未打补丁 + 开放网络打印 | 网络可达 SYSTEM RCE,直接沦陷 |
| 高 | 工作站未打补丁 + 本地打印服务开启 | 本地提权风险 |
| 中 | 已打补丁 + 打印服务开放 | 风险可控 |
| 低 | 关闭 Print Spooler 服务 | 不受影响 |
六、SRC 审计启示录
6.1 打印服务暴露面测绘
在 SRC 内网渗透测试中,打印服务是经常被忽略但极其危险的攻击面------很多企业花巨资建设防火墙和入侵检测,但打印服务器上一个漏洞就把所有防护击穿了。
| # | 检查项 | 检测方法 |
|---|---|---|
| 1 | 打印服务器识别 | 扫描内网 9100/515/631 端口,识别打印服务 |
| 2 | 打印机驱动审计 | 检查安装了哪些打印机驱动,是否有 PostScript 驱动 |
| 3 | 补丁级别检查 | 检查打印服务器的 Windows Update 补丁级别 |
| 4 | 网络访问控制 | 检查打印服务是否对整个内网开放 |
| 5 | Spooler 服务状态 | 检查哪些服务器运行了 Print Spooler 服务 |
6.2 Windows 服务漏洞审计要点
// Windows 服务漏洞审计要点
// 1. 高权限服务识别
// - 识别哪些服务运行在 SYSTEM 权限下
// - 这些服务一个漏洞就是最高权限
// - 打印、终端、域控服务都是重点
// 2. 网络可达性审计
// - 识别哪些服务监听在网络端口上
// - 网络可达 = 远程攻击面
// - 比本地服务危险得多
// 3. 历史漏洞模式
// - 同一个服务反复出同类漏洞
// - 说明架构有系统性问题
// - 是漏洞挖掘的重点方向
// 4. 默认配置审计
// - 服务默认是否开启
// - 默认配置是否安全
// - 用户会不会改变默认配置
// 5. 补丁覆盖率
// - 企业中服务器的补丁覆盖率
// - 很多企业只更新关键服务器
// - 打印服务器往往被忽略
6.3 内网服务安全检查清单
// 内网服务安全检查清单
// 1. 打印服务
// - 打印服务器是否及时打补丁
// - 打印端口是否对整个内网开放
// - 是否安装了不必要的打印机驱动
// 2. 终端服务
// - RDP 服务是否暴露
// - 是否启用了网络级别认证
// - 终端服务器补丁是否及时
// 3. 文件服务
// - SMB 服务版本是否最新
// - 是否启用了 SMB 签名
// - 共享权限是否最小化
// 4. 域服务
// - 域控制器补丁是否及时
// - AD 服务是否暴露
// - 是否有不必要的域服务
// 5. 服务治理
// - 有没有服务资产清单
// - 定期检查不必要的服务
// - 关闭不用的服务减少攻击面
七、防护建议
- 立即打补丁:安装 10 月 Windows Update,修复两个 PostScript RCE 漏洞
- 关闭不必要打印服务:在不需要打印的服务器上关闭 Print Spooler 服务
- 限制网络打印访问:通过防火墙限制打印端口的访问范围
- 移除不必要驱动:卸载不需要的 PostScript 打印机驱动
- 定期安全审计:定期审计内网服务暴露面,关闭不必要的服务
- 应急响应准备:制定打印服务安全事件响应流程
八、总结
CVE-2026-70147 和 CVE-2026-70153 这两个 PostScript Printer Driver RCE 漏洞,是 2026 年 10 月 Patch Tuesday 中最典型的"内网枢纽型"漏洞。它们不需要用户做任何事,只要能网络访问打印服务,就能在 SYSTEM 权限下执行代码------这是内网渗透测试中最理想的漏洞类型。这个案例告诉我们几件重要的事:第一,Windows 打印服务是长期高危攻击面------从 PrintNightmare 到这次的 PostScript 漏洞,每隔几年就会出新的问题,因为这个子系统太复杂、权限太高、部署太广;第二,打印服务器是内网的隐形枢纽------它连接多个网段,被大量客户端信任,一旦被利用就是横向移动的完美跳板;第三,企业安全不能只看边界------很多企业把防火墙做得很好,但内网服务的安全审计往往被忽略。在实战中,我越来越重视内网服务暴露面的测绘。很多时候,边界防护做得再好,内网一个未打补丁的打印服务器就能让所有防护形同虚设。做内网安全,要记住:不是只有域控制器才值得关注,那些"不起眼"的基础设施服务,往往才是攻击者真正想进的门。这个漏洞也提醒所有企业:定期做内网服务暴露面审计,关闭不必要的服务,及时打补丁------这些基础工作,比什么高级威胁检测都管用。
