ATF(TF-A)安全通告 TFV-4 (CVE-2017-9607)

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

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

目录

一、ATF(TF-A)安全通告 TFV-4 (CVE-2017-9607)

二、CVE-2017-9607


一、ATF(TF-A)安全通告 TFV-4 (CVE-2017-9607)

Title

错误的固件更新SMC可能导致在AArch32状态下复制或验证安全内存中的意外数据

CVE ID

CVE-2017-9607

Date

20 Jun 2017

Versions Affected

None (only between 22 May 2017 and 14 June 2017)

Configurations Affected

使用AArch32 BL1的平台加上在BL31之前执行的不受信任的非安全世界固件更新代码

Impact

复制或验证安全内存中的意外数据

Fix Version

Pull Request #979 (merged on 14 June 2017)

Credit

ARM

二、CVE-2017-9607

        include/lib/utils_def.h头文件提供了check_uptr_overflow()宏,其目的是检测在计算基指针和偏移量之和时可能发生的算术溢出。如果给定基指针和偏移量的总和将产生一个足够大的值,则该宏的计算结果为1,这可能导致不可预测的行为。

        宏代码在代码版本commit c396b73的第52行:

/** Evaluates to 1 if (ptr + inc) overflows, 0 otherwise.* Both arguments must be unsigned pointer values (i.e. uintptr_t).*/
#define check_uptr_overflow(ptr, inc)       \(((ptr) > UINTPTR_MAX - (inc)) ? 1 : 0)

        这个宏不能正确地为AArch32镜像工作。当两个参数的和落在[2^ 32,2 ^64 - 1]范围内时,它无法检测溢出。因此,任何依赖该宏来检测此类整数溢出的AArch32代码实际上都不受保护。

        自Pull Request #678合并以来(2016年8月18日),错误代码一直存在于ARM可信固件(TF-A)中。然而,在合并Pull Request #939(2017年5月22日)之前,上游代码并不容易受到攻击,该请求引入了对可信引导(Trusted Board Boot, TBB)功能的AArch32支持。在此之前,在AArch32代码中没有使用check_uptr_overflow()宏。

        该漏洞位于BL1 FWU SMC处理代码中,当满足以下所有条件时,可能会被利用:

        1)平台代码使用TF BL1和TRUSTED_BOARD_BOOT构建选项。
        2)平台代码使用bl1/bl1_fwu.c中提供的固件更新(Firmware Update, FWU)代码,这是TBB支持的一部分。
        3)TF BL1是用ARCH=aarch32编译选项编译的。

        在这种情况下,当处理FWU_SMC_IMAGE_COPY和FWU_SMC_IMAGE_AUTH smc时,AArch32 BL1镜像可能无法在输入验证检查中检测到潜在的整数溢出。

        FWU_SMC_IMAGE_COPY SMC处理程序设计用于将镜像复制到安全内存中,以便后续身份验证。这是由bl1_fwu_image_copy()函数实现的,该函数具有以下函数原型:

static int bl1_fwu_image_copy(unsigned int image_id,uintptr_t image_src,unsigned int block_size,unsigned int image_size,unsigned int flags)

        image_src是一个SMC参数,因此可能被攻击者控制。一个非常大的32位值,例如2^32 -1,可能会导致image_src和block_size的和溢出32位类型,check_uptr_overflow()将无法检测到。根据它的实现,特定于平台的函数bl1_plat_mem_check()可能会被这些未清理的值打败,并允许进行下面的内存复制操作,这将会绕过去。如果内存映射在BL1的地址空间中,这可能允许攻击者将意外数据复制到安全内存中,或者导致致命异常。

        FWU_SMC_IMAGE_AUTH SMC处理程序设计用于验证驻留在安全内存中的镜像。这是由bl1_fwu_image_auth()函数实现的,该函数具有以下函数原型:

