这个补丁摞补丁的RPC漏洞到底是怎么回事?

news2024/11/22 6:20:20

前段时间,微软Windows系统曝出的远程过程调用(RPC)漏洞可谓影响深远,Windows 7与后续的Windows客户端系统,以及Windows Server 2008与后续的Windows服务器系统均被波及。

但在微软发布补丁后,Akamai安全研究人员Ben Barnea发现同一组件依然存在未修补的类似漏洞。报告给微软后,微软也迅速响应,第一时间公开了相关信息并发布了补丁程序。

除了第一时间安装补丁程序修补该漏洞,又该如何限制该漏洞在自己内网中横向移动?Akamai将通过本文向大家介绍此漏洞的相关细节。

一、背景

2022年4月12日,微软针对远程过程调用(RPC)运行时库(rpcrt4.dll)中的三个漏洞发布了补丁程序。这些漏洞的CVE分别为:CVE-2022-26809、CVE-2022-24492以及CVE-2022-24528。受影响操作系统包括Windows 7、8、10和11,以及Windows Server 2008、2012、2019和2022。

借助这些漏洞,未经授权的远程攻击者将可以借助RPC服务的权限在受影响计算机上直接执行代码。这种能力既可以用于突破网络防御,也可以用于横向移动,因此不可避免会被攻击者和勒索软件操作者所利用。微软将这些漏洞分类为“可被利用”的漏洞。由于严重性极高(CVSS 9.8),Akamai决定深入研究修补后的库文件,并分享我们的发现。

我们发现,其中两个漏洞与整数溢出有关,作为应对,补丁程序增加了一个验证是否发生整数溢出的检查,借此即可防止利用此漏洞。然而在调查中我们又发现了另一个漏洞,该漏洞利用了之前发现的同一个变量的整数溢出,但已发布补丁所进行的检查并未涵盖该漏洞,也就是说,补丁程序并不能缓解这个新发现的漏洞。

在将相关情况告知微软后,我们现在可以概括谈谈这个新RPC漏洞的细节了。该漏洞是在四月补丁日(照惯例,微软一般会在每月的第二个周二定期发布系统更新,即“补丁日”)发现的,五月补丁日发布的新补丁已成功修复了Akamai发现的新漏洞(CVE-2022-22019)。该漏洞同时存在于服务器和客户端版Windows中。

二、这个漏洞到底是怎么回事?

为了理解新发现的RPC漏洞,首先需要看看四月修补过的老漏洞。该漏洞源自RPC运行时库中存在的整数溢出Bug,被滥用后可能导致堆缓冲区溢出,也就是说,数据会被复制到缓冲区中,但缓冲区太小,无法容纳完整数据。这种情况会导致数据被写入到堆缓冲区边界范围之外,如果精心安排写入的数据,可能导致远程代码执行问题。

为了修复该漏洞,微软在ProcessReceivedPdu中新增加了一个调用:

该调用会触发一个函数来检查整数参数是否溢出:

查看OSF_SCALL::GetCoalescedBuffer(发生堆溢出的函数)就能看到新增加的检查:

GetCoalescedBuffer负责合并在ProcessReceivedPdu中排队的缓冲区片段。当已排队的片段总长度与当前接收的缓冲区长度相加后,就会出现最初的整数溢出,这种相加导致了溢出的发生。微软通过调用一个函数来检查溢出,修复了最初发现的漏洞。

然而该补丁只在部分程度上解决了这个漏洞。Akamai在研究中发现,在为合并后的新缓冲区分配内存之前,代码在分配大小上又额外增加了24字节(参见上文对OSF_SCALL::TransGetBuffer的调用)。这24字节恰巧是一个名为rpcconn_request_hdr_t的结构的大小,该结构充当了缓冲区的头部。由于原先的补丁是在添加头结构大小之前进行整数溢出检查的,因此没能考虑到这个头结构,这可能导致补丁试图缓解的整数溢出问题再次发生。

目前,新发现的漏洞(一个位于客户端函数中,一个位于服务器端函数中)已被成功缓解。新补丁添加了另一个调用,借此可验证额外增加的24字节不会溢出。

三、缓解措施

  1. 立即安装五月发布的安全更新,修补该漏洞。
  2. 阻止来自企业边界之外的设备通过TCP端口445进行的通信。
  3. 为了限制横向移动,可以只在需要的计算机(域控制器、打印服务器、文件服务器等)上允许TCP端口445的传入通信。

四、披露时间线

  • 2022年4月13日:报告给微软
  • 2022年4月13日:漏洞状态由“新增”改为“审查/重现”
  • 2022年4月22日:漏洞状态由“审查/重现”改为“开发”
  • 2022年5月10日:补丁发布

五、总结

打补丁是最基础的安全措施之一:发现一个漏洞,发布相应的补丁,漏洞被成功缓解。虽然零日漏洞在媒体和安全社区中获得了广泛关注,但作为从业者,我们深知最大的漏洞其实都和本文所介绍的情况差不多。而上文介绍的事件也很好地证明了为什么说打补丁的过程应该是持续并且不断重复的。

作为社区成员,我们在寻找漏洞时,经常需要关注源代码,但专门针对更新和补丁程序进行分析也为寻找漏洞提供了一种新的途径,当然,在寻找解决方案并促进大可能提高安全性方面,密切的合作也是不可或缺的。

这种情况也在很大程度上体现了独立安全研究人员的重要性。我们希望能有越来越多的安全研究人员继续通过分析这些补丁程序来深挖可能存在的漏洞。

欢迎关注Akamai,第一时间了解Akamai在安全性方面的最新发现和成果。当然,也欢迎通过评论与我们开展进一步讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1306746.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uview1 的u-tabs组件在微信小程序中会出现横向滚动条

