利用 Windows CryptoAPI 中的关键欺骗漏洞

news2024/9/24 1:27:34

背景

三个月前,在我们 2022 年 10 月补丁星期二分析中,我们分享了 Windows CryptoAPI 中一个严重欺骗漏洞 CVE-2022-34689 的基本描述。据微软称,此漏洞允许攻击者“欺骗其身份并以目标证书的身份执行身份验证或代码签名等操作”。

CryptoAPI 是 Windows 中用于处理与加密相关的任何内容的实际 API。具体来说,它处理证书 — 从读取和解析证书到根据经过验证的证书颁发机构 (CA) 进行验证。浏览器还使用 CryptoAPI 进行 TLS 证书验证 — 此过程会显示锁定图标,每个人都被教导要检查该图标。

然而,证书验证并非浏览器独有的,其他 TLS 客户端也会使用证书验证,例如 PowerShell Web 身份验证、curl、wget、FTP 管理器、EDR 和许多其他应用程序。此外,代码签名证书会在可执行文件和库上进行验证,驱动程序签名证书会在加载驱动程序时进行验证。可以想象,证书验证过程中的漏洞对攻击者来说非常有利可图,因为它允许他们掩盖身份并绕过关键的安全保护。

这并不是美国国家安全局第一次披露 CryptoAPI 中的漏洞。2020 年,他们发现并披露了 CurveBall (CVE-2020-0601)。利用 CurveBall 或 CVE-2022-34689 都会导致身份欺骗;但虽然 CurveBall 影响了许多应用程序,但 CVE-2022-34689 具有更多先决条件,因此易受攻击的目标范围更有限。

漏洞详细信息

为了分析漏洞,我们首先尝试找到修补的代码。我们使用 BinDiff(一种流行的二进制差异工具)来观察 CryptoAPI 的各种代码更改。在 crypt32.dll 中,只有一个函数发生了变化: CreateChainContextFromPathGraph。作为此函数的一部分,会比较两个证书:一个作为输入接收,另一个驻留在接收应用程序的证书缓存中(稍后将详细介绍此缓存)。

检查变化后发现, 在两个位置向该函数添加了memcmp检查(图 1)。

图 1:补丁中添加到 CreateChainContextFromPathGraph 的代码(突出显示)

补丁之前,该函数仅根据 MD5 指纹确定收到的证书是否已在缓存中(并因此进行验证)。补丁之后,memcmp添加要求两个证书的实际内容完全匹配。

此时,我们推测,如果攻击者可以提供一个恶意证书,其 MD5 与受害者证书缓存中已有的证书相冲突,他们就能够绕过易受攻击的检查,并使他们的恶意证书受到信任(图 2)。

CryptoAPI 的证书缓存

CryptoAPI 可以使用缓存来存储接收到的终端证书,以提高性能和效率。默认情况下,此机制处于禁用状态。要启用它,应用程序开发人员需要将某些参数传递给CertGetCertificateChain,这是最终导致存在漏洞的代码的 Windows API 函数(图 3)。

图3:CertGetCertificateChain函数声明

CertGetCertif

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

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

相关文章

IEEE T-ASLP | 利用ASR预训练的Conformer模型通过迁移学习和知识蒸馏进行说话人验证

近期,昆山杜克大学在语音旗舰期刊 IEEE/ACM Transactions on Audio, Speech and Language Processing (TASLP)上发表了一篇题为“Leveraging ASR Pretrained Conformers for Speaker Verification Through Transfer Learning and Knowledge Distillation”的论文。论…

Wireshark Lab: TCP v7.0

Wireshark Lab: TCP v7.0 1. Capturing a bulk TCP transfer from your computer to a remote server 步骤 打开浏览器,在url中输入http://gaia.cs.umass.edu/wiresharklabs/alice.txt ,然后右键点击另存为下载文本。 访问http://gaia.cs.umass.edu/w…

【JVM】类加载器、双亲委派、SPI(一)

类加载器、双亲委派、SPI 类加载器 JVM中有两种类型的类加载器,由C编写的及由Java编写的。除了启动类加载器(BootstrapClassLoader)是由C编写的,其他都是由Java编写的,由Java编写的类加载器都继承自类java.lang.ClassLoader.JVM还支持自定义…

父子进程资源问题+vfork

一、从内存的角度分析父子进程资源问题 父子进程在内存资源使用上既共享又独立。它们通过写时复制技术实现地址空间的共享,但在修改数据时各自维护独立副本。代码段共享以节省内存,同时继承并打开的文件描述符等系统资源需注意同步和互斥问题。这种特殊…

Linux云计算 |【第二阶段】SECURITY-DAY1

主要内容: 监控基础(系统监控命令、监控软件)、Zabbix监控服务端部署、Zabbix监控客户端部署、创建监控主机、调用监控模板、自定义key、创建模板、应用集、监控项、绑定模板; 一、监控概述 1)监控的目的 ① 实时报…

解决雪崩的方案之一:流量控制

