SMBv3新漏洞危害堪比永恒之蓝,深信服紧急提供解决方案
3月12日,微软正式发布安全补丁公告披露一个最新的SMBv3远程代码执行漏洞(CVE-2020-0796),攻击者利用该漏洞无须任何权限即可实现远程代码执行。 该漏洞类似于永恒之蓝,存在被蠕虫化利用从而导致规模受攻击可能,深信服建议广大用户务必及时更新安全补丁,加强攻击防御。 漏洞名称:微软SMBv3 Client/Server远程代码执行漏洞CVE-2020-0796 漏洞类型:远程代码执行 威胁等级:高危 影响范围:Windows 10 1903,1909;Windows Server 1903,1909 利用难度:容易
漏洞描述 Microsoft服务器消息块(SMB)协议是Microsoft Windows中使用的一项Microsoft网络文件共享协议。在大部分windows系统中都是默认开启的,用于在计算机间共享文件、打印机等。
Windows 10和Windows Server2016引入了SMB 3.1.1 。本次漏洞源于SMBv3没有正确处理压缩的数据包,在解压数据包的时候使用客户端传过来的长度进行解压时,并没有检查长度是否合法,最终导致整数溢出。
利用该漏洞,黑客可直接远程攻击SMB服务端远程执行任意恶意代码,亦可通过构建恶意SMB服务端诱导客户端连接从而大规模攻击客户端。
由于此漏洞危害大,且漏洞信息已快速传播,信服君建议用户尽快安装安全更新补丁,并做好防御措施。 影响范围
目前受影响的Microsoft版本分别为: o Windows 10 Version1903 for 32-bit Systems o Windows 10 Version1903 for ARM64-based Systems o Windows 10 Version1903 for x64-based Systems o Windows 10 Version1909 for 32-bit Systems o Windows 10 Version1909 for ARM64-based Systems o Windows 10 Version1909 for x64-based Systems o Windows Server,version 1903 (Server Core installation) o Windows Server,version 1909 (Server Core installation)
漏洞详细分析 1、首先,SMB调用srv2!Srv2ReceiveHandler函数接收数据包,并根据ProtocolId设置对应的处理函数:
▲Srv2ReceiveHandler函数 如果判断数据包中为压缩的数据(ProtocolID = 0xfc4d5342),则调用Srv2DecompressMessageAsync函数。 2、srv2!Srv2DecompressMessageAsync函数会继续调用 Srv2DecompressData函数: ▲Srv2DecompressMessageAsync函数 ▲Srv2DecompressData函数
在Srv2DecompressData函数中,使用SrvNetAllocateBuffer进行内存分配时,未对OriginalCompressedSegmentSize和Offset/Length的长度进行任何检查,对二者的和也未进行安全检查。 3、srv2!Srv2DecompressData函数调用SmbCompressionDecompress函数,进而调用nt!RtlDecompressBufferXpressLz函数进行实际的数据解压过程。 4、在nt!RtlDecompressBufferXpressLz函数进行数据解压缩时,首先进行smb compress协议数据包的解析,获取需要解压缩数据的大小,并和之前通过SrvNetAllocateBuffer分配的buffer的OriginalCompressedSegmentSize值进行比较,确认其大小不大于OriginalCompressedSegmentSize,然后进行内存拷贝: ▲nt!RtlDecompressBufferXpressLz函数 5、若v21大于OriginalCompressedSegmentSize,则返回0xC0000242错误。因为在步骤2中进行内存分配时没有做长度检查,所以如果传入一个很大的OriginalCompressedSegmentSize值触发整数溢出,此时v21就可以设置一个极大值,但可以通过对decompress size的判断,最终调用qmemcpy拷贝一个极大的size导致缓冲区溢出。 而在微软的补丁包中,添加了对两个长度的检查,以此来确保不会发生溢出。 利用此漏洞,远程未经身份验证的攻击者通过使用SMBv3连接到易受攻击的Windows计算机,或通过使易受攻击的Windows系统启动与SMBv3服务器的客户端连接,就可以在易受攻击的系统上以SYSTEM特权执行任意代码。 解决方案 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.漏洞防御 建议用户更新安全设备相关防护策略,防范相关漏洞攻击。
【深信服下一代防火墙】 1) 确认当前设备软件升级 防火墙的【安全能力更新】-【漏洞攻击特征识别库】需要更新到2020-03-13及以后版本,如下图:
2) 开启安全防护策略 针对此次的“SMBv3新漏洞“风险防护,SANGFOR AF建议针对【内网终端主机】和【内网业务系统】,均开启“漏洞攻击防护”功能。配置如下: a、【策略】-【安全策略】-【安全防护策略】界面,新增【业务防护策略】,如下: b、【策略】-【安全策略】-【用户防护策略】界面,新增【用户防护策略】,如下: 【深信服EDR平台】 针对SMBv3远程代码执行漏洞(CVE-2020-0796)漏洞检测与修复,EDR需要打上SP包、更新至最新的漏洞规则库、开启防暴力破解,并检测修复终端SMBv3漏洞。请严格按下四个步骤顺序操作。
1) 更新SP补丁 EDR3.2.10、3.2.13、3.2.15、3.2.16、3.2.17版本为SMBv3漏洞提供了SP包,在用的EDR客户及新实施的EDR客户需要先打上此SP包。
l SP包下载地址: l 升级SP包: 通过以下界面导入SP包进行升级。 2) 升级漏洞规则 升级漏洞规则库至20200313173953或以上版本。通过以下界面检查EDR平台和终端当前漏洞规则版本是否大于或等于20200313173953版本,如下图: 如果EDR当前漏洞规则版本号低于20200313173953版本,则通过以下地址下载漏洞规则库导入EDR平台进行更新。 下载后的漏洞规则库通过以下界面导入EDR管理平台。 3) 开启暴力破解检测 针对windows 10所在分组终端开启暴力破解检测安全策略,如下图。
4) 检测并修复SMBv3漏洞 通过EDR终端漏洞查补检测终端是否存在SMBv3远程代码执行漏洞(CVE-2020-0796),漏洞补丁编号为KB4551762,如下图 如果检测结果终端存在此漏洞,则通过EDR下发修复操作即可。
【深信服安全感知平台】 1)SIP升级漏洞特征识别库 SIP的IP漏洞特征库需要更新到2020年3月13号的规则库 在线升级漏洞特征识别库 查看SIP的IPS漏洞特征识别库。位置【系统设置】-【升级管理】-【库升级】点击安全检测特征识别库的“当前版本“时间,如下图: 若当前版本低于3月13号,在平台能上网环境时,点击安全检测特征识别库的“立即云端获取”进行更新。 离线升级漏洞特征识别库 从以下地址进行下载“漏洞特征识别库”。 将下载的包,导入SIP进行更新。 2)STA升级漏洞特征识别库 STA通过SIP更新规则库,保证STA能连接到SIP的TCP4488端口。 查看到探针规则库版本的时间低与平台规则库版本是,可点击立即刷新,进行更新。自动更新时间为1小时检测一次。
【深信服安全运营服务】 深信服安全运营服务,通过以“人机共智”的服务模式帮助用户快速扩展安全能力。针对该漏洞,安全运营服务提供漏洞检查、安全设备策略检查等服务,确保第一时间检测风险以及更新策略,防范此类威胁。
个人用户也可通过手动修改注册表,防止被黑客远程攻击:运行regedit.exe,打开注册表编辑器,在HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters建立一个名为DisableCompression的DWORD,值为1,禁止SMB的压缩功能。 |