CVE20201301 SMBLost漏洞浅析

0x01 CVE-2020-1301简介

  该漏洞是SMBv1漏洞影响win7-Win10的所有版本。漏洞原因在srv驱动模块,在处理NT_TRANSACT_IOCTL的子命令(该命令又是SMB_COM_NT_TRANSACT 命令的子命令),FSCTL_SIS_COPYFILE请求时,没有验证请求中的SI_COPYFILE结构字段,导致随后可能造成造成了整形溢出。与之前的SMBv3漏洞 SMBGhost相比,该漏洞出现在老版本的SMB v1中,触发需要先通过身份认证,危害程度相对小很多。

  更准确地说,是SrvSmbNtIoctl函数在处理SI_COPYFILE结构时,仅验证了SourceFileNameLength和DestinationFileNameLength是否有效及它们的最大值,没有验证最小值,而函数中代码,会对两个文件名长度-2,当SourceFileNameLength或DestinationFileNameLength过小时会引发整形溢出,触发漏洞;

  详细的分析报告可以参考,此处不再赘述:

  https://airbus-cyber-security.com/diving-into-the-smblost-vulnerability-cve-2020-1301/

  

        

   SMB_COM_NT_TRANSACT 命令的SMB_Parameters部分:

  

0x 热补方案思路:

  还是WFP网络过滤,FWPM_LAYER_STREAM_V4(同V6)数据流层过滤,判断以下字段:

  1.SMB header的ProtocoID;

       2.SMB_COM_NT_TRANSACT 命令的SMB_Parameters部分的FunctioN字段为2;

       3.FSCTL_SIS_COPYFILE请求对应的值0x00090100;

       4.SourceFileNameLength或DestinationFileNameLength任意一个值小于4

  以上的条件2,条件3和条件4,需要计算以下,指定字段在数据包中的偏移值

  

    

  

原文地址:https://www.cnblogs.com/lsh123/p/15772872.html