Cointime

扫码下载App
iOS & Android

HTTP提权漏洞CVE-2023-23410分析及PoC

2023年3月,HTTP协议被发现存在两个漏洞:本地提权漏洞和远程代码执行漏洞。本文将主要探讨本地提权漏洞CVE-2023-23410的发现和分析过程。

漏洞补丁分析

根据ZDI BLOG对这个月补丁的汇总,我们知道这个http提权漏洞是由研究人员提交给ZDI的一个整数溢出的漏洞。 对比更新前后的http代码,的确发现一个比较明显的整数溢出判断修补代码, 如下图所示:

初步分析该函数,发现这是一个循环保存ServiceName到内存的函数。并且ServiceName个数最多为0x40。然后补丁的作用是把单个ServiceName的长度限制为小于 0xfffc。

在之后的UlpAddServiceNameToContainer函数中有一个小疑惑:这里已经有一个另外的判断ServiceName长度小于0xFFFFFFE8。可以理解这里的判断是为了防止内存申请溢出,但这里的判断和本次补丁修补的判断0xfffc似乎差距太大。

分析代码路径,大方向上这里似乎有两种触发到漏洞补丁函数的途径。 一是通过对本地http服务的设置使用UlSetConfigGroupProperty或者UlSetServerSessionProperty都可以。 另外一种则是通过远程客户端的身份验证响应包,即UlCaptureHttpResponse获取UlExtractAndAppendAuthenticationResponseInfo中的ChannelBindConfig数据。

通常,如果http服务绑定一个对外的本地网络端口,则需要具备高系统权限。 在这里,我们尝试本地的http服务设置来触发漏洞函数补丁的代码路径。

构造PoC

参考微软对http API的一些说明,我们通过HttpSetUrlGroupProperty函数,将其第二个参数设置为HttpServerChannelBindProperty,然后逆向分析其中的一些数据结构以通过检查,我们可以自由设置UlCaptureChannelBindConfig函数中补丁限制的ServiceName长度。但这似乎并不能立即导致更严重的后果。

根据ChannelBindConfig这个关键字,我们注意到UlCopyChannelBindConfigToIrp函数。该函数会具体解析并复制结构体里面所有数据并拷贝到用户提供的缓冲区。并且在其内部函数UlpComputeChannelBindConfigSize中,存在其计算结果溢出的情况。这导致在之后的复制ChannelBindConfig中ServiceName的内容时触发崩溃。崩溃堆栈如下:

虽然此时已经有了一个明确的poc代码路径。但在分析补丁时的那个小疑惑似乎更大了。如果只考虑计算ServiceName时的溢出,为什么补丁修补的是小于一个WORD级别的长度0xfffc,而不是一个DWORD级别的长度即((0xffffffff-otherlenth)/0x40)?

我们参考关键字ServiceName,然后发现在http其他的地方的确总是以WORD的长度来设定ServiceName长度,如UlFindServiceNameInContainer,以及另外一个相关函数UlpIsServiceContainerEquivalent。可以发现http协议整体上都是设定ServiceName长度为WORD。

虽然此次我们构造的溢出是UlpComputeChannelBindConfigSize中产生的,但根本原因是因为UlCaptureChannelBindConfig中,对ServiceName的原始输入长度判断出现错误。

PoC链接:https://github.com/numencyber/Vulnerability_PoC.git

Exp构造问题

在目前的poc中,最终发生内存损坏的地方是HTTP映射到内核(MmMapLockedPagesSpecifyCache)的用户层缓冲区内存(如下图),这似乎限制了我们构造利用。

上面的V12是MDL的指针,目前通过本地http服务直接设置HttpQueryUrlGroupProperty的调用路径似乎并不能控制MDL->flags的标志包含MDL_MAPPED_TO_SYSTEM_VA(0x01)或MDL_SOURCE_IS_NONPAGED_POOL(0x04)。

除此之外,似乎只能再尝试找到http服务中其他存在处理ChannelBindConfig或者ServiceName内存长度的代码流程。

总结

回顾上面的流程,我们目前的方式都是从 http本地设置的过程中去触发溢出。 另外一种从UlCaptureHttpResponse中的UlExtractAndAppendAuthenticationResponseInfo(这里必须使用Kerberos身份验证方式)去调用UlCaptureChannelBindConfig的路径应该也是可行的。

不过之后要从客户端向服务端触发一个类似UlCopyChannelBindConfigToIrp的流程(触发计算servicename长度导致溢出)。这种调用方式可能需要进一步的分析。在目前分析到的UlpCompleteAuthInfo中的UlFindServiceNameInContainer或者UlpIsServiceContainerEquivalent似乎并不会直接引起内存损坏。

不过即使我们以客户端的方式从远程触发了某种溢出流程,但最终还有一个关键的问题,即最后被溢出损坏的内存最好是系统内核的内存如:分页内存或者非分页内存而不是锁定的用户层内存。 

