zoukankan      html  css  js  c++  java
  • 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,需要计算以下,指定字段在数据包中的偏移值

      

        

      

  • 相关阅读:
    zoj 3233 容斥原理 + 双条件
    bzoj 1038 瞭望塔 半平面交 + 最小值 枚举
    linux 常用命令
    Vue路由
    luffycity项目开发
    Vue组件化开发
    Vue对象提供的属性功能
    Vue快速入门
    Django-DRF(路由与扩展功能)
    Django-DRF(视图相关)
  • 原文地址:https://www.cnblogs.com/lsh123/p/15772872.html
Copyright © 2011-2022 走看看