Windows RPC运行时漏洞事后总结

2022年4月前后,Windows RPC运行时被曝出存在远程代码执行漏洞,当时曾引起很多人广泛关注。微软很快做出反应,发布补丁程序进行修补。这次事件中,Windows远程过程调用(RPC)运行时共出现三个关键漏洞:CVE-2022-24492、CVE-2022-24528和CVE-2022-26809。

本文主要将介绍其中两个漏洞的信息,它们所产生的影响和范围,以及可行的缓解措施。

Akamai最近还撰写了一篇有关RPC筛选器的指南,该工具可以限制并阻止Windows计算机之间的RPC流量。虽然我们还未确认RPC筛选器是否可以缓解本文所讨论的漏洞,但建议感兴趣的读者阅读此文,进一步了解该工具的机制。

漏洞及其影响

通过利用这些漏洞,未经授权的远程攻击者将能利用RPC服务特权在存在漏洞的计算机上远程执行代码,当然这还要取决于承载RPC运行时的进程。该漏洞可以从网络外部利用借此入侵网络,此外也可用于网络内部横向移动。

如上表所示,CVE-2022-26809是一种“零点击”漏洞,无需人工介入即可利用。因此它在通用漏洞评分系统(CVSS)中一举得到了9.8分的高分(满分10分)。这意味着该漏洞的严重性极高,并且被攻击者利用的可能性极大。

谁容易受到威胁?

任何Windows计算机,只要445端口被打开且RPC运行时库未安装补丁,都会受到该漏洞威胁。根据Shodan的数据,目前有超过70万台Windows计算机将该端口暴露在互联网上。根据微软的介绍。监听该TCP端口的服务器也会受到潜在威胁。

定位并理解该漏洞

CVE中提到,该漏洞位于Windows RPC运行时中,该运行时是通过库文件rpcrt4.dll实现的。当客户端和服务器进程利用RPC协议进行通信时,双方都会加载这个运行时库。

我们对比了该文件的10.0.22000.434版(2022年3月补丁修补前)和10.0.22000.613版(2022年4月,补丁修补后),发现有如下多个函数产生了变化:

其中OSF_CCALL::ProcessResponse和OSF_SCALL::ProcessReceivedPDU这两个函数引起了我们的注意。这两个函数本质上较为相似,都负责处理RPC数据包,但一个运行在客户端,另一个运行在服务器端(CCALL和SCALL分别代表客户端和服务器端)。我们继续研究OSF_SCALL::ProcessReceivedPDU的变更,并注意到新版本中增加的两个代码块。

查看修补后的代码可以看到,在QUEUE::PutOnQueue之后调用了一个新函数。继续深入这个新函数并查看其代码发现,该函数会检查整数溢出。也就是说,新增的这个函数是为了验证整数变量是否保持在预期值范围内。

继续深入查看OSF_SCALL:GetCoalescedBuffer中有漏洞的代码后发现,这个整数溢出漏洞会导致堆缓冲区溢出,即数据被复制到一个太小而装不下的缓冲区中。这进而会导致数据被写入到缓冲区边界之外的堆中。只要善加利用,这个基元就可能导致远程代码执行。

其他几个函数页增加了类似的,用于检查整数溢出的调用:

  • OSF_CCALL::ProcessResponse
  • OSF_SCALL::GetCoalescedBuffer
  • OSF_CCALL::GetCoalescedBuffer

该整数溢出漏洞和防止此漏洞的函数同时存在于客户端和服务器端的执行流程中。

缓解措施

虽然RPC使用了多种安全控制机制和措施(例如安全回调),但我们依然建议根据微软的说明执行下列缓解措施:

  1. 安装最新安全更新,缓解这些漏洞。
  2. 虽然RPC对系统中的某些服务是必须的,但对企业边界范围外的设备,建议阻止TCP 445端口的通信。
  3. 为了遏制横向移动,建议只对真正需要的计算机(如域控制器、打印服务器、文件服务器等)允许传入的TCP 445端口通信。