uview1 的u-tabs组件在微信小程序中会出现横向滚动条,真机才会生效,微信开发者工具没问题包括官方示例也会 原因:未屏蔽微信小程序的滚动条 解决办法:uview-ui中uview-ui/components/u-tabs/u-tabs.vue文件把h5屏蔽滚动条的条件编…

JVM虚拟机系统性学习-对象的创建流程及对象的访问定位

对象的创建流程与内存分配 对象创建流程如下: Java 中新创建的对象如何分配空间呢? new 的对象先放 Eden 区(如果是大对象,直接放入老年代)当 Eden 区满了之后,程序还需要创建对象,则垃圾回收…

处理获取当前日期---------------年月日//时分秒

当前时间,先分组匹配,以数组下标索引匹配定义的汉字进行替换 处理日期方法 /* 日期格式化 */ const formatTime function formatTime(time, template) {if (typeof time ! "string") {time new Date().toLocaleString(zh-CN, { hour12: fal…

TLF35584 ERR PIN监测功能_实测篇

1 硬件设计 2 配置 1)PMIC_ERR - P11.2:配置输出PWM。 2)GTM定时器通道、时钟频率。 TOM0_8。50M。2^12分频(FXCLK3)。3 软件逻辑 初始化MCU的PMIC_ERR默认输出40KHz占空比50%的PWM。TLF35584初始化时,关闭窗口看门狗并默认开始错误监测功能。计时30S,30S后输出PWM占…

【JavaScript】JavaScript中的GC算法

1、内存管理 内存:由可读写单元组成,标识一片可操作的空间 管理: 认为的去操作一篇空间的申请、使用和释放 内存管理:开发者主动申请空间、使用空间、释放空间 管理流程: 申请-使用-释放 // 申请 let obj {} //使…

【docker四】使用Docker-compose一键部署Wordpress平台

目录 一、YAML 文件格式及编写注意事项(重要) 1、yaml文件使用时注意事项: 2、yaml文件的基本数据结构: 2.1、声明变量(标量。是单个的不可再分的值,类型:字符串,整数&#xff0c…

安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍

安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍 通过互联网交换数据时,数据要经过各种各样的网络和设备才能传到对方那里。数据在传输过程中有可能会经过某些恶意用户的设备,从而导致内容被盗取。 因此…

概率的乘法公式

两个事件的情况 假设A、B为随机事件,并且事件A的概率,那么 三个事件的情况 假设A、B、C为随机事件,并且,那么 多个事件的情况 假设为随机事件,其中,并且,那么

统计字母数量-第11届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第15讲。 统计字母数量&…

SQL的触发器和存储过程,一文学会!

目录 一、什么是SQL 二、什么是触发器 三、什么是存储过程 一、什么是SQL SQL(Structured Query Language)是结构化查询语言的缩写,它是用于管理和操作关系型数据库的标准化语言。SQL是一种声明式的语言,通过编写SQL语句来描述对数据库的操作。SQL具…

【Linux】高性能 Web 服务器 Nginx 安装教程(Ubuntu 22.04)

前言 Nginx 是一个高性能的开源 Web 服务器软件,也可以用作反向代理服务器、负载均衡器、HTTP 缓存以及作为邮件代理服务器等。Nginx 以其高性能、稳定性和丰富的功能而闻名,被广泛用于构建高流量网站和应用程序。 步骤 更新软件源 首先需要更新系统的软…

关于“Python”的核心知识点整理大全17

目录 ​编辑 8.3.4 结合使用函数和 while 循环 greeter.py 8.4 传递列表 greet_users.py 8.4.1 在函数中修改列表 printing_models.py 8.4.2 禁止函数修改列表 要将列表的副本传递给函数,可以像下面这样做: 往期快速传送门👆&#x…

16:00的面试,16:07就出来了,问的问题过于变态了。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到六月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40…

Java版直播商城规划:电商源码、小程序、三级分销与免费搭建全攻略

SAAS云平台】打造全行业全渠道全场景的SaaS产品,为店铺经营场景提供一体化解决方案;门店经营区域化、网店经营一体化,本地化、全方位、一站式服务,为多门店提供统一运营解决方案;提供丰富多样的营销玩法覆盖所有经营场…

图片类型的二维码怎么做?扫码看图长期有效

扫码看图的效果是怎么做出来的?现在用二维码来查看图片的方式越来越流行,这种方法能够让更多人同时查看图片。可能有些小伙伴在生成的图片二维码时担心二维码是有时间限制的,逾期后就无法展示了,从而无法满足自己的使用需求&#…

git客户端安装问题

问题回顾: 做git客户端版本升级,安装好之后提示git:‘remote-https‘ 不是一个 git 命令。参见 git --help。 问题处理: 缺少第二步依赖下载 安装步骤: 1、删除安装git yum remove git 2、安装依赖 yum install lib…

企业选CRM系统,这3个关键点你一定不能错过

在充满竞争的商业市场中,企业需要一种强大的工具来管理客户关系,从而提高销售效率。CRM客户关系管理软件就是企业所需要的。然而仅仅是在国内,CRM的供应商就超过了一千家,那么应该怎样选择适合企业的CRM系统? 一、软件…

数字图像处理(实践篇)二十三 使用dlib进行人脸68关键点检测

目录 1 安装dlib 2 下载shape_predictor_68_face_landmarks.dat文件 3 涉及的函数 4 实践 使用dlib进行人脸68关键点检测实践。 1 安装dlib 使用如下命令即可安装dlib: pip install dlib

beebox靶场A3 中等级别 xss通关教程

特别注意,低级和中级的差别在于中级使用了一些函数进行了过滤或转义字符 例如 addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。 预定义字符是: 单引号()双引号(")反斜杠(\&…

14:00面试,14:08就出来了,问的问题有点变态。。。。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…