点击标题下「蓝色微信名」可快速关注
这是CVE-2021-31166(“ HTTP协议栈远程代码执行漏洞”)的概念证明,CVE-2021-31166http.sys是Microsoft在2021年5月修补的免费使用后取消引用。根据此推文,该漏洞发现者@mxms和fzzyhd1。
该错误本身发生在http!UlpParseContentCoding该函数具有本地变量LIST_ENTRY并将其附加到其后的地方。完成后,将其移入Request结构中。但它不在NULL本地列表中。这样做的问题在于,攻击者可以触发代码路径,以释放本地列表的每个条目,使它们悬空在Request对象中。
这是错误检查:
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 Site
00 fffff90e`a867e368 fffff804`19525382 nt!DbgBreakPointWithStatus
01 fffff90e`a867e370 fffff804`19524966 nt!KiBugCheckDebugBreak+0x12
02 fffff90e`a867e3d0 fffff804`19408eb7 nt!KeBugCheck2+0x946
03 fffff90e`a867eae0 fffff804`1941ad69 nt!KeBugCheckEx+0x107
04 fffff90e`a867eb20 fffff804`1941b190 nt!KiBugCheckDispatch+0x69
05 fffff90e`a867ec60 fffff804`19419523 nt!KiFastFailDispatch+0xd0
06 fffff90e`a867ee40 fffff804`1db3f677 nt!KiRaiseSecurityCheckFailure+0x323
07 fffff90e`a867efd0 fffff804`1daf6c05 HTTP!UlFreeUnknownCodingList+0x63
08 fffff90e`a867f000 fffff804`1dacd201 HTTP!UlpParseAcceptEncoding+0x299c5
09 fffff90e`a867f0f0 fffff804`1daa93d8 HTTP!UlAcceptEncodingHeaderHandler+0x51
0a fffff90e`a867f140 fffff804`1daa8ab7 HTTP!UlParseHeader+0x218
0b fffff90e`a867f240 fffff804`1da04c5f HTTP!UlParseHttp+0xac7
0c fffff90e`a867f3a0 fffff804`1da0490a HTTP!UlpParseNextRequest+0x1ff
0d fffff90e`a867f4a0 fffff804`1daa48c2 HTTP!UlpHandleRequest+0x1aa
0e fffff90e`a867f540 fffff804`1932ae85 HTTP!UlpThreadPoolWorker+0x112
0f fffff90e`a867f5d0 fffff804`19410408 nt!PspSystemThreadStartup+0x55
10 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 corruption
could 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 BugCheck
Arg3: fffff90ea867ed98, Address of the exception record for the exception that caused the BugCheck
Arg4: 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对象中。”
本文始发于微信公众号(Ots安全):CVE-2021-31166的概念验证(PoC)漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论