Android配置错误

1. 程序可被任意调试

原因:Manifest.xml中的android:debuggable=true,调试开关被打开。

修复:把true改成false。

并不是说false就不可以在不重打包的情况下被调试了,仍然可以通过定制boot.img 修改 prop里的ro.secure和ro.debuggable(https://bbs.pediy.com/thread-197334.htm),或者使用Xposed的HOOK插件xinstaller开启系统中所有应用的调试功能

题外话,xinstaler是如何开启系统所有应用的调试功能的呢?查看源码看看吧。

从上看出,是hook了android.os.Process.start,根据Process.java源码public static final ProcessStartResult start(final String processClass, final String niceName, int uid, int gid, int[] gids, int debugFlags, int mountExternal, int targetSdkVersion, String seInfo, String abi, String instructionSet, String appDataDir, String[] zygoteArgs)可见xinstall的开启应用调试实际上是在进程启动的时候修改了debugFlags这个值

查考:http://gityuan.com/2016/03/26/app-process-create/

2. WebView开启debug模式(与Manifest无关)

原因:开启了webview的远程chrome调试模式WebView.setWebContentsDebuggingEnabled(true);

修复:删除该行代码。

关于如何用chrome进行webview的远程调试,请看: https://developer.chrome.com/devtools/docs/remote-debugging

如果我们调试需要开启webContentsDebuggingEnabled,Xposed能强制做到这一点。

//勾住webview所有构造器
XposedBridge.hookAllConstructors(WebView.class, new XC_MethodHook() { 

    @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { 

        // 打开webContentsDebuggingEnabled 

        XposedHelpers.callStaticMethod(WebView.class, "setWebContentsDebuggingEnabled", true); 

    } 
}

复制代码

参考:https://www.jianshu.com/p/d6699cd4505e

3. 组件暴露(Activity、Service、ContentProvider、BroadcastReceiver)

原因:组件的属性exported被设置为true或是未设置exported值但IntentFilter不为空时,activity被认为是导出的,可通过设置相应的Intent唤起activity。

修复:如果组件不需要与其他App共享数据或交互,请将AndroidManifest.xml中设置该组件为exported="False"。如果组件需要与其他App共享数据或交互,请对组件进行权限控制和参数校验。使用android:protectionLevel="signature"验证调用来源。

4. intent scheme URLs攻击

原因: 在AndroidManifast.xml设置Scheme协议之后,可以通过浏览器打开对应的Activity。

修复:App对外部调用过程和传输数据进行安全检查或检验,配置category filter, 添加android.intent.category.BROWSABLE方式规避风险

参考:https://www.mbsd.jp/Whitepaper/IntentScheme.pdf

5. Webview启用访问文件数据

原因:Webview中使用setAllowFileAccess(true),App可通过webview访问私有目录下的文件数据

修复: 明确的用WebView.getSettings().setAllowFileAccess(false)来禁止访问私有文件数据

6. https安全(略)

7. 开放Socket端口

原因:app绑定端口监听,建立连接后可接收外部发送的数据

修复:如无必要,只绑定本地ip127.0.0.1,并对接收的数据进行过滤验证

8. SD卡数据被第三方访问

原因:调用getExternalStorageDirectory,存储内容到SD卡可以被任意程序访问

修复:敏感信息存储到程序私有目录,并加密

9. 全局File可读写漏洞

原因:openFileOutput(String name,int mode)方法创建内部文件时,将文件设置了全局的可读权限MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE

修复:缺人是否存在敏感数据,去掉文件全局可读写属性

10. 私有文件泄露

原因:使用getSharedPreferences打开文件时第二个参数设置为MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE

修复:设置为MODE_PRIVATE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值