华为TrustZone Block_Chain TA漏洞
此通报包含有关以下漏洞的信息:
HWPSIRT-2021-14294 堆指针泄漏 delete_node
HWPSIRT-2021-17285 bc_delete_file中的内存泄露
delete_node
¶在函数中,如果在链表中找不到给定的 as 参数,则将通过调用 来记录错误值。这会将堆指针泄漏到日志中,这些日志可在正常情况下使用命令访问。delete_node
node
g_chain_count_vote_head
node
tee_print
logcat
int delete_node(cert_node_t *node) {
// ...
it_node = &g_chain_count_vote_head;
while (1) {
if (it_node->next == node)
break;
if (it_node->next == NULL) {
tee_print(0, "%s %d:delete 0x%x not exit ", "[error]", 0x54, node);
return 0;
}
it_node = it_node->next;
}
// ...
}
bc_delete_file
¶该函数不强制 为 NULL 终止,从而导致内存在它之后的潜在泄露。 将复制到目录名称中,并附加作为参数给出的文件名(大小),直至整个字符。由于大小为 128,并且设置为 128,因此可以设置 的最后一个字符。然后,未终止的字符串将打印在其中一个调用中,将内存披露到日志中。bc_delete_file
storepath
get_whole_store_path
storepath
name
name_len
*path_len_p
storepath
storepath_len
storepath
storepath
tee_print
int get_whole_store_path(char *name, size_t name_len, char *path, size_t *path_len_p, uint32_t file_type) {
// ... (error checking is omitted) ...
dir_name = &g_store_paths[0x44 * file_type + 4];
dir_name_len = strlen(dir_name);
memcpy_s(path, *path_len_p, dir_name, dir_name_len);
memcpy_s(&path[dir_name_len], *path_len_p - dir_name_len, name, name_len);
*path_len_p = dir_name_len + name_len;
return 0;
}
int bc_delete_file(char *name, size_t name_len, uint32_t file_type) {
// ... (error checking is omitted) ...
char storepath[128];
memset(storepath, 0, sizeof(storepath));
storepath_len = 128;
get_whole_store_path(name, name_len, storepath, &storepath_len, file_type);
// ...
tee_print(0, "%s %d:delete file: %s ", "[error]", 0x189, storepath);
// ...
}
我们验证了这些漏洞是否影响了以下设备:
麒麟990:P40 专业版 (ELS)
请注意,其他型号可能已受到影响。
名字 | 严厉 | CVE漏洞 | 补丁 |
---|---|---|---|
堆指针泄漏delete_node | 不适用 | 不适用 | 不适用 |
内存泄露bc_delete_file | 不适用 | 不适用 | 不适用 |
2021年12月22日,华为PSIRT收到漏洞报告。
2022年1月12日 - 华为PSIRT确认该漏洞报告,并回复该TA已弃用。
从 2022 年 11 月 30 日至 2023 年 7 月 19 日 - 我们定期交换有关公告发布的信息。
二进制漏洞(更新中)
其它课程
windows网络安全防火墙与虚拟网卡(更新完成)
windows文件过滤(更新完成)
USB过滤(更新完成)
游戏安全(更新中)
ios逆向
windbg
恶意软件开发(更新中)
还有很多免费教程(限学员)
更多详细内容添加作者微信