1.概述 2.漏洞描述 该漏洞是由于SMBv3协议中处理压缩消息时未进行严格安全检查所导致的。针对服务器,攻击者可以通过发送特制数据包至目标服务器以利用此漏洞;针对客户端,攻击者可以通过配置恶意SMBv3服务器,并诱使用户连接到该服务器以利用此漏洞。目前有网友已经在Github上公开了该漏洞的检测工具。 3.受影响范围 主要受影响的Windows版本如下: ●Windows 10 Version 1903 for 32-bit Systems ●Windows 10 Version 1903 for x64-based Systems ●Windows 10 Version 1903 for ARM64-based Systems ●Windows Server, Version 1903 (Server Core installation) ●Windows 10 Version 1909 for 32-bit Systems ●Windows 10 Version 1909 for x64-based Systems ●Windows 10 Version 1909 for ARM64-based Systems ●Windows Server, Version 1909 (Server Core installation) 4.漏洞原理分析 SMB 3.1.1协议出现时间较晚,由Windows 10 1903引入(2019年5月)。此协议涉及的模块包括mrxsmb20.sys、srv2.sys、srvnet.sys等。此次问题和永恒系列一样,也是出现在srv2.sys这个文件中。 在SMB 3.1.1协议中,引入了数据压缩传输的概念,以求能够提高传输效率。但在解压缩时,由于考虑不严谨导致出现此次问题,而修补后的代码加入了长度范围验证,具体对比如下: 图 4-1 产生溢出漏洞的代码 图 4-2 打补丁后的代码 图 4-3 产生溢出漏洞的代码 SMB2协议中关于压缩类型数据包定义如下图: 图 4-4 SMB2_COMPRESSION_TRANSFORM_HEADER 从上图可以看到,此数据包目前只存在于SMB 3.1.1中。 申请的内存长度类型为unsigned int,传输数据中OriginalSize和offset也都是unsigned int 类型。如没有进行范围验证,则可能产生溢出。 在调试中产生溢出的代码上下文如下图所示。 图 4-5 windbg调试漏洞代码 5.修复及缓解建议 图5-1 安天智甲检测漏洞 下载链接:https://bbs./forum.php?mod=viewthread&tid=83848 扫描二维码 进入安天创意 论坛下载工具 图5-2 CVE-2020-0796免疫工具 (1)禁用命令:Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters' DisableCompression -Type DWORD -Value 1 -Force (2)启用命令:Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters' DisableCompression -Type DWORD -Value 0 -Force 6.参考资料 [1]CVE-2020-0796 | Windows SMBv3 Client/Server Remote Code Execution Vulnerability https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796 [2]Microsoft Update Catalog https://www.catalog.update.microsoft.com/Search.aspx?q=KB4551762 |
|
来自: kaller_cui > 《网络空间》