fuqiuluo’s blog

记录美好生活

日志记录

Scene ReceiverShortcut 的高权限广播入口任意代码执行

#漏洞#安全#安卓
type
Post
status
Published
date
Jun 1, 2026
slug
summary
tags
漏洞
安全
安卓
category
日志记录
icon
password
😀
这次分析的是 Scene 中一个和快捷指令相关的攻击面:ReceiverShortcut。它的设计初衷大概率是让外部组件通过广播触发 Scene 的某些快捷动作,例如针对指定应用执行配置、调度或 ADB 辅助操作。
问题出在这个入口如果被导出,并且没有足够的调用方校验、参数校验和命令隔离,那么普通第三方 App 就可以构造广播调用它。更严重的是,如果广播中的参数被 Scene 传递到 ADB/root shell 执行链路里,就可能把一个普通 IPC 参数变成高权限命令的一部分。
这个漏洞的本质不是“Scene 安装了就危险”,而是:
Scene 暴露了一个可被普通 App 触发的快捷执行入口,该入口会把外部可控参数带入高权限执行上下文。

漏洞成因

Android 的 BroadcastReceiver 如果设置为 exported,其他应用就可以向它发送显式广播。对于普通通知、状态刷新类 receiver 来说,这通常只是业务逻辑风险;但如果 receiver 后面连接的是 ADB、root shell、系统调度或自动化能力,风险等级就会明显上升。
在这个案例里,风险链路可以概括为:
漏洞代码:
其中最关键的是参数边界失效。类似 packageName 这样的字段,本来语义上应该只是一个 Android 包名,例如:com.example.app
但如果实现中没有严格校验它确实是包名,而是把它当作字符串直接拼进命令,那么攻击者就可以构造特殊内容,让它突破原本的参数语义。
攻击向量:
1. 发送广播到 com.omarea.scene_mode.ReceiverShortcut
2. packageName 设置为 "x; <恶意命令>; #”
3. 最终执行: pm unsuspend x; <恶意命令>; #\npm enable x; <恶意命令>; #
受影响版本:Scene 9(其他版本未知)
 
Loading...