Cointime

扫码下载App
iOS & Android

DHCP服务远程代码执行漏洞CVE-2023-28231分析及PoC

补丁分析

补丁比较明显,限制了DHCP中某一种消息结构的个数小于等于0x20。

PoC

A. 到底是授权还是非授权无条件代码执行?

官方已经将漏洞触发条件修改为无需授权。

参考补丁函数的代码执行路径(该函数是作为DHCPv6的一个分支进行处理的),这说明在安装了DHCP服务以后,至少该漏洞还需要一个前提。服务器必须启用了静态IPV6的地址。

参考官方部分DHCP协议相关的示例代码,发现我们以客户端的DHCP API函数(如:DhcpV6GetFreeIPAddress等)向服务端发送请求(先由135端口通过身份验证,之后才能直接与DHCP自己的端口通讯),都会返回需要DHCP服务管理权限的错误。但测试期间偶然会有一些我设置的关键断点被触发。这些断点用来监控DHCPv6协议上层的数据接收入口DhcpV6ProcessPacket(至少此时是这样认为的)。这表明可能存在其他的方式向DHCPv6协议发送数据。然后通过Wireshark对所有在调试断点触发前后一段时间内捕获的DHCPv6协议数据过滤分析。发现了DHCPv6中的另一种数据处理形式:DHCPV6广播。

借助GPT给出的DHCPv6相关标志,特征,以及示例代码,快速构造一个DHCPv6广播发送的示例,参考Wireshark来纠正我们DHCP数据包内容,尝试使其到达漏洞函数ProcessRelayForwardMessage。

这里需要注意,其他类型的DHCPv6广播都能直接被DhcpV6ProcessPacket 最上层的处理函数接收,但是我们关注的最关键的DHCP标志为0x0c的中继转发消息却并不被接收。

梳理DHCP的消息循环机制,我们发现DhcpV6ProcessPacket这里并不是消息最初被接收的地方。我们构造的DHCP中继转发消息在DhcpV6MessageLoop就被丢弃了。这样我们构造的DHCPv6中继转发消息不仅需要符合漏洞函数本身的验证需求,在此之前我们还需要保证DHCPv6中继转发消息在DhcpV6MessageLoop验证正确(这里绝大部分数据验证,构造过程,主要依赖Wireshark对DHCP数据报的识别)。

一系列错误尝试之后,我们得到了一个可以触发到补丁所在变量的代码路径方式。

然后一切都好了吗?

B. 如何触发漏洞?

引用我们最开始对补丁的描述,并经过前一步对DHCPv6相关协议的了解我们已经知道补丁修补是限制DHCPv6中的hopcount(本文的分析中,我们将hopcount侠义的理解为中继转发消息个数)个数不能大于等于0x20。 Hopcount的实际意义在这里并不重要,但想要了解可以参考下面的解释。

在ProcessRelayForwardMessage全局,hopcount是一个循环累加的过程。然而通过这种方式,我们无论如何也不能把hopcount累加到一个超过0x20的值。

并且补丁中已经存在2处可以限制hopcount个数的判断,如下:

一是函数入口时对延迟消息包中第一个中继转发结构中声明的中继转发消息个数的判断。

二是每次判断玩一个中继转发消息的类型标志后,都会验证已经保存的中继转发消息头个数是否和下一个中继转发消息头中的个数匹配。这里似乎完全不能出现因为中继转发消息累加或者个数判断出错的情形。

那到底这个漏洞到底是如何触发,补丁的意义有是什么呢?

C. 重新收集信息

参考赛博昆仑给出的崩溃堆栈截图,对照函数偏移,很明显他们也是使用的server2022的系统版本,我们能比较准确的确定最后崩溃的地址,然后倒推原因。

根据崩溃地址,这是一个越界读。我们能确信的一点,就是全局变量中的那个数组计数变量绝对是一个远大于0x20的变量。而这个变量又是如何被错误的修改过呢?

我们已经排除通过构造中继转发消息头里面的个数,以及本身累加过程中出现错误的可能,

我们现在就需要寻找该变量可能被修改的地方。

通过在调试时观察中继转发消息数据复制的过程以及我们关注的目标变量在DHCPv6内存中的位置偏移,终于我们意识到一种可能。漏洞并不是依靠构造消息头的标志或者DHCPv6协议本身的流程控制关键的hopcount值,而是通过第33个中继转发消息的数据去直接覆盖掉hopcount这个值的内存。

到这里,PoC的构造就基本没有太多问题了。分析我们之前的DHCPv6广播数据包,我们发现当我们声明一个最多的中继转发结构个数时时,实际可以携带了0x21个。而代码中只预留了0x20个缓冲区地址。所以。补丁的最主要作用是限制DHCP服务不去拷贝第0x21个中继转发结构。

D. PoC

