微软SMBv3 Client/Server远程代码执行漏洞安全风险通告(CVE-2020-0796)

admin 2022年8月22日00:47:22评论37 views字数 3687阅读12分17秒阅读模式

3月12日,微软发布安全公告披露了一个最新的SMBv3远程代码执行漏洞(CVE-2020-0796)。该漏洞类似于永恒之蓝,存在被蠕虫化利用从而导致规模受攻击可能,深信服建议广大用户务必及时更新安全补丁,加强攻击防御。





漏洞名称:微软SMBv3 Client/Server远程代码执行漏洞CVE-2020-0796

威胁等级高危

影响范围

Windows 10 1903,1909

Windows Server 1903,1909

漏洞类型:远程代码执行

利用难度:容易






漏洞分析


1 SMBv3介绍

服务器消息块(SMB),是一个网络通信协议,用于提供共享访问到文件,打印机和串行端口的节点之间的网络上。它还提供了经过身份验证的进程间通信机制。SMB的大多数用法涉及运行Microsoft Windows的计算机,在引入Active Directory之前被称为“ Microsoft Windows网络” 。相应的Windows服务是用于服务器组件的LAN Manager服务器和用于客户端组件的LAN Manager工作站。


Windows 10和Windows Server 2016引入了SMB 3.1.1 。除了在SMB3中添加的AES-128 CCM加密外,该版本还支持AES-128 GCM加密,并使用SHA-512哈希实现预认证完整性检查。当使用SMB 2.x和更高版本连接到客户端时,SMB 3.1.1还使安全协商成为必需。


2 漏洞描述

CVE-2020-0796,微软SMBv3 Client/Server远程代码执行漏洞。该漏洞存在于srv2.sys文件中,由于SMB没有正确处理压缩的数据包,在解压数据包的时候使用客户端传过来的长度进行解压时,并没有检查长度是否合法,最终导致整数溢出。


3 详细分析

步骤1: 首先,SMB调用srv2!Srv2ReceiveHandler函数接收数据包,并根据ProtocolId设置对应的处理函数:

微软SMBv3 Client/Server远程代码执行漏洞安全风险通告(CVE-2020-0796)

微软SMBv3 Client/Server远程代码执行漏洞安全风险通告(CVE-2020-0796)

Srv2ReceiveHandler函数

如果判断数据包中为压缩的数据(ProtocolID = 0xfc4d5342),则调用Srv2DecompressMessageAsync函数。

步骤2: srv2!Srv2DecompressMessageAsync函数会继续调用 Srv2DecompressData函数:

微软SMBv3 Client/Server远程代码执行漏洞安全风险通告(CVE-2020-0796)

Srv2DecompressMessageAsync函数

微软SMBv3 Client/Server远程代码执行漏洞安全风险通告(CVE-2020-0796)

Srv2DecompressData函数

在Srv2DecompressData函数中,使用SrvNetAllocateBuffer进行内存分配时,未对OriginalCompressedSegmentSize和Offset/Length的长度进行任何检查,对二者的和也未进行安全检查。


步骤3: srv2!Srv2DecompressData函数调用SmbCompressionDecompress函数,进而调用nt!RtlDecompressBufferXpressLz函数进行实际的数据解压过程。

步骤4: 在nt!RtlDecompressBufferXpressLz函数进行数据解压缩时,首先进行smb compress协议数据包的解析,获取其中包含的需要解压缩的数据的大小,并和之前通过SrvNetAllocateBuffer分配的buffer的OriginalCompressedSegmentSize值进行比较,确认其大小不大于OriginalCompressedSegmentSize,然后进行内存拷贝:

微软SMBv3 Client/Server远程代码执行漏洞安全风险通告(CVE-2020-0796)

nt!RtlDecompressBufferXpressLz函数

步骤5:若v21大于OriginalCompressedSegmentSize,则返回0xC0000242错误。因为在步骤2中进行内存分配时没有做长度检查,所以如果传入一个很大的OriginalCompressedSegmentSize值触发整数溢出,此时v21就可以设置一个极大值,但可以通过对decompress size的判断,最终调用qmemcpy拷贝一个极大的size导致缓冲区溢出。


而在微软的补丁包中,添加了对两个长度的检查,以此来确保不会发生溢出。进行安全更新后Srv2DecompressDat函数如下:

微软SMBv3 Client/Server远程代码执行漏洞安全风险通告(CVE-2020-0796)

