Windows PrintNightmare 漏洞和补丁分析

 聚焦源代码安全,网罗国内外最新资讯!

一、背景

CVE-2021-34527是发生在windows打印服务中的漏洞,攻击者可以利用该漏洞使用低权限用户加载恶意DLL,实现远程代码执行。该漏洞于6月29日以0day的形式被披露[1],被称为PrintNightmare,直到7月6号,微软才推出相应的紧急补丁[2]。此外,该漏洞和微软六月份修复的CVE-2021-1675漏洞十分类似,都是通过加载DLL的方式实现代码执行。

二、CVE-2021-1675分析

该漏洞发生在 AddPrinterDriverEx函数,它一共有三个参数,其中第三个参数是flag,该flag有一个特殊的值并未在官方文档中出现:APD_INSTALL_WARNED_DRIVER = 0x00008000。根据图 1中的代码逻辑,在调用InternalAddPrinterDriverEx之前,会通过bittest对flag的第0xf位进行校验。如果该值为1的话,则v12的值仍然为0,可以绕过24行中对Access的检查,成功调用InternalAddPrinterDriverEx。  

    

图1. APD_INSTALL_WARNED_DRIVER通过权限校验

微软在6月8日修复了该漏洞,具体是在AddPrinterDriverEx中加入了对权限的校验,重点在于YIsElevated、YIsElevationRequered和RunningAsLUA三个函数,当v12==0、v13==1并且v9==1时,flag中的0x8000会通过&操作被去掉,导致后续调用到SplAddPrinterDriverEx时权限验证失败,阻止了漏洞发生。

图 2. CVE-2021-1675漏洞补丁

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值