static int bl1_fwu_image_auth(unsigned int image_id,uintptr_t image_src,unsigned int image_size,unsigned int flags)

        类似地,如果攻击者通过SMC接口控制了image_src或image_size参数,并注入了和溢出的值,他们可能会破坏bl1_plat_mem_check()函数,并使身份验证模块读取平台代码通常允许的数据之外的数据,或者使平台崩溃。

        注意,在这两种情况下,都需要一个单独的漏洞来利用这个漏洞;例如,让系统根据意外的安全内存访问改变其行为的方法。此外,为了发送触发整数溢出的错误FWU SMC,需要破坏非安全世界的FWU代码。

        当启用TRUSTED_BOARD_BOOT和ARCH=aarch32构建选项时,已知该漏洞会影响所有ARM标准平台。其他平台如符合上述条件,亦可能受到影响。

参考:9.4. Advisory TFV-4 (CVE-2017-9607) — Trusted Firmware-A 2.9.0 documentation

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

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

相关文章

树多选搜索查询,搜索后选中状态仍保留

<template><div class"half-transfer"><div class"el-transfer-panel"><div><el-checkbox v-model"selectAll" change"handleSelectAll">全部</el-checkbox></div><el-input v-model&qu…

journal日志导致服务器磁盘满

背景 ubuntu 18.04服务器磁盘突然100% 一查/var/log/journal目录占了14G 清理 要清理 journal 日志&#xff0c;可以使用以下步骤&#xff1a; 运行以下命令来查看 journal 日志的使用情况&#xff1a; journalctl --disk-usage这将显示 journal 日志的当前使用情况&#x…

Stable Diffusion 文生图技术原理

图像生成模型简介 图片生成领域来说&#xff0c;有四大主流生成模型&#xff1a;生成对抗模型&#xff08;GAN&#xff09;、变分自动编码器&#xff08;VAE&#xff09;、流模型&#xff08;Flow based Model&#xff09;、扩散模型&#xff08;Diffusion Model&#xff09;。…

SpringBoot与前端交互遇到的一些问题

一、XXX.jar中没有主清单属性 场景&#xff1a; SpringBoot打的jar包在Linux运行报错 解决方案&#xff1a; 百度找了很多都是一样的答案&#xff0c;但是解决不了我的问题&#xff0c;于是我新建了一个springboot项目发现打的jar包可以在Linux上运行。检查了下只要把下面这2个…

保护香港服务器的方法

保护香港服务器的方法 当你把一个香港服务器完全留给一个组织、应用程序或个人使用时&#xff0c;它被称为香港服务器租用。在这种类型的主机配置中&#xff0c;客户端将会借出整个服务器&#xff0c;并且不允许其他任何人使用它。 如果您计划使用香港服务器&#xff0c;安全性…

el-date-picker限制选择的时间范围

<el-date-pickersize"mini"v-model"dateTime"value-format"yyyy-MM-dd HH:mm:ss"type"datetimerange"range-separator"~"start-placeholder"开始日期"end-placeholder"结束日期":picker-options&quo…

[Python从零到壹] 七十.图像识别及经典案例篇之图像特效(怀旧、流年、光照和水波特效)

八月太忙,还是写一篇吧! 欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足…

非科班菜鸡算法学习记录 | 代码随想录算法训练营第51天||309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 股票总结

309.最佳买卖股票时机含冷冻期 309. Best Time to Buy and Sell Stock with Cooldown(英文力扣连接) 知识点&#xff1a;动规 状态&#xff1a;看思路ok 思路&#xff1a; 四个状态需要想&#xff0c;持有/不持有且过了冷却期/当天卖/正处于冷却期&#xff1b; 具体看注释…

ESP32-EYE编译笔记

1. 开发板介绍&#xff1a; https://www.espressif.com.cn/zh-hans/products/devkits/esp-eye/overview 2. ESP32-EYE代码库及环境搭建&#xff1a;https://github.com/espressif/esp-who/blob/master/docs/zh_CN/get-started/ESP-EYE_Getting_Started_Guide.md 3. ESP-IDF环…

