二进制漏洞分析-27.华为TrustZone Ifaa漏洞
2023-12-21 21:40:46 Author: 安全狗的自我修养(查看原文) 阅读量:5 收藏

  •  

  • -5.(SMC MNTN OOB 访)

  • -10.TrustZone TEE_SERVICE_VOICE_REC

  • -19.TrustZone TCIS

  • -21.TrustZone TALoader

  • -22.TrustZone TA_uDFingerPrint

  • -23.TrustZone TA_SensorInfo

  • -24.TrustZone TA_HuaweiWallet

  • -25.TrustZone TA_SignTool OOB Read

  • 二进制漏洞分析-26.华为华为TrustZone IfaaKey_TA漏洞

华为TrustZone Ifaa漏洞

 此通报包含有关以下漏洞的信息:

  • CVE-2021-40050 漏洞 parcel_read_ifaa_cert中的堆栈缓冲区溢出

堆栈缓冲区溢出parcel_read_ifaa_cert

该函数用于解析来自用户控制的宗地的证书。parcel_read_ifaa_cert

int parcel_read_ifaa_cert(parcel_t *parcel_in, cert_t *cert) {
// ...error checking omitted...
parcel_read_uint32(parcel_in, &cert->size_n);
parcel_read(parcel_in, cert->n, cert->size_n);
parcel_read_uint32(parcel_in, &cert->size_e);
parcel_read(parcel_in, cert->e, cert->size_e);
parcel_read_uint32(parcel_in, &cert->sign_len);
parcel_read(parcel_in, cert->sign, cert->sign_len);
// ...
}

它将使用从宗地中提取的信息填充结构。结构字段具有固定的最大大小,在将数据复制到相应的字段中之前,该函数将从宗地读取实际大小。该函数不会检查从包裹中读取的大小是否小于固定的最大大小。cert_t

struct cert_t
{
int enc_alg;
int size_n;
char n[256];
int size_e;
char e[256];
char sign[256];
int sign_len;
};

由于结构是在调用方函数的堆栈上分配的,因此将导致堆栈缓冲区溢出。cert_tifaa_decode_cert_chain_inner

int ifaa_decode_cert_chain_inner(parcel_t *parcel_in, cert_chain_t *chain) {
// ...
cert_t cert;
// ...
parcel_read_cert(parcel_in, &cert);
// ...
int parcel_read_cert(parcel_t *parcel_in, cert_t *cert) {
// ...
return parcel_read_ifaa_cert(parcel_in, cert);
}

触发此堆栈缓冲区溢出的概念验证代码会导致以下崩溃:

[HM] lv = 3a703fc
[HM] ======================Fatal Error===================
[HM] Crash: __stack_chk_fail
[HM] [ERROR][2519]process 1e00000028 (tid: 40) instruction fault:
[HM] [ERROR][2520]Bad addr: 0xffffff9da0a01c94
[HM] Dump task states for tcb
[HM] ----------
[HM] name=[ifaa] tid=40 is-idle=0 is-curr=0
[HM] state=BLOCKED@MEMFAULT sched.pol=0 prio=46 queued=1
[HM] aff[0]=ff
[HM] flags=1000 smc-switch=0 ca=8382 prefer-ca=8382
[HM] Registers dump:
[HM] ----------
[HM] 32 bits userspace stack dump:
[HM] ----------
[HM] <__stack_chk_fail+0x3c/0x40>
[HM] <__stack_chk_fail>+0x38/0x40
[HM] Dump task states END
[HM]

受影响的设备

我们已验证该漏洞是否影响了以下设备:

  • 麒麟990:P40 专业版 (ELS)

请注意,其他型号可能已受到影响。

补丁

名字严厉CVE漏洞补丁
堆栈缓冲区溢出parcel_read_ifaa_certCVE-2021-40050 漏洞2022 年 <> 月

时间线

  • 13年2021月<>日 - 向华为PSIRT发送漏洞报告。

  • 12年2022月<>日 - 华为PSIRT确认该漏洞报告。

  • 01年2022月2022日 - 华为PSIRT表示,此问题已在<>年<>月更新中修复。

  • 从 30 年 2022 月 19 日至 2023 年 <> 月 <> 日 - 我们定期交换有关公告发布的信息。

  • ()

  • windows

  • windows()

  • USB()

  • ()

  • ios

  • windbg

  • ()


文章来源: http://mp.weixin.qq.com/s?__biz=MzkwOTE5MDY5NA==&mid=2247490735&idx=1&sn=78719503706f7a257d8d4ea50cf6e375&chksm=c03d568b012652a2add569975ff1b47915f805c28152f8abdcf108c19ba49a71911a37e8185b&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh