oppo安全隐私检测-自动化检测:第三方SDK存在高频采集行为
用oppo安全隐私政策检测不通过
已做延迟初始化处理,UMConfigure.init在用户同意后调用,隐私政策有写明友盟sdk声明:
如您在使用分享、邀请用户时我们需要将您的设备信息(IMEI/Mac/android ID/IDFA/OPENUDID/GUID/SIM卡IMSI/地理位置信息)发送给第三方数据平台(友盟+SDK),由此来查看您的分享、链接、以及邀请/推广的数据统计,友盟隐私权政策链接:https://www.umeng.com/page/policy。
检测详情:
(1)第三方SDK存在高频采集行为 (详情)
友盟+ SDK通过GetAndroidId获取android_id (堆栈)
根据堆栈信息,发现友盟sdk监听了Activity生命周期回调,在onActivityStarted方法中获取了android_id。
堆栈:
result:{'resolver':'android.app.ContextImpl$ApplicationContentResolver@364ed40','name':'android_id','userHandle':0}
stackTrace:[{'lineNumber':488,'fileName':'Janus.java','methodName':'getData','level':0,'className':'libcore.util.Janus'},{'lineNumber':4869,'fileName':'Settings.java','methodName':'getStringForUser','level':0,'className':'android.provider.Settings$Secure'},{'lineNumber':4861,'fileName':'Settings.java','methodName':'getString','level':0,'className':'android.provider.Settings$Secure'},{'lineNumber':4,'fileName':'DeviceConfig.java','methodName':'<em>getAndroidId</em>','level':0,'className':'com.umeng.commonsdk.statistics.common.DeviceConfig'},{'lineNumber':-2,'fileName':'Method.java','methodName':'invoke','level':0,'className':'java.lang.reflect.Method'},{'lineNumber':2,'fileName':'','methodName':'a','level':0,'className':'com.umeng.umzid.ZIDManager'},{'lineNumber':1,'fileName':'','methodName':'a','level':0,'className':'com.umeng.umzid.ZIDManager'},{'lineNumber':4,'methodName':'run','level':0,'className':'com.umeng.umzid.ZIDManager$a'},{'lineNumber':458,'fileName':'Executors.java','methodName':'call','level':0,'className':'java.util.concurrent.Executors$RunnableAdapter'},{'lineNumber':266,'fileName':'FutureTask.java','methodName':'run','level':0,'className':'java.util.concurrent.FutureTask'},{'lineNumber':301,'fileName':'ScheduledThreadPoolExecutor.java','methodName':'run','level':0,'className':'java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask'},{'lineNumber':1167,'fileName':'ThreadPoolExecutor.java','methodName':'runWorker','level':0,'className':'java.util.concurrent.ThreadPoolExecutor'},{'lineNumber':641,'fileName':'ThreadPoolExecutor.java','methodName':'run','level':0,'className':'java.util.concurrent.ThreadPoolExecutor$Worker'},{'lineNumber':770,'fileName':'Thread.java','methodName':'run','level':0,'className':'java.lang.Thread'},{'lineNumber':729,'fileName':'Thread.java','methodName':'start','parent':1,'className':'java.lang.Thread'},{'lineNumber':975,'fileName':'ThreadPoolExecutor.java','methodName':'addWorker','parent':2,'className':'java.util.concurrent.ThreadPoolExecutor'},{'lineNumber':1616,'fileName':'ThreadPoolExecutor.java','methodName':'ensurePrestart','parent':3,'className':'java.util.concurrent.ThreadPoolExecutor'},{'lineNumber':342,'fileName':'ScheduledThreadPoolExecutor.java','methodName':'delayedExecute','parent':4,'className':'java.util.concurrent.ScheduledThreadPoolExecutor'},{'lineNumber':562,'fileName':'ScheduledThreadPoolExecutor.java','methodName':'schedule','parent':5,'className':'java.util.concurrent.ScheduledThreadPoolExecutor'},{'lineNumber':654,'fileName':'ScheduledThreadPoolExecutor.java','methodName':'execute','parent':6,'className':'java.util.concurrent.ScheduledThreadPoolExecutor'},{'lineNumber':4,'methodName':'a','parent':7,'className':'com.umeng.umzid.b'},{'lineNumber':2,'fileName':'','methodName':'init','parent':8,'className':'com.umeng.umzid.ZIDManager'},{'lineNumber':-2,'fileName':'Method.java','methodName':'invoke','parent':9,'className':'java.lang.reflect.Method'},{'lineNumber':24,'fileName':'UMInternalDataProtocol.java','methodName':'d','parent':10,'className':'com.umeng.commonsdk.internal.c'},{'lineNumber':3,'fileName':'UMInternalDataProtocol.java','methodName':'g','parent':11,'className':'com.umeng.commonsdk.internal.c'},{'lineNumber':37,'fileName':'UMInternalDataProtocol.java','methodName':'workEvent','parent':12,'className':'com.umeng.commonsdk.internal.c'},{'lineNumber':5,'fileName':'UMWorkDispatch.java','methodName':'handleEvent','parent':13,'className':'com.umeng.commonsdk.framework.UMWorkDispatch'},{'lineNumber':1,'fileName':'UMWorkDispatch.java','methodName':'access$000','parent':14,'className':'com.umeng.commonsdk.framework.UMWorkDispatch'},{'lineNumber':5,'fileName':'UMWorkDispatch.java','methodName':'handleMessage','parent':15,'className':'com.umeng.commonsdk.framework.UMWorkDispatch$1'},{'lineNumber':106,'fileName':'Handler.java','methodName':'dispatchMessage','parent':16,'className':'android.os.Handler'},{'lineNumber':193,'fileName':'Looper.java','methodName':'loop','parent':17,'className':'android.os.Looper'},{'lineNumber':65,'fileName':'HandlerThread.java','methodName':'run','parent':18,'className':'android.os.HandlerThread'},{'lineNumber':729,'fileName':'Thread.java','methodName':'start','parent':19,'className':'java.lang.Thread'},{'lineNumber':4,'fileName':'UMWorkDispatch.java','methodName':'init','parent':20,'className':'com.umeng.commonsdk.framework.UMWorkDispatch'},{'lineNumber':4,'fileName':'UMWorkDispatch.java','methodName':'sendEventInternal','parent':21,'className':'com.umeng.commonsdk.framework.UMWorkDispatch'},{'lineNumber':1,'fileName':'UMWorkDispatch.java','methodName':'sendEvent','parent':22,'className':'com.umeng.commonsdk.framework.UMWorkDispatch'},{'lineNumber':136,'fileName':'EventTracker.java','methodName':'a','parent':23,'className':'com.umeng.analytics.pro.s'},{'lineNumber':120,'fileName':'InternalAgent.java','methodName':'a','parent':24,'className':'com.umeng.analytics.b'},{'lineNumber':109,'fileName':'InternalAgent.java','methodName':'a','parent':25,'className':'com.umeng.analytics.b'},{'lineNumber':23,'fileName':'AutoViewPageTracker.java','methodName':'onActivityStarted','parent':26,'className':'com.umeng.analytics.pro.l$1'},{'lineNumber':303,'fileName':'Application.java','methodName':'dispatchActivityStarted','parent':27,'className':'android.app.Application'},{'lineNumber':1284,'fileName':'Activity.java','methodName':'onStart','parent':28,'className':'android.app.Activity'},{'lineNumber':2,'fileName':'FragmentActivity.java','methodName':'onStart','parent':29,'className':'androidx.fragment.app.FragmentActivity'},{'lineNumber':1,'fileName':'AppCompatActivity.java','methodName':'onStart','parent':30,'className':'androidx.appcompat.app.AppCompatActivity'},{'lineNumber':1392,'fileName':'Instrumentation.java','methodName':'callActivityOnStart','parent':31,'className':'android.app.Instrumentation'},{'lineNumber':7308,'fileName':'Activity.java','methodName':'performStart','parent':32,'className':'android.app.Activity'},{'lineNumber':2976,'fileName':'ActivityThread.java','methodName':'handleStartActivity','parent':33,'className':'android.app.ActivityThread'},{'lineNumber':180,'fileName':'TransactionExecutor.java','methodName':'performLifecycleSequence','parent':34,'className':'android.app.servertransaction.TransactionExecutor'},{'lineNumber':165,'fileName':'TransactionExecutor.java','methodName':'cycleToPath','parent':35,'className':'android.app.servertransaction.TransactionExecutor'},{'lineNumber':142,'fileName':'TransactionExecutor.java','methodName':'executeLifecycleState','parent':36,'className':'android.app.servertransaction.TransactionExecutor'},{'lineNumber':70,'fileName':'TransactionExecutor.java','methodName':'execute','parent':37,'className':'android.app.servertransaction.TransactionExecutor'},{'lineNumber':1817,'fileName':'ActivityThread.java','methodName':'handleMessage','parent':38,'className':'android.app.ActivityThread$H'},{'lineNumber':106,'fileName':'Handler.java','methodName':'dispatchMessage','parent':39,'className':'android.os.Handler'},{'lineNumber':193,'fileName':'Looper.java','methodName':'loop','parent':40,'className':'android.os.Looper'},{'lineNumber':6719,'fileName':'ActivityThread.java','methodName':'main','parent':41,'className':'android.app.ActivityThread'},{'lineNumber':-2,'fileName':'Method.java','methodName':'invoke','parent':42,'className':'java.lang.reflect.Method'},{'lineNumber':506,'fileName':'RuntimeInit.java','methodName':'run','parent':43,'className':'com.android.internal.os.RuntimeInit$MethodAndArgsCaller'},{'lineNumber':863,'fileName':'ZygoteInit.java','methodName':'main','parent':44,'className':'com.android.internal.os.ZygoteInit'}]