更新后的Srv2DecompressData函数

利用此漏洞,远程未经身份验证的攻击者通过使用SMBv3连接到易受攻击的Windows计算机,或通过使易受攻击的Windows系统启动与SMBv3服务器的客户端连接,就可以在易受攻击的系统上以SYSTEM特权执行任意代码。

目前微软官方已经发布了针对此漏洞的安全补丁。经千里目实验室安全研究员分析,此漏洞危害较大,且漏洞信息已快速传播,建议用户尽快安装安全更新补丁。


影响范围


目前受影响的Microsoft版本:
Windows 10 Version 1903 for 32-bit Systems
Windows 10 Version 1903 for ARM64-based Systems
Windows 10 Version 1903 for x64-based Systems
Windows 10 Version 1909 for 32-bit Systems
Windows 10 Version 1909 for ARM64-based Systems
Windows 10 Version 1909 for x64-based Systems
Windows Server, version 1903 (Server Core installation)
Windows Server, version 1909 (Server Core installation)


解决方案


1 漏洞检测

建议用户通过漏洞检测工具对网络中的漏洞威胁进行排查。


深信服云眼已完成检测更新,可对用户线上服器进行探测,保障用户业务安全。如需检测互联网业务是否存在漏洞的用户,可注册信服云眼账号,获取30天免费体验。
注册地址为:
https://saas.sangfor.com.cn

深信服云镜同样在漏洞爆发的第一时间即完成检测能力的发布,部署了云镜的用户可以通过升级来快速检测网络中是否受该高危风险影响。离线使用云镜的用户需下载离线更新包来获得漏洞检测能力。


2 漏洞修复

微软目前已发布针对此漏洞的安全更新补丁,深信服建议广大用户及时确认所用Windows版本,并下载对应版本安全补丁进行更新:

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796


深信服终端安全检测响应平台EDR,已完成漏洞规则库的紧急更新,支持该漏洞的检测及补丁分发。EDR3.2.10及以上版本需要升级相应的SP包,更新漏洞补丁规则库版本到202031317395,即可检测漏洞并分发补丁进行漏洞修复。联网用户可直接在线更新,离线升级包及漏洞补丁规则库已上传至深信服社区,有需要的用户请到深信服社区下载。


3 漏洞防御

建议用户更新安全设备相关防护策略,防范相关漏洞攻击。


深信服下一代防火墙AF已经更新漏洞规则库,相关用户更新至最新的安全防护规则,即可轻松抵御此高危风险。


深信服安全感知平台SIP同样可以检测利用该漏洞的攻击,并实时告警,同时可联动深信服下一代防火墙、深信服EDR等产品实现对攻击者IP的封堵。


深信服安全运营服务,通过以“人机共智”的服务模式帮助用户快速扩展安全能力。针对该漏洞,安全运营服务提供漏洞检查、安全设备策略检查等服务,确保第一时间检测风险以及更新策略,防范此类威胁。


个人用户也可通过手动修改注册表,防止被黑客远程攻击:运行regedit.exe,打开注册表编辑器,在HKLMSYSTEMCurrentControlSetServicesLanmanServerParameters建立一个名为DisableCompression的DWORD,值为1,禁止SMB的压缩功能。


参考链接


[1].https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796
[2].https://www.mdsec.co.uk/2020/02/cve-2020-0618-rce-in-sql-server-reporting-services-ssrs/


时间轴


2020/3/11



深信服千里目实验室监测到互联网中关于CVE-2020-0796的信息

2020/3/11



深信服千里目实验室发布微软3月份补丁日重点漏洞通告,

内容包含对该漏洞的预警及缓解措施

2020/3/12



微软正式更新CVE-2020-0796漏洞补丁

    2020/3/13




深信服千里目实验室发布漏洞分析文章以及深信服解决方案



点击阅读原文,关注深信服智安全Wiki平台,及时查询漏洞的产品解决方案,我们持续更新(需登录)~

微软SMBv3 Client/Server远程代码执行漏洞安全风险通告(CVE-2020-0796)



原文始发于微信公众号(深信服千里目安全实验室):微软SMBv3 Client/Server远程代码执行漏洞安全风险通告(CVE-2020-0796)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年8月22日00:47:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   微软SMBv3 Client/Server远程代码执行漏洞安全风险通告(CVE-2020-0796)http://cn-sec.com/archives/784875.html

发表评论

匿名网友 填写信息