Akamai Guardicore Segmentation规则

Akamai Guardicore Segmentation旨在保护用户防范利用这些漏洞发起的攻击。如上文所述,CVE-2022-26809因为完全无需人工介入即可生效,因此CVSS评分极高。这意味着该漏洞被利用时,用户和安全团队可能都无法察觉。通过使用明确的访问控制机制对网络进行微分段,即可防止利用这些漏洞的攻击进入内部网络或在网络中横向移动。

为了应用缓解措施,阻止来自网络外部的SMB流量,请创建如下的分段规则:


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

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

相关文章

Xcode15一个xcworkspace管理多个xcodeproj从零开始,一个主程序,多个子程序,一个主程序引用多个静态库

创建主程序:MainProject 目录结构: sandbox设置成NO:否则Xcode15不能运行 创建子程序 创建Framework 创建多个子程序后的目录结构 在主程序的Podfile中添加代码 # Uncomment the next line to define a global platform for your project pla…

Zabbix6.4 监控系统 密码忘记怎么办

Zabbix6.4 监控系统 密码忘记怎么办? 如下图 本次主要介绍在Zabbix6.4中重置用户密码的步骤。 步骤 如果您忘记了Zabbix密码并且无法登录,请向Zabbix管理员求助。 超级管理员用户可以在用户配置表单中更改所有用户的密码。 如果超级用户忘记了密码&a…

U8 内嵌.Net UserControl,winform挂菜单

目录 1.创建类库2.项目引用U8安装路径dll:3.新建类MyLoginable 继承 NetLoginable:4.新建类 MyNetUserControl 实现接口 INetUserControl:5.新建类 NetSampleDelegate 实现上面的CreateToolbar方法6.新建你的用户控件7.最后一步到UAP挂接菜单…

【设计模式-02】Strategy策略模式及应用场景

一、参考资料 Java 官方文档 Overview (Java SE 18 & JDK 18)module indexhttps://docs.oracle.com/en/java/javase/18/docs/api/index.html Java中使用到的策略模式 Comparator、comparable Comparator (Java SE 18 & JDK 18)declaration: module: java.base, pa…

计算数学表达式的程序(Java课程设计)

1. 课设团队介绍 团队名称 团队成 员介绍 任务分配 团队成员博客 XQ Warriors 徐维辉 负责计算器数据的算法操作,如平方数、加减乘除,显示历史计算记录 无 邱良厦(组长) 负责计算器的图形设计,把输入和结果显…

模型评估:ROC曲线

二值分类器(Binary Classifier)是机器学习领域中最常见也是应用最广泛的分类器。评价二值分类器的指标很多,比如precision、recall、F1 score、P-R曲线等。相比而言,ROC曲线有很多优点,经常作为评估而知分类器最重要的…

斯坦福Mobile ALOHA提到的ACT之外的另两项技术:Diffusion Policy、VINN

前言 本文接上一篇文章《斯坦福机器人Mobile ALOHA的关键技术:动作分块ACT的算法原理与代码剖析》而来,当然最开始本文是作为上一篇文章的第二、第三部分的 但因为ACT太过关键,除了在上一篇文章中写清楚其算法原理之外,还得再剖…

数控开料机对比木工雕刻机的优势

数控开料机和木工雕刻机都属于木工机械加工设备,都可以用来开料和雕刻,但在市场价格、床体结构、技术要求等方面二者存在不小的差异,那么全自动数控开料机对比普通木工雕刻机有什么优势呢。 首先我们都知道,木工雕刻机主要应用于…

Prometheus实战篇:Alertmanager配置概述及告警规则

Prometheus实战篇:Alertmanager配置概述及告警规则 在此之前,环境准备和安装我就不在重复一遍了.可以看之前的博客,这里我们直接步入正题. Alertmanager配置概述 Alertmanager主要负责对Prometheus产生的告警进行统一处理,因此在Alertmanager配置中一般会包含以下几个主要部分…

