ATF(TF-A)安全通告 TFV-10 (CVE-2022-47630)

安全之安全(security²)博客目录导读

ATF(TF-A)安全通告汇总

目录

一、ATF(TF-A)安全通告 TFV-10 (CVE-2022-47630)

二、CVE-2022-47630

2.1 Bug 1:证书校验不足

2.2 Bug 2:auth_nvctr()中缺少边界检查

2.3 可利用性分析

2.3.1 上游TF-A代码

2.3.2 自定义镜像解析器


一、ATF(TF-A)安全通告 TFV-10 (CVE-2022-47630)

Title

对X.509证书扩展的不正确校验可能导致读取越界。

CVE ID

CVE-2022-47630

Date

Reported on 12 Dec 2022

Versions Affected

v1.2 to v2.8

Configurations Affected

启用可信启动的BL1和BL2,使用get_ext()和auth_nvctr()接口的自定义下游用法。在上游TF-A代码中不可利用。

Impact

越界读

Fix Version

  • fd37982a19a4a291 “fix(auth): forbid junk after extensions”

  • 72460f50e2437a85 “fix(auth): require at least one extension to be present”

  • f5c51855d36e399e “fix(auth): properly validate X.509 extensions”

  • abb8f936fd0ad085 “fix(auth): avoid out-of-bounds read in auth_nvctr()”

Note that 72460f50e2437a85 is not fixing any vulnerability per se but it is required for f5c51855d36e399e to apply cleanly.

Credit

Demi Marie Obenour, Invisible Things Lab

二、CVE-2022-47630

        此安全通告描述了用于解析TF-A可信启动中的用来解析证书的X.509解析器中的一个漏洞:精心制作的证书可能会导致内存读取越界围。

        请注意上游平台不受此影响。只有当(且仅当)下文描述的接口在不同于上游代码的上下文中使用时,下游平台才可能受影响。这类上下文的细节将在本文档的后续部分描述。

        要全面理解本安全通告,建议参考以下标准文档:

        1)RFC 5280,Internet X.509公钥基础证书(Public Key Infrastructure Certificate)和证书吊销列表Certificate Revocation List(CRL)配置文件。

        2)ITU-T X.690,ASN.1编码规则:BER (Basic encoding rules)、CER (Canonical encoding rules)和DER (Distinguished encoding rules)规范。

2.1 Bug 1:证书校验不足

        漏洞存在于drivers/auth/mbedtls/mbedtls_x509_parser.c源文件中。根据设计,get_ext()不检查各种mbedtls_*()函数的返回值,因为假定cert_parse()已经保证它们总是成功。但是,它传递扩展的结尾作为这些函数的结束指针,而cert_parse()传递TBSCertificate的结尾。此外,cert_parse()不检查扩展的内容是否与扩展本身具有相同的长度。它也不检查扩展块是否扩展到TBSCertificate的末尾。

        这是一个问题,因为mbedtls_asn1_get_tag()在失败时使*p和*len未定义。在实践中,这会导致get_ext()继续以不同于cert_parse()使用(和验证)的偏移量进行解析,这意味着cert_parse()提供的in-bounds保证不再有效。结果是get_ext()有可能读取证书末尾之后的内存。这可能会潜在地访问具有危险读取副作用的内存,或者泄漏微架构状态,这些状态理论上可以通过一些侧信道攻击作为更复杂攻击的一部分来检索。

2.2 Bug 2:auth_nvctr()中缺少边界检查

        auth_nvctr()未检查所提供的缓冲区是否足够长以容纳ASN.1 INTEGER。由于auth_nvctr()只读取6个字节,因此可以在缓冲区结束后最多读取6个字节。

2.3 可利用性分析

