U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 新闻资讯 >

微软Windows操作系统代码执行漏洞分析

来源:http://www.tudoupe.com时间:2022-06-17

最近趋势研究小组的盖·莱德费恩(Guy Lederfein)和Jason McFadyen(Jason McFadyen)详细介绍了微软的Windows操作系统最近修正的代码执行漏洞。该漏洞最初由陈裕基发现,并向微软报告。Windows网络文件系统具有堆栈缓冲溢出漏洞。远程攻击者可以通过发送特殊RPC包到服务器来利用这个漏洞。因此, 在 SYSTEM 上下文执行代码.以下是CVE-2022-26937的一些内容,有一些小的修改。

在Windows网络文件系统中存在堆栈缓冲溢出漏洞.该漏洞是由Network Lock Manager(NLM) RPC程序对Portmap请求的不恰当的RPC响应处理引起的。

远程攻击者可以通过发送恶意RPC调用到目标服务器来利用这个漏洞。 成功使用可能导致在系统环境中执行任意代码。

漏洞

微软的Windows有多种网络功能,用于与非Windows文件共享进行通信和交互,其中一个模块叫做网络文件系统(NFS)。

NFS是一个网络文件系统协议,它最初由Sun Microsystems于1984年开发。版本2载于RFC 1094。版本3载于RFC1813。版本4由IETF在RFC 3010(200年12月发布)、RFC 3530(2003年4月发布)和RFC 7530(2015年3月发布)中开发和录制。NFS允许用户同访问本地文件系统一样访问远程文件共享。您可以在共享上设置不同的访问级别和权限,例如读写和只读。此外,也可以使用IP/UID/GID/Kerberos安全。NFS使用Open Network Computing(ONC)远程过程调用(RPC)交换控制信息。ONC RPC最初由Sun Microsystems开发。它也被称为太阳RPC。

Network Lock Manager (NLM)协议是NSFS版本2和3的一个扩展。它提供系统V模式的咨询文件和记录锁定在网络上。NFS版本2和3是无状态的,因此,开发了NLM协议来管理在NFS共享中存储的文件的锁定状态。NLM协议支持同步和非同步进程实现锁定和文件共享功能。与 NFS 类似,NLM还使用ONC RPC来交换控制信息。

ONC RPC使用XDR数据包,它可以通过UDP或TCP传输。通过 UDP,XDR包包含在UDP有效负载中。在 TCP 上,在XDR包前面有一个“断片”头条(如下表所示)。断片头的最高位标示是否是包是最后的断片,其余的31个数字是后来的断片的长度。该片段本身包含一个XDR包。

ONC RPC调用的结构如下:

RPC消息的“程序”字段指定要发送该消息的哪个RPC服务。Windows NFS服务器通过RPC实现NLM协议,程序类型设置为10021。它支持多个RPC进程,它可以在RPC消息的程序字段中指定。下面是NLM协议版本3支持的同步和非同步过程列表:

微软Windows运行RPC程序RCBIND,它实现RFC 1833中记录的端口映射协议。RPCBIND程序将RPC程序编号转换为通用地址,然后,该程序可以使用通用地址来通信UDP或TCP。简而言之,它的工作方式是,当程序想使用RPC时,它将将其端口注册到主机的端口映射器上。希望发送RPC调用的客户连接到端口映射器,使用各种RPC调用,GETPORT、GETADDR等,可访问RPC服务的港口,并连接到所需的RPC服务.IANA制定并维护了标准的RPC代码,它们包括portmapper (100),nfs (1003),mount daemon (1005)和数百个其他不太常用的程序。 portmapper 和 NFS 服务 的 标准 端口 分别 是 11 和 2049 。

Windows通过RPC实现RPCBIND协议,程序类型设置为100,00。它支持多个RPC进程,您可以在RPC消息中的程序字段中指定这些过程。当程序版本设置为3或4,RPCBIND支持的进程之一是GETADDR,它是过程3。响应此RPC调用包含与调用者关联的一般地址。返回的通用地址的格式是XDR_String,格式如下:

在Windows网络文件系统中存在堆栈缓冲溢出漏洞.更具体地说,该漏洞是由GETADDR RPC响应中返回的一般地址字段中的错误引起的。当Windows NFS不同步地响应NLM调用时,调用NlmGetClientAddressAndConnection()函数。这个过程是响应非同步的NLM调用(例如NLM_TEST_MSG, NLM_LOCK_MSG, NLM_UNLOCK_MSG)。或者当服务器以前被客户端调用(同步或非同步)来创建锁后状态“LCK_BLOCKED”。如果使用IPv6协议通过ONC RPC协议进行通信,然后服务器向客户端发送GETADDR RPC调用,以取得其IP地址。当NFS服务器处理客户端在GETADDR响应中返回的一般地址字段时,使用 memmove() 将字段复制到96字节缓冲区大小。此外,之后,一个与一般地址字段相等的字符串大小的目录引用这个缓冲器并设置它为0。但是,NlmGetClientAddressAndConnection()函数不能验证返回的通用地址字符串的大小。因此,如果客户端提供的字符串为96字节或更长,缓冲区将写在其边界之外,这会导致堆积缓冲溢出。

远程攻击者可以通过发送NLM请求来利用这个漏洞,以触发NSF服务器的异步响应。当服务器发送GETADDR RPC请求时,攻击者可以通过精心设计的GETADDR响应来作出反应。成功使用可能导致在系统上下文中任意执行代码.不成功的使用会导致目标系统崩溃。

源代码

下面的代码片段来自nfssvr.Sys版本10.0.17763.199。

In function NlmGetClientAddressAndConnection():

检测攻击

ONC RPC使用XDR数据包,它可以通过UDP或TCP传输。通过 UDP,XDR包包含在UDP有效负载中。在 TCP 上,在XDR包前面有一个“断片”头条(如下表所示)。断片头部的最大位数表示该包是否是最后的断片,其余的31个数字是后来的断片的长度。该片段本身包含一个XDR包。

检测装置必须检查所有发送的ONC RPC调用,其结构如下:

检测设备需要检查消息类型字段是否为0(呼叫),该程序类型字段是否为100(portmap),程序版本字段是否大于2,程序字段是否大于3(GETADDR)。如果找到,设备必须检查该程序的特定数据对象。对象使用rpcb结构,格式如下:

如果设置“程序号码”字段为10021(NLM),检测设备必须检查所有输入的ONC RPC响应,这些响应结构如下:

检测装置需要检查XID字段是否与被检测到的GETADDR RPC调用XID字段相等,消息类型字段为1(回答)。如果找到,设备必须检查该程序的特定数据对象。对象使用XDR_String结构,其格式如下:

如果字符串长度字段超过95,则该流量被认为是可疑的;可能正在进行攻击以利用这个漏洞。

总结

微软在2022年5月修正了这个漏洞。CVE-2022-26937被分配。在他们的文章中,他们还将NFSV2和NFSV3的禁令列为减轻攻击的方法。然而,这可能导致功能的丧失。应用安全更新是解决这一漏洞的最佳方法。

参考资料和来源: https://ww.zero day initiative.com/blog/2022/6/7/cve-2022-26937-microsoft-windows-network-file-system-nlm-portmap-stack-buffer-overflow

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息