ATF(TF-A)安全通告TF-V11——恶意的SDEI SMC可能导致越界内存读取(CVE-2023-49100)

news2024/11/17 9:35:32

目录

一、ATF(TF-A)安全通告TFV-11 (CVE-2023-49100)

二、透过事务看本质SDEI是干啥的呢?

三、CVE-2023-49100

1、GICv2 systems

2、GICv3 systems

四、漏洞修复


一、ATF(TF-A)安全通告TFV-11 (CVE-2023-49100)

Title

恶意的SDEI SMC可能导致越界内存读取(out of bound memory read)

CVE ID

CVE-2023-49100

Date

Reported on 12 Oct 2023

受影响的版本

TF-A releases v1.5 to v2.9 LTS releases lts-v2.8.0 to lts-v2.8.11

受影响的配置

使能SDEI support的平台(Platforms)

影响

拒绝服务攻击Denial of Service (secure world panic)

Fix Version

a7eff3477 “fix(sdei): 确保中断ID是有效的ensure that interrupt ID is valid”

Credit

Christian Lindenmeier @_chli_ Marcel Busch @0ddc0de IT Security Infrastructures Lab

二、透过事务看本质SDEI是干啥的呢?

        软件委托异常接口 (SDEI:Software Delegated Exception Interface) 是非安全世界的Arm规范,用于向固件注册处理程序以接收有关系统事件的通知。固件将首先通过异步异常的方式接收系统事件,并在响应中安排注册的处理程序在非安全EL中执行。

        与SDEI调度程序交互(发出SDEI请求和接收通知)的普通世界软件称为SDEI 客户端。即使客户端在屏蔽异常的情况下执行时,它也会在注册的处理程序处收到事件通知。    

        其实就是在EL1(或EL2)能够注册SDEI中断,其实就是切换到EL3中将该中断注册成group0中断,然后当事件到来时,中断将直接target到EL3,在EL3的处理程序中会dispatcher到EL1(EL2)中再处理。

        其实就是想让RAS、watchdog中断能够快速响应,而且不被EL1(或EL2)屏蔽。也相当于达到了NMI的效果。

97d72e7c80db4d239fbf59835b1e970e.png

三、CVE-2023-49100

        此安全通告描述了SDEI服务中的一个漏洞,其中一个恶意的非安全调用者调用无效中断ID的SDEI_INTERRUPT_BIND SMC调用,最终导致越界内存读取。

        SDEI_INTERRUPT_BIND用于将任何物理中断绑定到正常优先级的SDEI事件。中断可以是私有外设中断(PPI)或共享外设中断(SPI)。

        详细信息请参考SDEI Specification中SDEI_INTERRUPT_BIND。也可参考该博客13-SDEI: Software Delegated Exception Interface-CSDN博客

        当SDEI客户端(SDEI client)传递一个没有由GIC实现的中断ID时,该漏洞就存在。这将导致data abort异常或EL3 panic,具体取决于系统中使用的GIC版本。

1、GICv2 systems

Call stack:
      sdei_interrupt_bind(interrupt ID)
       -> plat_ic_get_interrupt_type(interrupt ID)
         -> gicv2_get_interrupt_group(interrupt ID)
           -> gicd_get_igroupr(distributor base, interrupt ID)
             -> gicd_read_igroupr(distributor base, interrupt ID).

        gicd_read_igroupr()最终将对未实现的IGROUPR寄存器执行MMIO读取。这可能导致data abort或对EL3 memory区域的随机访问。

2、GICv3 systems

Call stack:
     sdei_interrupt_bind(interrupt ID)
       -> plat_ic_get_interrupt_type(interrupt ID)
         -> gicv3_get_interrupt_group(interrupt ID, core ID)
           -> is_sgi_ppi(interrupt ID)

        is_sgi_ppi()将在遇到无效的中断ID时以EL3 panic结束。

四、漏洞修复

        通过确保SDEI客户端提供的中断ID是有效的PPI或SPI来修复该漏洞,否则返回指示参数无效的错误代码。

