Android静态安全检查(六):Service劫持

什么是Service劫持

Android应用中,Service是一个重要的组件,用于执行比较耗时的后台任务,启动一个Service常用的方法是ComponentName startService(Intent service),传入的参数是Intent,Intent使用有两种情况

  • 一个是设置action,接收到action的Service,然后启动。
  • 一个是明确指定要启动的Service和包名

当应用程序通过设置action来启动某个Service1的时候,恶意应用可以创建一个同样接收action的Service。在Android系统中,如果存在多个Service接收同一个action的时候,首先看他们的priority值,priority值高,就先启动哪个。如果priority值一样,就看Service所属应用程序的安装顺序,启动先安装应用的Service。

检测方法

扫描应用程序的所有startService和bindService方法,查看启动的Intent参数,判断Intent是否满足以下情况:

  • Intent在创建时指定了class
  • Intent使用了setClass方法指定了class
  • Intent使用setComponent方法指定了package和class。

如果该Intent不满足以上任何的一种情况,则这个Service存在被外部应用程序劫持风险。

修复方案

当创建Intent的时候,显示的指定要启动的Service的包名和类名,不使用action方式启动。

猜你喜欢

转载自blog.csdn.net/u010889616/article/details/80959562