MySQL事务原理、MVCC详解

事务原理 1 事务基础 1). 事务 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 2). 特性 原子性&#xff08;Atomi…

为什么mysql source命令导入数据比可视化工具执行sql文件快?

在一般情况下&#xff0c;使用MySQL的source命令导入数据比使用可视化工具执行SQL文件更快&#xff0c;这是因为涉及到了不同的执行方式和优化策略。 批量执行 vs. 逐条执行&#xff1a;source命令会将整个SQL文件作为一个批量进行执行&#xff0c;而可视化工具往往是逐条读取并…

【MySQL】表的增删查改(初阶)

MySQL中表的增删查改&#xff0c;即为CRUD&#xff0c;是增加&#xff08;Create&#xff09;查询&#xff08;Retrieve&#xff09;更新&#xff08;Update&#xff09;删除&#xff08;Delete&#xff09;四个单词首字母的缩写。 目录 1.新增 1.1单行数据全列插入 1.2多行…

LRU和LFU算法的简单实现

LRU #include <iostream> #include <unordered_map> #include <list> struct Node{int key;int value;Node(int key, int value):key(key),value(value){} }; class LruCache{ private:int maxCapacity;// 最大容量std::list<Node>CacheList;// 缓存链…

修改linux中tomcat的端口

随便修改一个 以8055为例子 开放8081端口 firewall-cmd --permanent --add-port8081/tcp firewall-cmd --reload firewall-cmd --list-all

Linux中的dpkg指令(dpkg -l | grep XXX等)

dpkg是Debian包管理系统中的一个工具&#xff0c;用于在Linux系统中安装、升级、删除和管理软件包。它是Debian、Ubuntu以及基于它们的发行版中的包管理器。 dpkg 有很多用法&#xff0c;常用之举例:dpkg -l | grep apt 显示系统中安装的与apt相关&#xff08;命名&#xff09…

Android 蓝牙开发( 二 )

前言 上一篇文章给大家分享了Android蓝牙的基础知识和基础用法&#xff0c;不过上一篇都是一些零散碎片化的程序&#xff0c;这一篇给大家分享Android蓝牙开发实战项目的初步使用 效果演示 : Android蓝牙搜索&#xff0c;配对&#xff0c;连接&#xff0c;通信 Android蓝牙实…

模拟实现应用层协议

模拟实现应用层协议 文章目录 模拟实现应用层协议应用层再谈协议 序列化和反序列化 网络版计算器自定义协议利用Json进行序列化和反序列化json库的安装条件编译 应用层 应用层&#xff08;Application layer&#xff09;是OSI模型的第七层。应用层直接和应用程序接口并提供常见…

在 WSL2 中使用 NVIDIA Docker 进行全栈开发和深度学习 TensorFlow pytorch GPU 加速

在 WSL2 中使用 NVIDIA Docker 进行全栈开发和深度学习 TensorFlow pytorch GPU 加速 0. 背景 0.1 起源 生产环境都是在 k8d pod 中运行&#xff0c;直接在容器中开发不好嘛&#xff1f;每次换电脑&#xff0c;都要配配配&#xff0c;呸呸呸新电脑只安装日常用的软件不好嘛&…

JVM虚拟机篇

JVM虚拟机篇 JVM介绍、运行流程 面试官&#xff1a; JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f; 候选人&#xff1a; 嗯&#xff0c;好的~~ 在JVM中共有四大部分&#xff0c;分别是ClassLoader&#xff08;类加载器&#xff09;、Runtime Data Area&#x…

INDEMIND:“大+小”多机协同,实现机器人商用场景全覆盖

随着商用清洁机器人进入越来越多的场景中&#xff0c;单一的中型机器人并不能有效覆盖所有区域&#xff0c;更加细分化的产品组合正在成为新的趋势。 产品形态的“新趋势” 在商用场景中&#xff0c;目前的商用清洁机器人几乎均是中大型的产品形态&#xff0c;较大的体型意味…