/* Bind an SDEI event to an interrupt */
static int sdei_interrupt_bind(unsigned int intr_num)
{
     sdei_ev_map_t *map;
     bool retry = true, shared_mapping;

     /* Interrupt must be either PPI or SPI */
     if (!(plat_ic_is_ppi(intr_num) || plat_ic_is_spi(intr_num)))
           return SDEI_EINVAL;

7fe7748d2f2844bc90c167ca06dadff4.png

参考:

1、9.11. Advisory TFV-11 (CVE-2023-49100) — Trusted Firmware-A 2.10.0 documentation

2、SDEI初探-透过事务看本质 

3、13-SDEI: Software Delegated Exception Interface-CSDN博客 

 

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

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

相关文章

SwiftUI 打造酷炫流光边框 + 微光滑动闪烁的 3D 透视滚动卡片墙

功能需求 有时候我们希望自己的 App 能向用户展示与众不同、富有创造力的酷炫视觉效果: 如上图所示,我们制作了一款流光边框 + 微光滑动闪烁的 3D 透视卡片滚动效果。这是怎么做到的呢? 在本篇博文中,您将学到以下内容 功能需求1. 3D 透视滚动2. 灵动边框流光效果3. 背景…

np.bincount函数的用法

官网写的非常清晰了, 返回数组的数量比x中的最大值大1,它给出了每个索引值在x中出现的次数。下面,我举个例子让大家更好的理解一下: np.bincount(np.array([0, 1, 1, 3, 2, 1, 7])) array([1, 3, 1, 1, 0, 0, 0, 1])最大值是7&a…

5.3 内容管理模块 - 课程发布、任务调度、页面静态化、熔断降级

内容管理模块 - 课程发布 - 任务调度、熔断降级、页面静态化 文章目录 内容管理模块 - 课程发布 - 任务调度、熔断降级、页面静态化一、课程发布 - 任务调度1.1 添加Maven依赖1.2 XxlJobConfig配置文件1.3 消息处理抽象类 MessageProcessAbstract1.4 课程发布任务类 CoursePubl…

webpack常用配置

1.webpack概念 ​ 本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 …

go语言(十六)----tag

package mainimport ("fmt""reflect" )type resume struct {Name string info:"name" doc:"我的名字"Sex string info:"sex" }func findTag(str interface{}) {t : reflect.TypeOf(str).Elem()for i : 0;i < t.NumField…

Go后端开发 -- 即时通信系统

Go后端开发 – 即时通信系统 文章目录 Go后端开发 -- 即时通信系统一、即时通信系统1.整体框架介绍2.基础server构建3.用户上线及广播功能4.用户消息广播机制5.用户业务封装6.用户在线查询7.修改用户名8.超时强踢9.私聊功能10.完整代码 二、客户端实现1.建立连接2.命令行解析3.…

阿里云幻兽帕鲁服务器租用价格表,免费?

幻兽帕鲁异常火爆自建幻兽帕鲁服务器不卡又稳定&#xff0c;继腾讯云推出幻兽帕鲁自建服务器教程和4核16G幻兽帕鲁专用特价游戏服务器后&#xff0c;阿里云坐不住了&#xff0c;直接推出特价4核32G和4核16G的palworld专属游戏机&#xff0c;另外还可以申请免费3个月的4核8G无影…

C语言或C++通过IShellLinkA创建或解析lnk快捷方式(使用char字符数组)

本例程用到的COM接口有IShellLinkA和IPersistFile。 请注意因为函数参数的类型不为BSTR&#xff0c;所以这两个接口可直接传char *或wchar_t *字符串&#xff0c;不需要提前转化为BSTR类型。 C语言的写法&#xff1a; /* 这个程序只能在C编译器下编译成功, 请确保源文件的扩展…

智慧之光:ChatGPT 引领工作效率新纪元

随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐融入我们的日常生活和工作中。其中&#xff0c;ChatGPT 作为一种先进的 AI 技术&#xff0c;正逐步改变我们的工作方式&#xff0c;提升我们的工作效率。本文灸哥将介绍如何利用ChatGPT提升工作效率&…

intellij idea怎么设置中文

CtrlAltS快捷键打开Settings界面选择Plugins在搜索部分搜索chinese&#xff0c;选择下方的Chinese&#xff08;simplified&#xff09;Language下载最后重启软件即可

数据结构:完全二叉树(递归实现)

如果完全二叉树的深度为h&#xff0c;那么除了第h层外&#xff0c;其他层的节点个数都是满的&#xff0c;第h层的节点都靠左排列。 完全二叉树的编号方法是从上到下&#xff0c;从左到右&#xff0c;根节点为1号节点&#xff0c;设完全二叉树的节点数为sum&#xff0c;某节点编…

leetcode-hot100双指针专题

第一题&#xff1a;移动零 题目链接 283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 解题思路 我们创建两个指针i,j&#xff0c;第一次遍历的时候指针j用来记录当前面有多少非0元素。即遍历的时候每遇到一个非0元素就将其往数组左边挪&#xff0c;第一次遍历完后&…

解决国内 github.com 打不开的准确方法

** 下载watt toolkit&#xff0c; 选择‘github’&#xff0c;点击‘一键加速’&#xff0c;很简单方便 **

【阿里云服务器数据迁移】 同一个账号 不同区域服务器

前言 假如说一台云服务器要过期了,现在新买了一台,有的人会烦恼又要将重新在新的服务器上装环境,部署上线旧服务器上的网站项目, 但是不必烦恼,本文将介绍如何快速将就旧的服务器上的数据迁移到新的服务器上. 包括所有的环境和网站项目噢 ! 步骤 (1) 创建旧服务器自定义镜像…

Llama2中文大模型——牛刀小试

文章目录 Llama2中文大模型——牛刀小试前言更新库导包加载模型对话问答-1对话问答-2对话问答-3对话问答-4对话问答-5 Llama2中文大模型——牛刀小试 前言 Meta开源的Llama从第一版开始&#xff0c;效果就很不错&#xff0c;有很多开源LLM都是基于它训练的&#xff0c;例如Vic…

GPT-5不叫GPT-5?下一代模型会有哪些新功能?

OpenAI首席执行官奥特曼在上周三达沃斯论坛接受媒体采访时表示&#xff0c;他现在的首要任务就是推出下一代大模型&#xff0c;这款模型不一定会命名GPT-5。虽然GPT-5的商标早已经注册。 如果GPT-4目前解决了人类任务的10%&#xff0c;GPT-5应该是15%或者20%。 OpenAI从去年开…

登录kafka报错:Could notstart Jolokia agent: java.net.BindException: Address in use

在执行kafka命令增加或删除topic的时候&#xff0c;发现总是报错。 Address in use&#xff1f;端口还是ip被占用了。只能禁用了&#xff0c;再执行命令。 禁用代码&#xff1a; 然后就可以拉~ 总体步骤&#xff1a; 1.先进入k8s的kafka pod 2.进入kafka的bin目录 3.两个…

PPO学习

openai用tf实现的真的看不懂&#xff0c;大佬的世界… PPO的详细细节 1. 奖励模型和策略的价值头将 query 和 response 的连接作为输入 奖励模型和策略的价值头 不 仅仅查看响应。相反&#xff0c;它将 query 和 response 连接在一起&#xff0c;作为 query_response def ge…

openEuler操作系统的安装及免密远程连接(超详细版)

一、下载地址 注意&#xff1a;可以先注册华为账号&#xff0c;注册后可享1倍加速 mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/ISO/x86_64/ 二、创建虚拟机步骤 ①选择自定义 ② 根据自己的VMware选择版本 ③选择稍后安装操作系统 ④没有openEuler可以选择…

如何在CentOS使用docker-compose部署Apache Superset并实现公网访问

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…