已开启
[安全问题]: 【白细胞AI辅助分析】【安全】【IPC反序列化边界检查缺失】futex.c存在IPC反序列化边界检查缺失 #24
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
漏洞简述
数据流追踪显示,参数源自用户态系统调用(__syscall3/__syscall4 -> chcore_futex -> chcore_futex_requeue)。在futex.c的263-264行,对来自用户态的IPC/系统调用参数nr_wake和nr_requeue使用了BUG_ON宏进行断言检查。BUG_ON在内核/TEE系统服务中通常意味着致命错误,会触发panic导致整个服务崩溃。恶意用户态应用只需传入不满足断言的值(如nr_wake=1)即可轻易触发崩溃,造成拒绝服务(DoS)。check_validation结果也证实代码中缺乏对用户态输入的优雅校验(如返回-EINVAL),而是直接使用致命断言。因此,这是一个真实且严重的DoS安全问题。
【攻击链分析】
利用难度: easy
Prover验证: CONFIRMED (置信度: 0.85)
攻击场景:
攻击者从用户态发起特定的SYS_futex系统调用,传入FUTEX_REQUEUE操作码及不满足内核断言条件的nr_wake和nr_requeue参数。这些恶意参数通过syscall_dispatcher传递至chcore_futex_requeue函数,触发内部的BUG_ON宏断言失败。BUG_ON随后调用BUG()引发内核/TEE系统服务panic,导致整个系统崩溃,实现拒绝服务。
攻击步骤:
PoC 概念验证:
在用户态程序中调用syscall(SYS_futex, uaddr, FUTEX_REQUEUE | FUTEX_PRIVATE, nr_wake, nr_requeue, uaddr2, 0),其中将nr_wake(对应syscall的val参数)和nr_requeue(对应timeout参数强转)设置为不满足chcore_futex_requeue内部BUG_ON断言条件的值(例如1或其他触发断言失败的特定组合),即可直接触发内核panic。
前置条件:
入口点: ipc — __syscall6() @ /home/treffen/OpenHarmony_code/base/tee/tee_os_kernel/user/system-services/chcore-libc/libchcore/porting/overrides/src/chcore-port/syscall_dispatcher.c:878
影响类型: memory_corruption (high) — BUG() @ /home/treffen/OpenHarmony_code/kernel/linux/linux-5.10/arch/arm/include/asm/fncpy.h:72
此问题单由白细胞AI平台自动检测提交,对检测问题有疑问请联系插件开发者suntaoran s00577090
此插件名为semgrep_ipc
影响性分析说明
原理分析
受影响版本
规避方案或消减措施
修改建议: 将chcore_futex_requeue函数中对用户态可控参数的BUG_ON断言检查替换为优雅的错误校验,当参数不满足条件时直接返回-EINVAL等错误码,而非触发致命的panic崩溃。