参考链接

  • https://www.zerodayinitiative.com/blog/2023/3/14/the-march-2023-security-update-review
  • https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-23410
评论

所有评论

推荐阅读

  • 对冲基金对美股科技七巨头净敞口升至22%创新高

    10月10日,据高盛数据及The Kobeissi Letter,投资者对大型科技股的看涨情绪达历史最高水平。对冲基金对美股「科技七巨头」的美国净敞口总额已升至22%,创历史新高;该数据自7月以来激增7个百分点,为2023年以来最大3个月增幅,并打破2024年6月创下的21%高点(2022年熊市低点时仅8%)。同期,对冲基金对半导体股票的美国净敞口升至12%,略低于2026年6月的14%峰值,而该指标在2025年初仅为2%。

  • 观点:Tom Lee称以太坊本轮周期有望涨至2.5万至5万美元

    10月10日,以太坊财库公司Bitmine董事长Tom Lee在采访中表示,以太坊在本轮周期中有望涨至2.5万至5万美元。他认为ETH过去五年长期在相近区间震荡,持续筑底可能为后续更大幅度的突破奠定基础。Tom Lee还预计ETH年底价格将超过5000美元,并指出若比特币涨至10万美元以上,ETH则有望达到约7500美元。不过市场预测数据显示,交易员目前认为ETH在2026年底前涨至5000美元的概率仅为4%。

  • 传出爆炸声的利雅得哈立德机场已无航班起降

    10月10日,据CCTV国际时讯,有目击者今天称,沙特首都利雅得哈立德国王国际机场3号航站楼当天下午传出爆炸声,机场内人员被疏散撤离。航班追踪网站“飞行雷达24”信息显示,该机场已无航班起降,部分飞往利雅得的航班已备降或返航。哈立德国王国际机场已发布旅客提醒说,建议旅客在前往该机场前联系航空公司并确认航班状态。

  • Anthropic自曝家丑:失控智能体试图访问多个政府网站,已向白宫汇报

    Anthropic周五表示,公司的AI智能体曾自主行动,试图访问多个联邦、州和地方政府网站。该公司没有透露涉及哪些政府机构,但表示已就这些事件向白宫作了汇报。 Anthropic在博客文章中称,其正在测试的一款AI模型采取了多项未经授权的行动,包括利用一所大学网站的漏洞下载数据,以及向一个政府机构发送了一份它被明确告知不得提交的表单。该公司表示,公司在七月开始审查AI采取的行动后,发现了这些事件。 费城警察局周五早些时候表示,Anthropic 已通知警方,该公司的技术曾向警方网站提交一条虚假的凶杀案线索。

  • BTC突破83000美元

    行情显示,BTC突破83000美元,现报83020.19美元,24小时跌幅达到0.2%,行情波动较大,请做好风险控制。

  • ETH突破2500美元

    行情显示,ETH突破2500美元,现报2500.03美元,24小时涨幅达到0.33%,行情波动较大,请做好风险控制。

  • 胡塞武装称沙特空袭也门萨那机场

    10月10日,据也门胡塞武装发布的信息,当地时间10日下午,沙特主导的联军空袭了胡塞武装控制下的也门首都萨那国际机场,空袭中投下了四枚炸弹。此外,沙特联军还空袭了胡塞武装控制下的也门哈杰省的一处通信设施,投下了三枚炸弹。沙特方面对此暂无回应。(金十)

  • 立讯精密:公司及立讯技术涉337调查,尚处立案初期

    10月10日,立讯精密公告,公司及控股子公司东莞立讯技术股份有限公司被列为美国国际贸易委员会337调查被调查方,涉及美国专利US 10,90.37万。ITC于当地时间2026年10月9日正式启动调查,调查编号337-TA-1526,目前尚处于立案初期,尚未就相关侵权主张作出实质认定;涉案产品处于客户验证阶段,尚未进入量产状态。

  • 法国财委会通过稳定币兑换税与加密离境税修正案

    10月10日,据Decrypt报道,法国国民议会财政委员会本周通过两项加密税收修正案:自2027年1月1日起,将兑换受MiCA监管的稳定币视为应税出售;并拟对过去10年内至少6年为法国税务居民、加密资产合计价值超80万欧元而迁居海外的纳税人征收离境税。委员会10月9日以31票对3票否决预算收入部分,全体国民议会将基于政府原始文本审议,修正案不会自动纳入,支持者需在10月13日开始的辩论中重新提出,正式投票定于10月20日,相关措施尚未成为法律。稳定币修正案由左翼GDR党团成员Nicolas Sansu及16名联署者提出,未设新税率,拟将收益纳入法国现行31.4%统一税制。委员会还通过修正案,允许将加密资产亏损结转10年抵扣未来收益。

  • Entropy花费569.98枚HYPE拍下xiaomi(小米)代码,或即将上线其永续合约

    10月10日,HIP-3市场部署者Entropy花费569.98枚HYPE拍下代码xiaomi,Entropy或即将上线其永续合约。