​​​​​​​ 1.簇点链路 2.设置流控模式 2.1设置直接流控模式 2.2.设置关联流控模式 2.3设置链路流控模式 2.4总结 3.设置流控效果 3.1warm up 预热模式 3.2排队等待 3.3总结 4.热点参数限流 4.1全局参数限流 4.2热点参数限流 解决雪崩的方案之一:…

基于SpringBoot的银行OA系统设计与实现

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SpringBoot架构,前端使用H5、CSS3、JS和DIV技术 工具:MyEclipse、Navicat f…

种树问题——CSP-J1真题讲解

【题目】 小明在某一天中依次有七个空闲时间段,他想要选出至少一个空闲时间段来练习唱歌,但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息。则小明一共有( ) 种选择时间段的方案 A. 31 B. 18 C. 21 D. 33 【答案】 B 【解析…

前端(Vue)headerSearch(页面搜索)通用解决方案 及 原理

简介 击后弹出输入框输入框可以输入页面的索引,比如项目中包含了文章相关的点击后可以进入对应界面同时也支持英文索引 原理 headerSearch 是复杂后台系统中非常常见的一个功能,它可以:在指定搜索框中对当前应用中所有页面进行检索&#…

stm32MX+freertos在创建task时,选项的含义

任务名称(Task Name): 用于标识任务的名称,便于调试和日志记录。 优先级(Priority): 任务的执行优先级。FreeRTOS支持多个优先级,高优先级的任务会优先于低优先级的任务执行。 堆栈…

功率放大器——前面板操作界面(AWA5871为例)

功率放大器的前面板操作包括多个功能按钮、旋钮和指示灯。如下图所示为AWA5871功率放大器。 1、电源开关(Power Switch) 功能:用于打开或关闭放大器的电源。 操作:按下电源开关,放大器通电并启动;再次按下…

【区块链 + 航运物流】运力链 | FISCO BCOS应用案例

根据速达物联的战略规划,2023年物流平台将由单一调度平台升级为物流生态平台。基于此,虎彩集团采用 FISCO BCOS区块链技术构建的运力链,可以帮助客户实现资源广泛快速连接、合作伙伴间的高效协同和低摩擦交 易,最终达成可信同城货…

redis面试(二十一)读写锁互斥

读锁非互斥 非互斥的意思就是,一个客户端或者线程加锁之后,另一个客户端线程也可以来进行加锁。 还是拿着ReadLock的lua脚本来看看 刚才我们已经分析过第一个线程来加读锁的逻辑了 所以上半截不用重复说了, hset anyLock mode read hset an…

AI周报(8.18-8.24)

AI应用-XGO-Rider: 全球首款轮腿式桌面 AI 机器人 中国的 Luwu 智能打造的XGO-Rider 是全球首款轮腿式桌面 AI 机器人。这个小巧紧凑的机器人将轮式机器人的灵活性与腿式机器人的障碍处理能力相结合,可以全方位移动,轻松适应各种地形。 XGO-Rider 主要设…

如何使用ssm实现亿互游在线平台设计与开发+vue

TOC ssm118亿互游在线平台设计与开发vue 绪论 1.1研究背景 时代的发展,我们迎来了数字化信息时代,它正在渐渐的改变着人们的工作、学习以及娱乐方式。计算机网络,Internet扮演着越来越重要的角色,人们已经离不开网络了&#x…

AITDK SEO扩展:为网站优化提供一站式解决方案

AITDK SEO扩展:为网站优化提供一站式解决方案 想提升你的网站在搜索引擎中的排名?让我们来看看AITDK SEO扩展,它是你网站优化的得力助手!在这篇文章中,我将为你介绍AITDK SEO扩展的功能特点,以及它如何帮助…

RK3588 技术分享 | 在Android系统中使用NPU实现Yolov5分类检测-迅为电子

随着人工智能和大数据时代的到来,传统嵌入式处理器中的CPU和GPU逐渐无法满足日益增长的深度学习需求。为了应对这一挑战,在一些高端处理器中,NPU(神经网络处理单元)也被集成到了处理器里。NPU的出现不仅减轻了CPU和GPU…

前端——盒子模型

一个盒子的特点组成 外边距就是两个元素之前的距离 padding就是填充区的大小 从上开始 顺时针进行设置,没有则对称 也可以单独对某个方向进行设定,比如:padding-top border 边框区 符合属性 border-style 边框样式 border-color 边框颜色…

web前端之选项卡集合、动态添加类名、动态移除类名、动态添加样式、激活、间距、节流、tabBar

MENU input的checked属性(HtmlStyle)伪元素(HtmlStyleJavaScript)激活类(HtmlStyleJavaScript)vue伪元素 input的checked属性(HtmlStyle) 前言 代码段创建一个使用HTML和CSS实现的标签式内容切换组件。通过选择不同的标签,可以展示相应的内容。 代码段实现一个简洁…

掌握时间的艺术:Python的sched库深度解析

文章目录 掌握时间的艺术:Python的sched库深度解析背景:为何选择sched?什么是sched库?如何安装sched库?简单库函数使用方法1. 创建调度器实例2. 安排事件3. 取消事件4. 运行调度器5. 检查事件是否在队列中 场景应用1. …