2.3.1 上游TF-A代码

        在上游TF-A代码中,auth_nvctr()的唯一调用者从get_ext()获取输入,这意味着第二个bug是可利用的,第一个也是。因此,只需要考虑第一个bug。

        TF-A源代码树(即在drivers/auth/下)中提供的所有标准信任链都要求在调用get_ext()或调用get_ext()的任何函数之前已经验证了证书的签名。从动态配置文件(如fdts/cot_descriptors.dtsi)获取信任链的平台也是安全的,因为无论文件中属性的顺序如何,签名验证总是在调用get_ext()或auth_nvctr()之前完成。因此,不可能在上游TF-A中利用此漏洞进行预认证。

        此外,通过get_ext()读取的数据只由身份验证框架(drivers/auth/auth_mod.c)使用,这大大减少了它将接收的输入范围,从而减少了它所产生的影响。具体来说,身份验证框架在三种情况下使用get_ext():

        1. 从X.509证书中检索hash以检查子证书的完整性(参见auth_hash())。

        2. 从X.509证书中检索签名详细信息以检查其真实性和完整性(参见auth_signature())。

        3. 从X.509证书中检索安全计数器值,以防止未经授权的证书回滚到以前的版本(参见auth_nvctr())。

        这些都不使用身份验证框架写入越界内存,因此不可能损坏内存。

        总之,有两个独立的问题——一个在get_ext()中,另一个在auth_nvctr()中——但这两个问题都不能在TF-A上游代码的上下文中被利用。

        只有在以下两种情况下,我们才会在身份验证之前触发此漏洞:

        1)该平台使用自定义信任链,在加密认证方法(AUTH_METHOD_SIG)之前使用非易失性计数器认证方法(AUTH_METHOD_NV_CTR)。

        2)信任链使用自定义身份验证方法,该方法在加密身份验证之前调用get_ext()。

2.3.2 自定义镜像解析器

        如果平台使用自定义镜像解析器而不是证书解析器,那么证书解析器中的错误显然与此无关。auth_nvctr()中的错误可能是相关的,但前提是返回的数据是:

        1)从不受信任的来源获取(意味着在身份验证之前读取)。
        2)尚未被检查为原始编码的ASN.1标记。

        特别是,如果自定义镜像解析器实现在ASN.1 INTEGER中包装了一个32位整数,则不会受到影响。

参考:9.10. Advisory TFV-10 (CVE-2022-47630) — Trusted Firmware-A 2.9.0 documentation

 

 

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

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

相关文章

IIS搭建本地电脑服务器:通过内网穿透技术实现公网访问的步骤指南

1.前言 在网上各种教程和介绍中,搭建网页都会借助各种软件的帮助,比如网页运行的Apache和Nginx、数据库软件MySQL和MSSQL之类,为方便用户使用,还出现了XAMPP、PHPStudy、宝塔面板等等一系列集成服务,都是为了方便我们…

应用程序管理工具

应用程序管理是 DevOps 的重要组成部分。它可以定义为在所有阶段监控和管理软件应用程序的可用性、运行状况、性能和功能的过程,包括规划、设计、构建、测试、部署、维护和更新。这意味着应用程序从概念到停止都受到监控。 应用程序管理的重要性 管理应用程序可确…

uni-app中使用iconfont彩色图标

uni-app中使用iconfont彩色图标 大家好,今天我们来学习一下uni-app中使用iconfont彩色图标,好好看,好好学,超详细的 第一步 首先,从iconfont官网(iconfont-阿里巴巴矢量图标库)选择自己需要的图…

vue3中的pinia