电脑提示dll丢失怎么办,教你一招将dll修复

使用电脑时,你的电脑是否出现关于dll文件丢失或找不到的问题,出现这种问题又该如何解决呢,dll文件问题会导致软件无法打开,或者会导致系统崩溃。今天就来教大家如何快速解决dll文件修复。 一.如何修复dll修复 方法一:…

虹科分享 | 实现网络流量的全面访问和可视性——Profitap和Ntop联合解决方案

文章速览: 为什么客户抱怨“网速太慢”?网络流量监控联合解决方案Profishark&Ntop联合解决方案的优势 这次和大家分享如何捕捉、分析和解读网络数据,从而更有效地监控网络流量,实现网络性能的最大化。先来看一个实际的问题—…

计算机体系结构----重排序缓冲(ROB)

ROB的思想:不按顺序完成指令,但在使结果对体系结构状态可见之前重新排序 当指令被解码时,它会在 ROB 中保留下一个顺序条目当指令完成时,它将结果写入 ROB 条目当指令在 ROB 中最早并且无一例外地完成时,其结果移动到…

mathglm代码调试记录

论文地址:https://arxiv.org/pdf/2309.03241v2.pdf 项目地址:https://github.com/THUDM/MathGLM#arithmetic-tasks 数据集格式: 读取数据集代码: def make_loaders(args, create_dataset_function):"""makes t…

检测并批量导出项目文件中所有最近修改文件的实用工具

本篇文章主要讲解工具的使用和操作教程,这是一个能够检测项目内最近修改的文件并保留路径导出文件的实用工具。 日期:2024年1月10日 工具介绍: 这是一款可以帮助你自动检测并导出指定文件修改时间内的文件及文件目录的实用工具,在…

Python语言基础

目录 任务驱动式学习 任务一:输出问候语 一、Python程序的两种编程模式 二、Python程序的执行方式——解释执行 三、基本输入输出函数 任务二:计算圆的周长和面积 一、语句块缩进 二、变量与对象 三、数据类型及转换 四、数字类型及运算 五、…

在 WinForms 应用程序中实现 FTP 文件操作及模式介绍

在 WinForms 应用程序中实现 FTP 文件操作及模式介绍 简介 在许多应用程序中,能够从远程服务器获取文件是一个非常有用的功能。本文将详细介绍如何在 Windows Forms (WinForms) 应用程序中使用 FTP 协议进行文件操作,包括连接到 FTP 服务器、列出目录、…

高并发下的计数器实现方式:AtomicLong、LongAdder、LongAccumulator

一、前言 计数器是并发编程中非常常见的一个需求,例如统计网站的访问量、计算某个操作的执行次数等等。在高并发场景下,如何实现一个线程安全的计数器是一个比较有挑战性的问题。本文将介绍几种常用的计数器实现方式,包括AtomicLong、LongAd…

3.4 在开发中使用设计模式

现在,我们应该对设计模式的本质以及它们的组织方式有了初步的认识,并且能够理解ROPES过程在整体设计中的作用。通过之前章节对“体系结构”及其五个视图的探讨,我们打下了坚实的基础。初步了解了UML的基本构建模块后,我们现在可以…

gem5学习(11):将缓存添加到配置脚本中——Adding cache to the configuration script

目录 一、Creating cache objects 1、Classic caches and Ruby 二、Cache 1、导入SimObject(s) 2、创建L1Cache 3、创建L1Cache子类 4、创建L2Cache 5、L1Cache添加连接函数 6、为L1ICache和L1DCache添加连接函数 7、为L2Cache添加内存侧和CPU侧的连接函数 完整代码…

适用于安防 音响 车载等产品中中的音频接口选型分析

在人工智能兴起之后,安防市场就成为了其全球最大的市场,也是成功落地的最主要场景之一。对于安防应用而言,智慧摄像头、智慧交通、智慧城市等概念的不断涌现,对于芯片产业催生出海量需求。今天,我将为大家梳理GLOBALCH…