PoC链接:https://github.com/numencyber/Vulnerability_PoC/tree/main/CVE-2023-28231

我们的PoC崩溃堆栈如下:

总结

分析这类网络协议漏洞,很大一部分帮助来源于Wireshark对数据包的自动分析。它帮助我们理解协议结构以及基本的数据包错误原因和位置。虽然各个系统平台对于同一种协议都有自己的实现方式和处理逻辑,但他们在传输过程中,都遵循同样的标准。

另一方面,另一个分析该漏洞的关键在于偶然获取的DHCP服务器对恶意DHCP服务其检查功能。它提供了最原始的参照数据包以及DHCPv6服务可以接收广播消息的事实。这也提示我们该漏洞的确可以以非授权无交互的条件去触发。

再次,GPT帮助我们解释了大量的陌生变量以及标志的具体含义,以及初始DHCPV6广播数据发包代码。至少省去了大量查询时间和协议阅读理解过程。

最后,分析漏洞后续的流程:该漏洞能够利用的可能似乎比较小。一方面是该漏洞能导致的结果就是我们构造的第0x21个中继转发结构可以溢出覆盖这个全局数组计数变量。但限制于协议初期对DHCPv6延迟消息的结构检查以及漏洞函数中本身的标志验证,我们似乎只能覆盖这个计数为一个过大的值,这使我们想在后续构造可控的读写过程显得比较困难。

评论

所有评论

