随着自启动和关联启动功能被广泛应用于APP,它为APP创造了更多的价值和机会,自启动的价值一方面体现在于提升了用户的使用体验感,另一方面也帮助了企业提高用户的黏性和留存率。但倘若不对应用的自启动和关联启动行为加以规范约束,尤其是APP的自启动行为,将可能导致用户的手机性能遭受破坏,甚至用户也将面临隐私被泄漏的风险。故本文将针对安卓应用的自启动行为,结合《GBT-41391-2022 移动互联网应用程序(APP)收集个人信息基本要求》的6.7-d)“在非服务所必需或者无合理场景下,不应自启动或者关联启动其他APP”条款进行解读,分享在不同场景下的安卓自启动行为应如何进行检测,并提供合规建议。
一、什么是安卓自启动
在介绍安卓自启动如何进行技术检测之前,首先有必要了解下什么是安卓的自启动及其自启动的原理。自启动是指在用户没有直接操作某个移动应用软件的情况下,移动应用软件通过系统的广播(Broadcast)、定时任务、账号同步、粘性服务、通知使用权等机制启动移动应用软件的行为,而这些服务一般是在用户无感知的情况下发生。
二、安卓应用自启动检测工具介绍
在了解完安卓自启动原理等相关知识后,本章节将介绍下安卓自启动检测所需要的工具,以及工具的用途:
Android Studio:利用安卓APP运行时产生的日志信息,查看logcat日志分析自启动的主体信息。
adb工具:在完成系统环境变量的相关配置后,可通过数据线连接电脑与安卓设备(手机、平板),利用命令行或脚本实现与安卓设备的交互。
aapt工具:在完成系统环境变量的相关配置后,可用于解析apk文件包的包名(解析apk包名命令:aapt dump badging
)。 本次测试手机为Android 7.1.1的Google手机:用于安装运行被测APP,在不同的场景下进行操作,与adb、Android studio工具交互,查看APP进程信息以及日志信息,分析自启动行为的主体。
三、检测场景
熟悉检测安卓自启动所需相关工具之后,本文将结合《GBT-41391-2022移动互联网应用程序(APP)收集个人信息基本要求》的6.7-d)“在非服务所必需或者无合理场景下,不应自启动或者关联启动其他APP”条款进行解读,分析自启动行为的测试应包含哪些场景。
6.7 其他要求 | ||
d) | 在非服务所必需或者无合理场景下,不应自启动或者关联启动其他APP | 自启动检测场景分析: 1.用户同意隐私政策前(未经用户同意),APP不得存在自启动行为; 2.用户同意隐私政策后,当手机系统进行重启,APP不得存在自启动行为; 3.用户同意隐私政策后操作使用APP,随后退出并结束APP进程,APP不得存在自启动行为。 4.用户同意隐私政策后操作使用APP,随后退出并结束APP进程,向APP发送模拟广播,APP不得存在自启动行为。 |
四、检测方法
进行安卓APP自启动检测之前,均需打开一个命令终端,使用数据线连接手机的准备工作。在终端输入adb shell可进入命令行模式,通过 ps | grep
注1:用户同意隐私政策前的自启动检测场景,若出现隐私政策阅读提示弹窗,不打开隐私政策。
注2:检测APP是否存在监听模拟广播而自启动的行为,需要使用root权限的测试手机。
(一)APP伴随系统启动而自启动检测。
1、用户同意隐私政策前:首次启动APP,进入第一个默认页面,短暂静置后结束运行并重启手机系统,或通过发送模拟系统开机广播,检测结果如果存在返回APP的进程信息,则判定不符合要求。
以下为结束APP进程后,对手机系统进行重启,APP不存在自启动行为的合规示例:
图 1 同意前,重启手机系统,未发现APP存在自启动行为
2、同意隐私政策后:安装启动APP,同意隐私政策后进入功能页面,然后退出APP并结束进程,重启手机系统或通过发送模拟系统开机广播,静置五分钟以上,如果检测存在APP的进程信息,说明APP存在通过特定的频率向系统发送广播唤醒APP,则判定不符合要求。
以下是在系统重启后,APP存在自启动行为的不合规示例,并通过logcat日志信息,分析自启动进程主体:
图 2 同意后,重启手机系统后,APP存在自启动行为
图 3 通过Android Studio日志分析自启动行为的主体
(二)在结束进程后,APP自启动检测。
1、同意隐私政策前:打开APP进入第一个默认页面,退出APP并结束运行,等待5-10分钟,若检测结果返回APP的进程信息,则判定不符合要求。
以下是用户同意隐私政策前,结束APP进程后,不存在自启动行为的合规示例:
图 4 同意前,结束APP进程,未发现自启动行为
2、同意隐私政策后:在同意隐私政策后进入APP功能页面任意操作,结束运行并静置手机,等待5-10分钟,如果检测结果返回APP的进程信息,则判定不符合要求。
以下是同意隐私政策后,结束APP进程,检测结果存在自启动行为的不合规示例,并通过logcat日志信息,分析自启动进程主体:
图 5 同意后,APP结束进程后存在自启动行为,通过日志信息分析主体
(三)APP监听系统广播自启动检测
1、同意隐私政策前:打开APP进入第一个默认页面,退出并结束APP进程,发送模拟广播,等待程序接收广播并进行业务操作,若检测结果发现存在APP的进程信息正在运行,则判定不符合要求。
以android.intent.action.MY_PACKAGE_REPLACED为例(当应用程序的 APK 文件被替换并重新安装时,系统会向该应用程序发送这种广播),APP接收广播后,不存在自启动行为的合规示例:
图 6 同意前,发送模拟广播,未发现自启动行为
2、同意隐私政策后:在同意隐私政策后进入APP功能页面,进行任意操作(若APP有登录功能,建议进行登录后操作),然后退出并结束APP进程,发送模拟广播,等待程序接收广播并进行业务操作,若检测结果发现返回APP的进程信息,则判定不符合要求。
以下是APP接收广播后存在自启动行为的不合规示例,并通过logcat日志信息,分析自启动进程主体:
图 7 同意后,APP接收模拟广播后的自启动行为
表1:常见的安卓系统广播
安卓系统广播 | 广播含义 |
android.intent.action.BOOT_COMPLETED | 开机广播 |
android.intent.action.LOCKED_BOOT_COMPLETED | 锁定下开机广播 |
android.intent.action.TIME_SET | 时间发生更改 |
android.intent.action.TISEZONE_CHANGED | 时区发生更改 |
android.APP.action.NEXT_ALARM_CLOCK_CHANGED | 闹钟发生更改 |
android.intent.action.LOCALE_CHANGED | 语言区域发生更改 |
android.accounts.LOGIN_ACCOUNTS_CHANGED | 登陆账号的更改 |
android.accounts.action.ACCOUNT_REMOVED | 登陆账号的移除 |
android.intent.action.PACKAGE_DATA_CLEARED | 清除应用的数据 |
android.intent.action.PACKAGE_FULLY_REMOVED | 应用完全卸款 |
android.intent.action.BATTERY_CHANGED | 充电状态 |
android.intent.action.CLOSE_SYSTEM_DIALOGS | 进行锁屏 |
android.intent.action.ACTION_SHUTDOWN | 关机广播 |
注:参考团体标准(T/TAF 146—2023)安卓系统移动智能终端应用后台启动行为规范
五、合规建议
自启动相关的法规主要涉及网络安全、数据安全和个人信息保护等方面,除了《GBT-41391-2022移动互联网应用程序(APP)收集个人信息基本要求》之外,还有很多法律法规要求开发者和使用者采取必要的技术措施和管理措施,来保障自启动功能被合法合理地使用。
表2:自启动相关法律法规
发文名称 | “自启动”相关要求 |
164号文《工业和信息化部关于开展纵深推进APP侵害用户权益专项整治行动的通知》 | 三-(二)-6. APP频繁自启动和关联启动。重点整治APP未向用户告知且未经用户同意,或无合理的使用场景,频繁自启动或关联启动第三方APP的行为。 |
292号文《工业和信息化部关于开展信息通信服务感知提升行动的通知》 | 二-(三)-4. 内嵌SDK在非服务所必需或无合理应用场景下,不得自启动或关联启动。 |
团体标准(T/TAF 146—2023 安卓系统移动智能终端应用后台启动行为规范) | 6.1-a)应用软件不得以任何形式进行自启动,若有合理目的,需符合下述 b)中预期结果; 6.1-b)移动应用软件若有合理目的进行自启动,不得在自启动并完成目的后,主动使自身进程保持活跃状态。 |
图 8 网信办对违规APP的通报案例
综合上文所述,开发者在设计和开发自启动功能时,应遵守最小必要,用户知情的原则,以下是安卓APP设置自启动功能的合规建议:
只在用户需要和同意的情况下执行自启动,在无合理的场景下,APP不得存在自启动行为。
尽量使用系统提供的机制和接口来实现自启动功能。
优化自启动应用的性能和效率,避免占用系统过多的内存、电量和流量。
适配不同版本和厂商的安卓系统,处理好兼容性和适配性的问题。
除了开发者,作为用户也应当注意保护自己的个人信息安全,避免通过非法的应用分发平台下载和使用不可信的APP,定期管理和检查手机中的应用程序权限和应用行为记录,关闭不必要的自启动功能。
六、结语
所谓“单丝不成线,独木不成林”,安卓自启动行为是否符合要求,是一个涉及到用户、开发者和手机系统三方之间的问题,目前安卓系统对自启动应用进行了一定的限制和管理,但开发者们也需在法律法规约束的范围内合理、规范地开发自启动功能,作为用户也应学习如何辨别违规APP,当发现APP存在违规行为,可以学习掌握相关的检测方法,在自身权益受到侵害时,以知识和法律法规为武器,保护自身的隐私安全。
(本文作者:北京梆梆安全科技有限公司 陈希婷 鲍佳)
声明:本文来自CCIA数据安全工作委员会,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。