CVE-2021-31166的概念验证(PoC)漏洞

  • A+
所属分类:安全文章

点击标题下「蓝色微信名」可快速关注

这是CVE-2021-31166(“ HTTP协议栈远程代码执行漏洞”)的概念证明,CVE-2021-31166http.sys是Microsoft在2021年5月修补的免费使用后取消引用。根据此推文,该漏洞发现者@mxmsfzzyhd1

CVE-2021-31166的概念验证(PoC)漏洞

该错误本身发生在http!UlpParseContentCoding该函数具有本地变量LIST_ENTRY并将其附加到其后的地方。完成后,将其移入Request结构中。但它不在NULL本地列表中。这样做的问题在于,攻击者可以触发代码路径,以释放本地列表的每个条目,使它们悬空在Request对象中。

CVE-2021-31166的概念验证(PoC)漏洞

这是错误检查:

KDTARGET: Refreshing KD connection
*** Fatal System Error: 0x00000139 (0x0000000000000003,0xFFFFF90EA867EE40,0xFFFFF90EA867ED98,0x0000000000000000)
Break instruction exception - code 80000003 (first chance)
A fatal system error has occurred.Debugger entered on first try; Bugcheck callbacks have not been invoked.
A fatal system error has occurred.
nt!DbgBreakPointWithStatus:fffff804`19410c50 cc int 3
kd> kp # Child-SP RetAddr Call Site00 fffff90e`a867e368 fffff804`19525382 nt!DbgBreakPointWithStatus01 fffff90e`a867e370 fffff804`19524966 nt!KiBugCheckDebugBreak+0x1202 fffff90e`a867e3d0 fffff804`19408eb7 nt!KeBugCheck2+0x94603 fffff90e`a867eae0 fffff804`1941ad69 nt!KeBugCheckEx+0x10704 fffff90e`a867eb20 fffff804`1941b190 nt!KiBugCheckDispatch+0x6905 fffff90e`a867ec60 fffff804`19419523 nt!KiFastFailDispatch+0xd006 fffff90e`a867ee40 fffff804`1db3f677 nt!KiRaiseSecurityCheckFailure+0x32307 fffff90e`a867efd0 fffff804`1daf6c05 HTTP!UlFreeUnknownCodingList+0x6308 fffff90e`a867f000 fffff804`1dacd201 HTTP!UlpParseAcceptEncoding+0x299c509 fffff90e`a867f0f0 fffff804`1daa93d8 HTTP!UlAcceptEncodingHeaderHandler+0x510a fffff90e`a867f140 fffff804`1daa8ab7 HTTP!UlParseHeader+0x2180b fffff90e`a867f240 fffff804`1da04c5f HTTP!UlParseHttp+0xac70c fffff90e`a867f3a0 fffff804`1da0490a HTTP!UlpParseNextRequest+0x1ff0d fffff90e`a867f4a0 fffff804`1daa48c2 HTTP!UlpHandleRequest+0x1aa0e fffff90e`a867f540 fffff804`1932ae85 HTTP!UlpThreadPoolWorker+0x1120f fffff90e`a867f5d0 fffff804`19410408 nt!PspSystemThreadStartup+0x5510 fffff90e`a867f620 00000000`00000000 nt!KiStartSystemThread+0x28
kd> !analyze -v[...]******************************************************************************** ** Bugcheck Analysis ** ********************************************************************************
KERNEL_SECURITY_CHECK_FAILURE (139)A kernel component has corrupted a critical data structure. The corruptioncould potentially allow a malicious user to gain control of this machine.Arguments:Arg1: 0000000000000003, A LIST_ENTRY has been corrupted (i.e. double remove).Arg2: fffff90ea867ee40, Address of the trap frame for the exception that caused the BugCheckArg3: fffff90ea867ed98, Address of the exception record for the exception that caused the BugCheckArg4: 0000000000000000, Reserved

补丁

“在大多数情况下,未经身份验证的攻击者可以使用HTTP协议栈(http.sys)将特制数据包发送到目标服务器,以处理数据包,”微软在其

   通报

解释道 。考虑到该漏洞是可感染的,Microsoft建议优先考虑对受影响的服务器进行修补。

“ CVSS评分为9.8,所宣布的漏洞有可能直接受到影响,并且利用起来也非常简单,从而导致受影响产品的远程未经身份验证的拒绝服务(蓝屏死机),” McAfee的史蒂夫·波沃尼(Steve Povolny)在

   分析

当时的缺陷时表示。Povolny解释说,问题在于Windows在处理包含HTTP请求的网络数据包中的对象时如何不正确地跟踪指针。他说,该漏洞仅影响Windows 10和Windows Server的最新版本,这意味着面向Internet的企业服务器的暴露受到“相当大的限制”。这是因为这些系统中的许多系统都运行长期服务通道(LTSC)版本,例如Windows Server 2016和2019,这些版本不容易受到此漏洞的影响。

漏洞可利用的公共漏洞

曾经在Microsoft工作的研究员Axel Souchet将PoC发布到GitHub,并指出该bug发生在中http!UlpParseContentCoding,该函数具有本地功能,并在 其中 LIST_ENTRY 添加了项。“完成后,将其移至Request结构;但它不在 NULL 本地列表中。”他解释说。“与此有关的问题是,攻击者可以触发一条代码路径,释放本地列表的每个[条目],使它们悬空在Request对象中。”

项目地址:https://github.com/0vercl0k/CVE-2021-31166

本文始发于微信公众号(Ots安全):CVE-2021-31166的概念验证(PoC)漏洞

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: