小米手机可信执行环境安全漏洞

VSole2022-08-15 11:27:05

Check Point研究人员小米手机TEE中发现一个安全漏洞。 

Check Point 安全研究人员在依赖联发科芯片提供可信执行环境(TEE)进行签名的小米手机中发现一个安全漏洞,攻击者利用该漏洞可以使用第三方没有权限的应用对虚假支付包进行签名。

在小米使用的可信APP格式中发现一个安全漏洞,漏洞CVE编号为CVE-2020-14125,漏洞产生的原因是由于缺乏版本控制。攻击者利用该漏洞可以实现降级攻击,即攻击者可以使用老版本、有漏洞版本的APP替换新版本、安全的APP。

TEE

TEE可以创建可信操作系统管理的虚拟安全环境,用于运行可信APP。可信APP实现特定的安全特征。普通操作系统可以发送命令给可信APP,并接收响应,如安卓系统。

基于高通芯片的小米设备使用QSEE可信操作系统,基于联发科芯片的设备使用的是Kinibi TEE架构。在这两类芯片中,小米都嵌入和签名了自己的可信应用。TEE可以创建单独的虚拟空间用来存储对交易进行签名的安全密钥。

可信APP文件格式

小米设备可信APP保存在/vendor/thh/ta目录下,每个APP都是未加密的二进制文件。Kinibi OS的可信APP一般是MCLF格式。但小米APP二进制文件是ELF文件格式。

图 可信APP格式

可信APP可以被降级

可以看出,可信APP的文件格式中没有版本控制域。也就是说攻击者可以用可信APP的老版本来覆写新版本的APP文件。因为老版本APP的签名是正确的,所以仍然可以在TEE中成功加载。

因此,攻击者可以绕过小米或联发科在可信APP中的安全更新,并将其降级为未修复的版本。

研究人员在运行MIUI Global 12.5.6.0 OS的测试设备上用从运行MIUI Global 10.4.1.0 OS的设备上提取的老版本成功覆写了thhadmin可信APP。虽然老版本thhadmin APP的代码与原版本不同,但仍然成功启动了。

寻找可信APP中的漏洞

小米遵循了GlobalPlatform TEE客户端API规范,其中定义了客户端与TEE的通信API。该API在/vendor/lib/libTEECommon.so 库中实现。小米在实现可信APP时遵循GlobalPlatform TEE Internal Core API规范。每个APP都会导出TA Interface”,这是创建APP实例的、通知实例有新客户端连接、通知实例有客户端调用命令的入口点。

研究人员对可信APP进行模糊测试发现了多个安全漏洞,攻击者利用这些安全漏洞可以泄露保存的密钥、或在APP环境下执行代码。比如,下图中的堆溢出,攻击者可以用0x42424242地址的数据覆写0x41414141字节的堆内存。

图 构造的输入缓存

腾讯Tencent Soter

小米设备内嵌了一个名为Tencent Soter的移动支付框架,为第三方安卓应用提供融入支付能力的API。Tencent Soter是腾讯公司的软件平台,主要功能是对移动APP和远程后端服务器之间传输的支付包进行验证。Tencent soter架构如下所示:

在Tencent soter中有三级密钥:设备密钥(ATTK)、应用密钥(ASK)、业务密钥(Authkey)。这些密钥都是RSA-2048非对称密钥,并且由TEE进行安全保护和存储。

ATTK私钥是在设备出厂前由TEE生成的。公钥安全地传输到腾讯的TAM服务器,私钥保存在TEE中。第三方APP可以要求在TEE中生成ASK密钥。密钥对生成后,私钥就保存在TEE中,公钥和ATTK签名就返回给APP。然后APP将密钥和签名发送回后端服务器。TAM使用ATTK公钥验证包的合法性。如果合法,第三方就会在服务器上保存ASK公钥。AuthKey的生成与ASK非常类似,唯一不同的是第三方APP会使用ASK公钥检查AuthKey的合法性。

所有的关键数据存储和操作都是依赖于TEE中。但是Tencent soter并不提供TEE相关的代码,实现是由芯片或设备厂商完成的。

