二进制漏洞分析-27.华为TrustZone Ifaa漏洞

admin 2023年12月22日09:43:41评论27 views字数 1848阅读6分9秒阅读模式

华为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_cert CVE-2021-40050 漏洞 2022 年 <> 月

时间线¶

  • 13年2021月<>日 - 向华为PSIRT发送漏洞报告。
  • 12年2022月<>日 - 华为PSIRT确认该漏洞报告。
  • 01年2022月2022日 - 华为PSIRT表示,此问题已在<>年<>月更新中修复。
  • 从 30 年 2022 月 19 日至 2023 年 <> 月 <> 日 - 我们定期交换有关公告发布的信息。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月22日09:43:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   二进制漏洞分析-27.华为TrustZone Ifaa漏洞http://cn-sec.com/archives/2326233.html

发表评论

匿名网友 填写信息