已开启
[安全问题]: 【白细胞AI辅助分析】【安全】【IPC反序列化边界检查缺失】pipe.c存在IPC反序列化边界检查缺失 #23
King of Harmony创建于 6月1日
6月1日 添加了label:SIG_Security
openharmony_ci
6月1日 评论:
6月1日 评论:
感谢提交Issue!关于Issue的交互操作,请访问OpenHarmony社区支持命令清单。如果有问题,请联系 [@peterli](https://gitcode.com/peterli) [@heyanhong](https://gitcode.com/heyanhong) [@sjtugjy](https://gitcode.com/sjtugjy) 。如果需要调整订阅PR、Issue的变更状态,请访问链接。
Thanks for submitting the issue. For more commands, please visit OpenHarmony Command List. If you have any questions, please refer to committer gitcode for help. If you need to change the subscription of a Pull Request or Issue, please visit the link.


6月1日 添加了label:waiting_for_assign
7月27日 关联了pull request:fix: 修复不可信输入校验问题
感谢对OpenHarmony社区的支持与关注,欢迎反馈安全问题。
漏洞编号:
漏洞归属组件
漏洞归属版本
CVSS V3.0分值
Attack Vector(AV): Local(L) Attack Complexity(AC): Low(L) Privileges Required(PR): Low(L) User Interaction(UI): Not Required(N) Scope(S): Unchanged(U) Confidentiality Impact(C): Medium(M) Integrity Impact(I): Medium(M) Availability Impact(A): Medium(M) CVSS Base Score: 5.5
漏洞简述
【攻击链分析】
利用难度: medium
Prover验证: CONFIRMED (置信度: 0.95)
攻击场景:
攻击者通过IPC向Pipe Server发送恶意的读管道请求,指定一个远大于IPC接收缓冲区实际大小的count值。由于服务端未校验count,且管道中已预置足够数据,chcore_pipe_read_local在执行memcpy时将管道数据越界写入IPC堆缓冲区,导致堆溢出。攻击者可进一步利用此堆溢出覆盖堆上关键数据结构,劫持控制流,在Pipe Server进程中实现权限提升或任意代码执行。
攻击步骤:
PoC 概念验证:
构造一个pipe_request结构体,设置pipe_rq_type为PIPE_RQ_READ(0),fd指向一个已被攻击者写入大量数据的有效管道描述符,count设置为一个极大的值(例如0x10000,远超IPC消息分配给data[]的堆块大小)。通过IPC发送此结构体,服务端在处理时将把管道中的数据以count指定的大小拷贝到狭小的data缓冲区中,触发堆溢出。
前置条件:
入口点: callback — pipe_server_handler() @ /home/treffen/OpenHarmony_code/base/tee/tee_os_kernel/user/system-services/chcore-libc/libchcore/porting/overrides/src/chcore-port/pipe.c:64
影响类型: memory_corruption (high) — chcore_pipe_read_local() @ /home/treffen/OpenHarmony_code/base/tee/tee_os_kernel/user/system-services/chcore-libc/libchcore/porting/overrides/src/chcore-port/pipe.c:185
影响性分析说明
原理分析
受影响版本
规避方案或消减措施
修改建议: 在pipe_server_handler中将pipe_rq->count传递给chcore_pipe_read_local之前,必须结合IPC消息的实际数据长度(ipc_get_msg_data的长度)进行严格校验,确保count不超过data柔性数组在当前IPC消息中的实际可用空间大小。