Soter可信app中的安全漏洞

在开始签名时,soter app会提供一个initSigh (command ID 0x100C)函数来接收AuthKey name和挑战字符串作为参数。Tencent soter定义了AuthKey name是多个永久字符串的连接,比如进程ID、支付场景id,比如“Wechatuid777777_demo_salt_account_1_scene1”。

initSigh handler 会连接密钥名和挑战到一个固定大小的缓存中,但是并不会检查是否溢出。代码如下:

因此,攻击者可以提过一个大于0x198字节的挑战或大于0x8C字节的密钥名来覆写堆内容。

Soter APP奔溃后,就可以在安卓kernel日志中发现部分加密的内容:

漏洞CVE编号为CVE-2020-14125,小米已于2022年6月修复了该漏洞。

小米小米系统
本作品采用《CC 协议》,转载必须注明作者和本文链接
对Wi-Fi 6关键技术进行了分析和研究,并对Wi-Fi 6的产业进展情况进行了介绍。
据BleepingComputer报道,近日安全分析师发现采用联发科芯片的小米智能手机的支付系统存在安全问题,这些智能手机依赖联发科芯片提供的负责签署交易的可信执行环境。
谷歌安卓合作伙伴漏洞计划网站上的一个新帖子中,曝光了一个影响数百万安卓设备的安全漏洞。而且这些恶意软件可以获得系统级别的最高权限。ukasz Siewierski)率先发现了这个证书问题,他表示这些证书或签名密钥决定了设备上安卓版本的合法性。
可信APP实现特定的安全特征。TEE可以创建单独的虚拟空间用来存储对交易进行签名的安全密钥。因此,攻击者可以绕过小米或联发科在可信APP中的安全更新,并将其降级为未修复的版本。这些密钥都是RSA-2048非对称密钥,并且由TEE进行安全保护和存储。ATTK私钥是在设备出厂前由TEE生成的。TAM使用ATTK公钥验证包的合法性。
小米宣布了 MIUI 13,整合了反电信欺骗功能。小米介绍称,新的全链路电诈防护功能能识别和警告欺骗电话,能拦截安装被识别为欺骗 APP 的应用安装(显示“相关法律法规要求,禁止安装”),提供“反电信网络欺骗专用号码”,对向欺骗号码的可疑转账发出警告等。MIUI 13 还提供了新的系统字体 MiSans。
12月28日,小米集团正式发布小米第三代高端手机小米12系列等多款新品,同时还发布了最新手机操作系统MIUI 13。 小米手机不仅在硬件上持续升级,其手机操作系统MIUI的持续创新和优秀体验,更是凝聚广大“米粉”的根本动力。
10月12日,英国研究人员的一项新研究揭示了安卓手机用户存在一系列隐私问题。研究人员将重点放在三星、小米、Realme和华为安卓设备,以及安卓的两个分支RiegeOS和/e/OS。
目前的情况是,安装ARMLinux环境难题,已经被大佬解决了,下载他现成的工具,一个命令60秒就弄好了。也就是说,没有要死磕内容,Android跑通BCC的门槛非常低,看一眼步骤3就学会。我们需要的可能是,编好一个eBPF程序,别人拿起来就用。实际上当前是有办法在x86PC机上,交叉编译二进制的eBPF程序的,不需要ARM Debian或是AOSP环境。eadb本文是对seeflower eBPF系列文章的copy和实践记录。
国家信息安全漏洞共享平台(CNVD)发布报告
Android应用攻与防
2021-11-14 06:53:17
安卓系统是由谷歌推出的一款移动终端,由于开源,所以国内出现了许多使用相关系统的厂商,比如小米,oppo,vivo,魅族等。 在国内,这些系统的用户群体甚多。我们日常使用的社交、游戏、工作等应用,很多都装在安卓系统上。 由于安卓系统的开源性,很多安全问题也随之而来。那么,在安卓系统上运行的应用又是如何保证自身安全的呢? 本文通过实战挖洞,展现一下Android应用的防守与攻击方式。
VSole
网络安全专家