pinia官网 main.ts中引入 import { createApp } from vue import { createPinia } from pinia import ./style.css const store createPinia() import App from ./App.vuecreateApp(App).use(store).mount(#app)创建store文件夹,创建index.ts import {defineSto…

ChatGPT⼊门到精通(6):ChatGPT 提问设计

前⾔ 学会提问就是为了让AI给出⾼质量的答案。 你所学到的技能⼀切为了⽣成⾼质量的答案。 本教程适合:普通ChatGPT的⽤户、专业prompt⼯程师 你将收获:prompt 技巧的全⾯指导 、prompt⼯程师必备技能、prompt技术⼯程⾼质量答 案完全指南 提⽰词 Prom…

数据库导出工具

之前根据数据库升级需求,需要导出旧版本数据(sqlserver 6.5),利用c# winfrom写了一个小工具,导出数据。 →→→→→多了不说,少了不唠。进入正题→→→→ 连接数据库:输入数据库信息 连接成功…

合并对象在 Typescript 中的实现与应用

合并对象在 Typescript 中的实现与应用 文章目录 合并对象在 Typescript 中的实现与应用一、简介二、实现1、函数实现2、参数说明3、返回值 三、使用示例四、实际应用场景五、拓展:使用 lodash-es 的 assign 函数进行对象合并1、简介2、安装与导入3、基础用法4、注意…

K8S:K8S自动化运维容器Docker集群

文章目录 一.k8s概述1.k8s是什么2.为什么要用K8S3.作用及功能4.k8s容器集群管理系统 二.K8S的特性1.弹性伸缩2.自我修复3.服务发现和复制均衡4.自动发布和回滚5.集中化配置管理和秘钥管理6.存储编排7.任务批量处理运行 三.K8S的集群架构四、K8S的核心组件1、Master组件&#xf…

Linux ptrace系统调用

文章目录 一、ptrace 简介二、ptrace 参数request2.1 PTRACE_TRACEME2.2 PTRACE_PEEKTEXT, PTRACE_PEEKDATA2.3 PTRACE_PEEKUSER2.4 PTRACE_POKETEXT, PTRACE_POKEDATA2.5 PTRACE_POKEUSER2.6 PTRACE_GETREGS, PTRACE_GETFPREGS2.7 PTRACE_GETREGSET2.8 PTRACE_SETREGS, PTRACE…

前端文件、图片直传OOS、分片上传、el-upload上传(vue+elementUI)

前言:基于天翼云的面相对象存储(Object-Oriented Storage,OOS),实现小文件的直接上传,大文件的分片上传。 开发文档地址:网址 上传之前的相关操作:注册账户,创建 AccessKeyId 和 AccessSecretKey之后&…

mac环境使用pkgbuild命令打pkg包的几个小细节

mac环境使用pkgbuild命令打pkg包的几个小细节 最近,研发提出要使用jenkins来自动生成mac环境下的pkg包,研究了一下,可以使用pkgbuild来打包。但是有几个小细节需要注意一下: 1 如果有pre-install和post-install脚本,…

批量根据excel数据绘制饼状图

要使用Python批量根据Excel数据绘制饼状图,可以使用pandas和matplotlib库来实现。以下是一个基本的代码示例: import pandas as pd import matplotlib.pyplot as plt # 读取Excel文件 data pd.read_excel(data.xlsx) # 提取需要用于绘制饼状图的数据列…

问题:UITableViewCellContentView:height == 44 约束冲突

使用Masonry自动布局&#xff0c;高度自定义&#xff0c;出现如标题所示约束冲突 <NSLayoutConstraint:UITableViewCellContentView:.height 44> 解决方案: 在设置底部约束的时候设置 高优先级priorityHigh() 即可 [self.auditBtn mas_makeConstraints:^(MASConstra…

36种水果和蔬菜识别(pytorch框架,深度卷积网络模型,可以实现照片连续识别和视频识别)

1.效果视频&#xff1a;36种水果和蔬菜识别&#xff08;pytorch框架&#xff0c;深度卷积网络模型&#xff0c;可以实现照片连续识别和视频识别&#xff09;_哔哩哔哩_bilibili 2.项目文件夹 第一个文件夹&#xff08;data&#xff09;&#xff1a; 装载的是原始图像 第二个文…

移动端通讯录相关代码

vue3更新版本 附件地址 代码在附件里噜 太多了不好贴

【MYSQL】排序时 如何将0排到最后,并让其他值按正序展示?

背景&#xff1a;展示排名时需要1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;这样展示但是有些没有排名得数据字段默认值时0&#xff0c;这时直接用ASC就会出现问题 实现效果 实现方式&#xff1a;使用MySQL的ORDER BY语句来实现。以下是一个示例的SQL查…

Python编程——深入了解不可变的元组

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 本文专栏&#xff1a;Python专栏 专栏介绍&#xff1a;本专栏为免费专栏&#xff0c;并且会持续更新python基础知识&#xff0c;欢迎各位订阅关注。 目录 一、元组是什么 二、元组的定义 1、相同类型组成元组…

中间件环境搭建配置过程解读

中间件环境搭建 目录 中间件环境搭建xampp 搭建环境Tomcat环境配置安装mysql连接mysql 问题解决 xampp 搭建环境 安装xampp服务集成环境工具 官网地址下载项目压缩包&#xff0c;将项目文件夹放在xampp安装目录的htdocs文件夹下初始化xampp&#xff1a;运行目录内的setup_xamp…

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善)

一、目的 在实际项目中&#xff0c;从Kafka到HDFS的数据是每天自动生成一个文件&#xff0c;按日期区分。而且Kafka在不断生产数据&#xff0c;因此看看kettle是不是需要时刻运行&#xff1f;能不能按照每日自动生成数据文件&#xff1f; 为了测试实际项目中的海豚定时调度从…

DP6524 汽车通用LCD显示驱动电路芯片 替代PT6524

DP6524是一款利用CMOS技术专门设计的通用LCD驱动IC&#xff0c;完全替代PT6524,采用单片机控制的电子调谐器。它的最大行驶速度可以达到204段输出&#xff0c;可控制多达12个通用输出端口。引脚分配和应用电路都进行了优化&#xff0c;易于PCB布局和节省成本的优势。 主要特性…