WIKI

13.5 外部动态加载DEX检测

(1)描述

Android4.1之前的系统版本,容许Android应用在全局可读写(如SD卡)的位置动态加载DEX文件,因此有文件被替换的风险。

(2)风险等级

提示

(3)影响范围

Android4.1之前的系统版本。

(4)检测方法

检测类型:半自动

Example Java code:

  DexClassLoader cl = new DexClassLoader(optimizedDexOutputPath.getAbsolutePath(),

                    Environment.getExternalStorageDirectory().toString(), null, getClassLoader());

  

Example Bytecode code:

    ......

    Ldalvik/system/DexClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;

                    Ljava/lang/String;Ljava/lang/ClassLoader;)V

    ......

(5)检测方法

DexClassLoaderAndroid版本。

(6)修复建议

ü  禁止外部(不安全的源)加载DEX,将所需要动态加载的DEX/APK文件放置到APK内部或应用私有目录中。

ü  使用加密网络协议进行下载加载的DEX/APK文件并将其放置到应用私有目录中。

ü  对不可信的加载来源进行完整性校验。

 

(7)样例分析

l  http://.wooyun.org/bugs/wooyun-2010-09299

(8)参考资料

l  https://jaq.alibaba.com/blog.htm?id=63