Android 共享存储保护问题
Android Shared Storage protection issue
我已经实现了 Google 中给出的原生广告 Native Ads
除Android 4.x 版本外,它在所有设备上都运行良好。控制台中的崩溃日志是
Non-fatal Exception: java.lang.IllegalArgumentException: Optimized data directory /storage/emulated/0/Android/data/com.myapp/cache is not owned by the current user. Shared storage cannot protect your application from code injection attacks.
at dalvik.system.DexFile.(DexFile.java:100)
at dalvik.system.DexFile.loadDex + 149(DexFile.java:149)
at dalvik.system.DexPathList.loadDexFile + 251(DexPathList.java:251)
at dalvik.system.DexPathList.makeDexElements + 219(DexPathList.java:219)
at dalvik.system.DexPathList.(DexPathList.java:96)
at dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:56)
at dalvik.system.DexClassLoader.(DexClassLoader.java:57)
at ir.b + 31(ir.java:31)
at ir.a + 5(ir.java:5)
at iu.a + 1(iu.java:1)
at com.google.android.gms.ads.internal.ag.run + 5(ag.java:5)
at java.util.concurrent.ThreadPoolExecutor.runWorker + 1080(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run + 573(ThreadPoolExecutor.java:573)
at java.lang.Thread.run + 856(Thread.java:856)
从上面的崩溃中可以看出,优化的数据目录 /storage/emulated/0/Android/data/com。myapp/cache 不属于当前用户。 共享存储无法保护您的应用程序免受代码注入攻击
我有与搜索相关的问题 Android DexClassLoader error, 'optimized data directory .. not owned by current user',但那太旧了,与 Admob 无关。如果我删除与原生广告相关的代码,那么它是 运行 否则它会崩溃并简单地在崩溃上方记录。
请注意,我的应用程序在 2019 年 8 月 13 日之前使用相同的 nativeAd 代码运行良好。之后它无法使用 NativeAd 代码。
请帮忙。
您的应用程序似乎通过移动广告内容发生了一些注入攻击
注入攻击发生在以下Android个应用中
1) 无验证检查或可绕过验证检查
2) 文件覆盖漏洞,以及
3)代码触发点
第一个条件包括
的情况
(1) 应用不对下载的 DRU 资源执行完整性或真实性检查或
(2) 攻击者能够绕过此类验证检查。第二个条件表示注入的有效负载可以覆盖可执行文件的情况。
(3)当存在代码触发点时满足第三个条件,该代码触发点在应用上下文中加载并执行被覆盖的文件。
当满足这三个条件时,远程代码注入攻击就成功了。
攻击者注入的payload根据应用的DRU实现存储在指定位置,通常在应用的数据目录(/data/data/PACKAGE_NAME)或外部存储(如SD卡)中。
如果攻击者针对的DRU是应用代码更新,注入的代码会被替换为已有的代码资源(例如, .dex、⟩.jar或 .so),然后在应用触发时加载并执行更新逻辑。
发生这种情况是因为服务器端不在客户端。
移动广告包含一些 文件覆盖漏洞
所以那个应用程序崩溃了。
解法:
在服务器端验证广告内容。是否满足 google 条款和条件。
有关详细信息,请参阅 Large-Scale Analysis of Remote Code Injection Attacks in Android Apps
我已经实现了 Google 中给出的原生广告 Native Ads
除Android 4.x 版本外,它在所有设备上都运行良好。控制台中的崩溃日志是
Non-fatal Exception: java.lang.IllegalArgumentException: Optimized data directory /storage/emulated/0/Android/data/com.myapp/cache is not owned by the current user. Shared storage cannot protect your application from code injection attacks.
at dalvik.system.DexFile.(DexFile.java:100)
at dalvik.system.DexFile.loadDex + 149(DexFile.java:149)
at dalvik.system.DexPathList.loadDexFile + 251(DexPathList.java:251)
at dalvik.system.DexPathList.makeDexElements + 219(DexPathList.java:219)
at dalvik.system.DexPathList.(DexPathList.java:96)
at dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:56)
at dalvik.system.DexClassLoader.(DexClassLoader.java:57)
at ir.b + 31(ir.java:31)
at ir.a + 5(ir.java:5)
at iu.a + 1(iu.java:1)
at com.google.android.gms.ads.internal.ag.run + 5(ag.java:5)
at java.util.concurrent.ThreadPoolExecutor.runWorker + 1080(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run + 573(ThreadPoolExecutor.java:573)
at java.lang.Thread.run + 856(Thread.java:856)
从上面的崩溃中可以看出,优化的数据目录 /storage/emulated/0/Android/data/com。myapp/cache 不属于当前用户。 共享存储无法保护您的应用程序免受代码注入攻击
我有与搜索相关的问题 Android DexClassLoader error, 'optimized data directory .. not owned by current user',但那太旧了,与 Admob 无关。如果我删除与原生广告相关的代码,那么它是 运行 否则它会崩溃并简单地在崩溃上方记录。
请注意,我的应用程序在 2019 年 8 月 13 日之前使用相同的 nativeAd 代码运行良好。之后它无法使用 NativeAd 代码。
请帮忙。
您的应用程序似乎通过移动广告内容发生了一些注入攻击
注入攻击发生在以下Android个应用中
1) 无验证检查或可绕过验证检查
2) 文件覆盖漏洞,以及
3)代码触发点
第一个条件包括
的情况(1) 应用不对下载的 DRU 资源执行完整性或真实性检查或
(2) 攻击者能够绕过此类验证检查。第二个条件表示注入的有效负载可以覆盖可执行文件的情况。
(3)当存在代码触发点时满足第三个条件,该代码触发点在应用上下文中加载并执行被覆盖的文件。 当满足这三个条件时,远程代码注入攻击就成功了。
攻击者注入的payload根据应用的DRU实现存储在指定位置,通常在应用的数据目录(/data/data/PACKAGE_NAME)或外部存储(如SD卡)中。
如果攻击者针对的DRU是应用代码更新,注入的代码会被替换为已有的代码资源(例如, .dex、⟩.jar或 .so),然后在应用触发时加载并执行更新逻辑。
发生这种情况是因为服务器端不在客户端。 移动广告包含一些 文件覆盖漏洞 所以那个应用程序崩溃了。
解法:
在服务器端验证广告内容。是否满足 google 条款和条件。
有关详细信息,请参阅 Large-Scale Analysis of Remote Code Injection Attacks in Android Apps