Android漏洞汇总

密钥硬编码漏洞

危害:"密钥硬编码是指在代码中直接将加密算法的密钥设置为一个固定值。通常加密算法本身都是公开的,而加密内容的保密则主要是依赖于加密密钥。如果密钥泄露,根据加密算法和加密后的密文,很容易得到加密前的明文。而密钥硬编码在代码中,通过反编译攻击者可以直接查看密钥内容,整个加密算法将形同虚设。密钥硬编码,可直接造成加密数据被破解,客户端与服务器之间的通信内容被破解,导致应用内的加密文件被破解,或是用户的敏感信
息泄露。"

解决方案: 密钥加密存储或者经过变形处理后用于加解密运算,切勿硬编码到代码中。
首先密钥存在本地很定不是绝对安全的,能做的是提高密钥获取的门槛,在android中主要有以下几个做法:
1、密钥直接明文存在sharedprefs文件中,这是最不安全的。
2、密钥直接硬编码在Java代码中,这很不安全,dex文件很容易被逆向成java代码。
3、将密钥分成不同的几段,有的存储在文件中、有的存储在代码中,最后将他们拼接起来,可以将整个操作写的很复杂,这因为还是在java层,逆向者只要花点时间,也很容易被逆向。
4、用ndk开发,将密钥放在so文件,加密解密操作都在so文件里,这从一定程度上提高了的安全性,挡住了一些逆向者,但是有经验的逆向者还是会使用IDA破解的。
5、在so文件中不存储密钥,so文件中对密钥进行加解密操作,将密钥加密后的密钥命名为其他普通文件,存放在assets目录下或者其他目录下,接着在so文件里面添加无关代码(花指令),虽然可以增加静态分析难度,但是可以使用动态调式的方法,追踪加密解密函数,也可以查找到密钥内容。

如果要想更高级别的密钥安全,那可以考虑使用密钥交换算法,比如DH算法,公钥加密密钥等。

Webview 明文存储密码风险

危害:Android 的 Webview 组件中默认打开了提示用户是否保存密码的功能,如果用户选择保存,用户名和密码将被明文存储到该应用目录databases/webview.db 中。而本地明文存储的用户名和密码,不仅会被该应用随意浏览,其他恶意程序也可能通过提权或者 root 的方式访问该应用的webview 数据库,从而窃取用户登录过的用户名信息以及密码。

解决方案:mWebView.settings.savePassword = false

WebView 安全之 addJavascriptInterface

危害:为了与Web页面实现动态交互,Android应用程序允许WebView通过WebView.addJavascriptInterface接口向Web页面注入Java对象,页面Javascript脚本可直接引用该对象并调用该对象的方法。
在Android <=4.1.2 (API 16),WebView使用WebKit浏览器引擎,并未正确限制addJavascriptInterface的使用方法,在应用权限范围内,攻击者可以通过Java反射机制实现任意命令执行。
在Android >=4.2 (API 17),WebView使用Chromium浏览器引擎,并且限制了Javascript对Java对象方法的调用权限,只有声明了@JavascriptInterace注解的方法才能被Web页面调用。
如:

<script>
  function execute(cmdArgs) {
            // jsobj是通过addJavascriptInterface添加到js中的java对象
      return jsobj.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
  }
  execute(someCmd);
</script>

解决方案:android 4.2以上使用@Javascriptinterface注解标记js需要调用的原生方法
android 4.2以下建议不要使用,可以通过
public WebResourceResponse shouldInterceptRequest(WebView view, final String url) 拦截来实现js调native。

“应用克隆”漏洞攻击风险

举例支付宝克隆漏洞/

危害:当 Android 应用中存在包含webview 的可被导出 Activity 组件时,setAllowFileAccess=true,setAllowFileAccessFromFileURLs=true,即允许通过 file url 对文件进行访问,并且未对访问的路径进行严格校验,则可能导致“应用克隆”漏洞攻击。
攻击者利用该漏洞,可远程获取用户隐私信息(包括手机应用数据、照片、文档等敏感信息)导致数据泄露,可远程打开并加载恶意HTML 文件,甚至获取 App 中包括用户登录凭证在内的所有本地敏感数据。

攻击流程:
setp1: 构造一个网页,网页代码要包含:1.启动支付宝的Webview 2.下载攻击脚本到本地SD卡的download目录 3.利用file协议加载本地攻击脚本
setp2: 利用支付宝应用定义的URL Scheme,使支付宝Webview加载自己的页面;
setp3: 下载到本地的攻击脚本,利用file协议打开执行攻击脚本,攻击脚本再一次利用file协议读取支付宝的个人数据,并上传到攻击者的服务器或者设备中

