【问题标题】:Android Shared Storage protection issueAndroid共享存储保护问题
【发布时间】:2019-08-17 07:20:42
【问题描述】:

我已按照Native Ads 中的说明实施了 Google 原生广告

它在除 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 admob native-ads


    【解决方案1】:

    您的应用程序中似乎通过移动广告内容发生了一些注入攻击

    注入攻击发生在以下案例中的Android应用中

    1) 无验证检查或可绕过验证检查

    2) 文件覆盖漏洞,以及

    3) 代码触发点

    第一个条件包括当

    (1) 应用不对下载的 DRU 资源执行完整性或真实性检查,或者

    (2) 攻击者能够绕过此类验证检查。第二个条件表示注入的有效负载可以覆盖可执行文件的情况。

    (3)当存在代码触发点,覆盖文件在应用上下文中被加载和执行时,满足第三个条件。 满足这三个条件,远程代码注入攻击就成功了。

    攻击者注入的payload根据应用的DRU实现存储在指定位置,通常在应用的数据目录(/data/data/PACKAGE_NAME)或外部存储(如SD卡)中。

    如果攻击者针对的 DRU 是应用程序代码更新,则注入的代码会替换为现有的代码资源(例如,  .dex、  .jar 或  .so),然后在应用程序触发更新时加载并执行逻辑。

    这是因为服务器端不在客户端。 移动广告包含一些文件覆盖漏洞 所以应用程序崩溃了。

    解决方案:

    在服务器端验证广告内容。是否满足谷歌条款和条件。

    更多详情请咨询Large-Scale Analysis of Remote Code Injection Attacks in Android Apps

    【讨论】:

      猜你喜欢
      • 2012-02-09
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 2014-02-07
      • 2021-06-14
      • 2015-07-20
      • 2020-09-06
      相关资源
      最近更新 更多