推荐阅读

  • Dayton公司Niobium获得550万美元的种子轮融资,将用于开发FHE加速的商业应用程序。

    总部位于俄亥俄州代顿的定制硅提供商Niobium获得了550万美元的种子轮融资,由Fusion Fund领投,Morgan Creek Capital、Rev1 Ventures、Ohio Innovation Fund和Hale Capital也参与了投资。此次融资中,Niobium增加了新的董事会成员Shane Wall,他是Fusion Fund合伙人、CXO Network总裁、惠普公司前首席技术官和全球惠普实验室负责人。该公司计划利用这笔资金开发FHE加速的商业应用,包括医疗和制药研究、金融欺诈检测、区块链公共账本、数字广告等领域,这些领域需要在保持完全隐私的同时共享和分析数据。Niobium开发定制硬件解决方案,提供专用硬件,能够将完全同态加密(FHE)推进商业应用。该技术使数据在计算过程中保持加密状态,实现了一种新型的多方机器学习和统计分析应用,具有数学上的隐私保证。该公司在俄亥俄州哥伦布、俄勒冈州波特兰和加利福尼亚州旧金山设有办事处。Niobium的CEO和总裁Kevin Yoder表示:“获得这笔融资证明了我们在Niobium所做的开创性工作,并推动我们进入将FHE加速器芯片推向市场的下一个关键阶段。我们通过先进的加密技术重新定义数据隐私和安全的愿景现在更接近现实。这项投资使我们能够快速探索需要绝对数据隐私的应用,为各行各业开启了保密计算的新可能性。我们感谢我们的投资者分享我们对更安全和私密的数字未来的愿景。”

  • Botanix Labs宣布完成1150万美元融资,Polychain Capital等参投

    Botanix Labs宣布筹集了1150万美元的资金,Polychain Capital、Placeholder Capital、Valor Equity Partners和ABCDE等机构参投。其他投资方包括Andrew Kang、Fiskantes、Dan Held、The Crypto Dog、Charlie Spears、Altcoin Sherpa、Dovey Wan、Jebus、Icebergy、Crypto ISO、Davis、Walt Smith和BRC-20代币标准的创造者Domo。

  • Galaxis完成1000万美元融资,Chainlink、Rarestone Capital等参投

    新加坡Web3平台Galaxis宣布,在其代币发行前已完成1000万美元融资。此轮融资的参与方包括Chainlink、ENS、Rarestone Capital、Taisu Ventures以及ENS联合创始人Nick Johnson等。Galaxis自称是一个“后炒作时代的NFT实用平台”,此前曾为DJ SteveAoki、演员ValKilmer等名人推出NFT系列。该平台已售出超过22.5万枚NFT,在二级市场产生逾3.2万枚ETH(约1亿美元)的销售额,目前正准备进行大规模分发。

  • 香港金管局成立Ensemble项目架构工作小组 初期聚焦代币化资产交易

    香港金融管理局5月7日宣布成立Ensemble项目架构工作小组,与业界共同建立标准和提出建议,支持香港代币化市场发展。工作小组将推动制定业内标准,以支援批发层面央行数码货币(wCBDC)、代币化货币和代币化资产之间的互通性。工作小组会就特定议题提出建议,初期会聚焦为代币化资产交易建立机制,透过wCBDC畅顺地进行代币化存款的银行同业结算。工作小组亦会协助设计和构建计划于今年年中推出的Ensemble项目沙盒,进一步研究及测试代币化用例。

  • 澳大利亚税务局将强制加密货币交易所提供120万交易者的个人和交易细节

    澳大利亚税务局将强制加密货币交易所提供120万交易者的个人和交易细节,以打击试图逃避纳税义务的人。据报道,监管机构要求加密货币交易所提供高达120万个账户的个人数据和交易细节。澳大利亚金融评论报告称,“作为四月份宣布的监视行动的一部分,税务局表示,其最新的数据收集协议将要求指定的加密货币交易所提供交易者的姓名、地址、生日和交易细节,以帮助其审计遵守销售资本利得税的义务。”税务局表示,这些数据将有助于识别未报告加密货币相关活动的交易者,包括将加密资产兑换成货币或用于支付货物和服务的交易。澳大利亚加强对加密货币行业的打击自FTX破产以来更加明显。税务局去年明确表示,其对加密产品的资本利得税也适用于包装代币或代币与去中心化借贷协议的交互。

  • 币安研究院:4月加密货币总市值下降11.3%,美元稳定币总供应达两年来高点

    币安研究院(Binance Research)发布 4 月加密市场报告,要点如下:4 月加密货币总市值下降 11.3%,导致这一情况的主要原因包括降息预期的变化、地缘政治风险以及现货比特币 ETF 流量的放缓;与此同时,美元锚定稳定币总供应量达到两年来最高点。USDT 和 USDC 供应一直在稳步增加,表明持续的资本流入加密市场;市值排名前十代币大多数在本月结束时都处于下跌状态,TON 和 BNB 则分别上涨 1.0%和小幅下跌 1.4%,ETH 和 BTC 在 4 月份都下跌了 8%左右,XRP 和 SHIB 本月分别下跌 17.1%和 19.2%。DOGE、ADA、SOL 和 AVAX 截至月底下跌了约 30%;4 月 DeFi 整体 TVL 下降 0.7%。在排名前十的区块链中,Merlin Chain TVL 增长最快,增幅达 1000%,TVL 超过 10 亿美元;NFT 市场在 4 月也出现下滑,月总销售额下降 21%,至 11.1 亿美元。当月销售额前五的 NFT 系列中有四款属于比特币生态。

  • 香港比特币现货ETF首次出现净赎回,昨日净赎回75.36枚比特币

    根据 SoSo Value 数据,香港比特币现货 ETF 自 4 月 30 日开启交易以来首次出现净赎回,昨日(5 月 6 日)单日净赎回比特币 75.36 枚,比特币持有总量为 4150 枚,单日成交额为 860 万美元,总净资产为 2.66 亿美元。另外,香港以太坊现货 ETF 连续 4 个交易日保持单日净申购,昨日单日净申购 999.75 枚以太坊,以太坊持有总量 17280 枚,单日成交额为 180 万美元,总净资产为 5487 万美元。SoSoValue 注:香港加密 ETF 支持现货申赎机制,净申购是指一定时间段内申购金额和赎回金额之差为正,即买入比卖出多,反之则为净赎回。

  • 美国比特币现货ETF总资产净值为522.34亿美元

    根据SoSoValue数据,昨日(美东时间5月6日)美国比特币现货ETF总净流入2.17亿美元。昨日灰度ETF GBTC单日净流入393.70万美元,目前GBTC历史净流出为174.58亿美元。昨日单日净流入最多的比特币现货ETF为富达ETF FBTC,单日净流入为9919.36万美元,目前FBTC历史总净流入达81.30亿美元。其次为Ark Invest和21Shares的ETF ARKB,单日净流入为7564.12万美元,目前ARKB历史总净流入达22.37亿美元。 截止发稿前,比特币现货ETF总资产净值为522.34亿美元,ETF净资产比率(市值较比特币总市值占比)达4.19%,历史累计净流入已达117.78亿美元。

  • 华尔街日报:苹果正在研发数据中心AI芯片

    苹果正在研发可用于在数据中心服务器上运行人工智能软件的芯片,此举有可能使其在人工智能领域竞争中占据优势。据知情人士透露,该项目的内部代号为 ACDC(Apple Chips in Data Center)。ACDC 项目已经进行好几年,目前还不确定新芯片何时会推出。此前苹果公司宣布将于 6 月 10 日至 14 日在线举行第 35 届全球开发者大会(WWDC)。知情人士表示,此次大会将重点关注人工智能。届时该公司有望公布其人工智能战略。(华尔街日报)

  • 加密超级政治行动委员会为24年美国大选筹集超1亿美元

    据PUBLIC CITIZEN报道,由加密货币行业支持的超级政治行动委员会已经筹集超过 1.02 亿美元,在参与 2024 年大选的所有超级政治行动委员会中排名第三。加密货币超级PAC的政治资金中有一半以上(约 5400 万美元)来​​自直接企业支出,主要是Coinbase和Ripple Labs。