解决方案
1.严格限制包含 WebView 调用的 Activity 组件的导出权限,关闭导出权限
或者限制导出组件的发起者。
2.对于功能要求必须导出的 Activity 组件,手动设置
setAllowFileAccessFromFileURLs(false)或
setAllowUniversalAccessFromFileURLs(false)
或者设置 minSDK 不小于 16,因为此时这两处 API 默认为 false

  1. 对于必须使用 file URL 对 http 域进行访问时,可对传入的 URL 路径范围
    严格控制,例如建立 URL 白名单,设置允许访问的 URL 列表(不要遗漏路
    径中可能出现的特殊情况如“../../”等,避免限制被绕过)。举个栗子

    /构建 webview/
    WebView webView = new WebView(this);
    webview.setWebViewClient(new WebViewClient{
    public boolean shouldOverrideUrlLoading(WebView view, String
    url){
    /白名单/
    String[] allowUrlArr = {
    ""a.html"",
    ""b.html"",
    ""c.js"",
    }
    /禁止 url 中出现../避免白名单被绕过/
    if(-1 != url.indexOf(""../"")){
    return true;
    }
    /应用自己的 HTML 文件放在/data/data/(app)目录下,避免被第三方
    替换或修改
    /
    if(url.startsWith(""/data/data/(app)"")){
    /检测重定向的 url 是否在白名单中/
    for(String s : allowUrlArr){
    if(url.endsWith(s)){
    return false;
    } }}
    return true;})
    当返回值为 true 时,应该拒绝此 URL 路径下的访问。"

Webview File 同源策略绕过漏洞

举例

危害:Android 应用中存在包含webview 的可被导出 Activity 组件时,WebView setAllowFileAccess = true,setAllowFileAccessFromFileURLs= false,虽然不允许file url访问本地文件,但利用JavaScript 的延时执行能够绕过 file 协议的同源检查,并能够访问受害应用的所有私有文件,即通过 WebView 对 Javascript 的延时执行和将当前 Html文件删除掉并软连接指向其他文件就可以读取到被符号链接所指的文件,然后通过 JavaScript 再次读取 HTML 文件,即可获取到被符号链接所指的文件。大多数使用 WebView 的应用都会受到该漏洞的影响,恶意应用通过该漏洞,可在无特殊权限下盗取应用的任意私有文件,尤其是浏览器,可通过利用该漏洞,获取到浏览器所保存的密码、Cookie、收藏夹以及历史记录等敏感信息,从而造成敏感信息泄露。

image.png

解决方案

  1. 将不必要导出的组件设置为不导出,并显式设置所注册组件的
    “android:exported”属性为 false;
  2. 如果需要导出组件,禁止访问本地File
    WebView.getSettings.setAllowFileAccess(false);
  3. 如果需要使用 File 协议,禁止调用 JavaScript:
    WebView.getSettings.setJavaScrip"

allowBackup程序任意备份漏洞

危害说明:Android API Level 8 及其以上 Android 系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中 AndroidManifest.xml 文件中的 allowBackup 属性值,其属性值默认是 True。当 allowBackup 标志为 true 时,用户即可通过 adb backup 和 adb restore 来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。

Android 属性 allowBackup 安全风险源于 adb backup 容许任何一个能够打开 USB 调试开关的人从Android 手机中复制应用数据到外设,一旦应用数据被备份之后,所有应用数据都可被用户读取;adb restore 容许用户指定一个恢复的数据来源(即备份的应用数据)来恢复应用程序数据的创建。因此,当一个应用数据被备份之后,用户即可在其他 Android 手机或模拟器上安装同一个应用,以及通过恢复该备份的应用数据到该设备上,在该设备上打开该应用即可恢复到被备份的应用程序的状态。

尤其是通讯录应用,一旦应用程序支持备份和恢复功能,攻击者即可通过 adb backup 和 adb restore 进行恢复新安装的同一个应用来查看聊天记录等信息;对于支付金融类应用,攻击者可通过此来进行恶意支付、盗取存款等;因此为了安全起见,开发者务必将 allowBackup 标志值设置为 false 来关闭应用程序的备份和恢复功能,以免造成信息泄露和财产损失。

解决方案:应用程序中 AndroidManifest.xml 文件中的 allowBackup 属性设备为false。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350