Android應(yīng)用開發(fā)allowBackup敏感信息泄露

【工匠若水http://blog.csdn.net/yanbober轉(zhuǎn)載煩請(qǐng)注明出處衍锚,尊重勞動(dòng)成果】

1 背景

? ? ? ?其實(shí)這篇文章可能有些小題大作担平,但回過頭想想還是很有必要的,有點(diǎn)陰溝里翻船的感覺。相信大家都知道Android API Level 8開始提供了為應(yīng)用程序備份和恢復(fù)數(shù)據(jù)的功能,此功能的開關(guān)可以通過應(yīng)用程序中AndroidManifest.xml文件的allowBackup屬性值進(jìn)行配置,默認(rèn)是True沦零,所以用戶可以對(duì)我們應(yīng)用程序進(jìn)行數(shù)據(jù)備份。相信很多人都和我一樣一直當(dāng)作耳邊風(fēng)過了一下Android這個(gè)特性货岭,然后就一直沒再打理了路操。然而舊事重提的故事是下面這樣開始的:

前不久突然收到了一個(gè)Bug反饋,來自國(guó)內(nèi)著名的白帽子組織烏云平臺(tái)千贯,關(guān)于這個(gè)組織就不作介紹了屯仗,相信大家一定知道問題的嚴(yán)重性,關(guān)于修復(fù)這個(gè)Bug是很快的事情搔谴,但是修復(fù)完這個(gè)Bug以后不得不讓我進(jìn)入思考(就像之前處理SQL注入一樣)魁袜,所以寫出此文記錄。

? ? ? ?其實(shí)allowBackup的風(fēng)險(xiǎn)原理主要是允許通過adb backup對(duì)打開USB調(diào)試的設(shè)備進(jìn)行數(shù)據(jù)備份,一旦得到備份文件之后那就不好說了峰弹,譬如邪惡的人可以再通過adb restore將你的數(shù)據(jù)恢復(fù)到自己的設(shè)備上店量,然后就完全在自己的設(shè)備上以你的名義去玩弄App;或者通過代碼分析出備份文件中你登陸App的一些賬戶密碼等核心信息鞠呈∪谑Γ總之,Google當(dāng)初設(shè)計(jì)的核心肯定是為了方便備份數(shù)據(jù)考慮的蚁吝,但是大家自己開發(fā)的應(yīng)用似乎忽略了手機(jī)丟失或者被他人撿到的問題旱爆,譬如通訊錄或者名片、支付類等App如果一旦出現(xiàn)此類問題后果還是很嚴(yán)重的窘茁,所以有必要重視一下怀伦。

2 實(shí)例還原

? ? ? ?為了驗(yàn)證該小問題可能帶來的重大敏感信息泄露問題,我們下面選幾個(gè)代表App進(jìn)行測(cè)試庙曙,這樣就可以直觀的讓你感受到泄露的一點(diǎn)危機(jī)。

特別聲明:本文實(shí)例中涉及的應(yīng)用只為驗(yàn)證浩淘,且本問題一般不會(huì)造成太大風(fēng)險(xiǎn)捌朴,故煩請(qǐng)大家保持學(xué)習(xí)心態(tài)而不要肆意污蔑應(yīng)用開發(fā)者;當(dāng)然我也已經(jīng)通過烏云漏洞平臺(tái)對(duì)下面涉及到的應(yīng)用進(jìn)行了漏洞提交张抄,相信這些應(yīng)用新的迭代版本中很快就會(huì)解決掉的砂蔽。

《簡(jiǎn)書》Android 1.9.7版本測(cè)試

結(jié)論:會(huì)存在帳號(hào)被盜取問題。

驗(yàn)證:設(shè)備A上登陸帳號(hào)密碼后如下:

然后在該設(shè)備上執(zhí)行如下命令將數(shù)據(jù)備份到電腦上:

XXX@ThinkPad:~/workspace/myself/temp$ adb backup -f back.ab -noapk com.jianshu.harukiNowunlock your deviceandconfirm the backup operation.

此時(shí)換一臺(tái)設(shè)備B安裝此應(yīng)用署惯,但是不登陸任何帳號(hào)密碼左驾,執(zhí)行如下命令:

XXX@ThinkPad:~/workspace/myself/temp$ adb restore back.abNowunlock your deviceandconfirm the restore operation.

可以看見,設(shè)備B沒有進(jìn)行帳號(hào)密碼登陸极谊,只是通過恢復(fù)A設(shè)備的備份數(shù)據(jù)就成功登陸了A設(shè)備的信息诡右。

《Sina微博》Android 5.1.0版本測(cè)試

按照上面的類似流程測(cè)試微薄發(fā)現(xiàn)在設(shè)備B上面恢復(fù)設(shè)備A的數(shù)據(jù)無效,設(shè)備B依舊顯示如下:

也就是說Sina微博考慮的很周全轻猖,已經(jīng)修復(fù)了此類潛在的泄露風(fēng)險(xiǎn)帆吻,備份數(shù)據(jù)恢復(fù)無效,依舊需要重新登陸才可以咙边,給一個(gè)贊猜煮。

《薄荷》Android 5.4.5.1版本測(cè)試

這個(gè)應(yīng)用依據(jù)上面類似操作后你會(huì)發(fā)現(xiàn)完全可以在設(shè)備B上不用登陸帳號(hào),只用恢復(fù)別人的備份帳號(hào)信息即可進(jìn)入別人帳號(hào)界面败许,如下:

上面為設(shè)備B上截圖情況王带,直接可以在設(shè)備B上操作設(shè)備A的帳號(hào)。

3 反思與總結(jié)

看了上面兩部分的敘述以后你可能也會(huì)意識(shí)到這個(gè)問題潛在的嚴(yán)重性市殷,Google的初心是好的愕撰,但是一旦被別有用心的人瞄上了這個(gè)突破點(diǎn)問題就嚴(yán)重了。譬如再高端一點(diǎn),別有用心的人專門寫一段代碼去執(zhí)行數(shù)據(jù)備份上傳到自己的云端服務(wù)器盟戏,然后解析這些備份數(shù)據(jù)绪妹,小則個(gè)人信息泄露,大則哈哈柿究,你懂的邮旷。

既然這樣肯定你也會(huì)關(guān)心解決方案吧,具體解決比較容易蝇摸,如下:

方案1:

直接在你的Android清單文件中設(shè)置android:allowBackup=”false”即可婶肩,如下:

? ? android:name=".application.wjgApplication"

? ? android:allowBackup="false"

? ? android:icon="@mipmap/ic_logo"

? ? android:label="@string/app_name"

? ? android:theme="@style/AppTheme">

方案2:

不在你的Android清單文件中設(shè)置android:allowBackup=”false”,允許執(zhí)行備份貌夕,但是在你應(yīng)用啟動(dòng)頁進(jìn)行邏輯判斷是否進(jìn)行重新登陸等律歼,譬如查看設(shè)備唯一識(shí)別設(shè)備編號(hào)和備份前是否一致,不一致則直接跳轉(zhuǎn)登陸頁面的同時(shí)清空當(dāng)前應(yīng)用數(shù)據(jù)及緩存啡专。

好了险毁,個(gè)人愚見,不足說服力们童,只是因?yàn)轫?xiàng)目被烏云反饋而寫的一點(diǎn)總結(jié)而已畔况,目前我們采用了類似新浪微博的方案1做法。

【工匠若水http://blog.csdn.net/yanbober轉(zhuǎn)載煩請(qǐng)注明出處慧库,尊重勞動(dòng)成果】

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末跷跪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子齐板,更是在濱河造成了極大的恐慌吵瞻,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甘磨,死亡現(xiàn)場(chǎng)離奇詭異橡羞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)济舆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門尉姨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吗冤,你說我怎么就攤上這事又厉。” “怎么了椎瘟?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵覆致,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我肺蔚,道長(zhǎng)煌妈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮璧诵,結(jié)果婚禮上汰蜘,老公的妹妹穿的比我還像新娘。我一直安慰自己之宿,他們只是感情好族操,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著比被,像睡著了一般色难。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上等缀,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天枷莉,我揣著相機(jī)與錄音,去河邊找鬼尺迂。 笑死笤妙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的噪裕。 我是一名探鬼主播蹲盘,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼州疾!你這毒婦竟也來了辜限?” 一聲冷哼從身側(cè)響起皇拣,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤严蓖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后氧急,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颗胡,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年吩坝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毒姨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钉寝,死狀恐怖弧呐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嵌纲,我是刑警寧澤俘枫,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站逮走,受9級(jí)特大地震影響鸠蚪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一茅信、第九天 我趴在偏房一處隱蔽的房頂上張望盾舌。 院中可真熱鬧,春花似錦蘸鲸、人聲如沸妖谴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窖维。三九已至,卻和暖如春妙痹,著一層夾襖步出監(jiān)牢的瞬間铸史,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工怯伊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琳轿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓耿芹,卻偏偏與公主長(zhǎng)得像崭篡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吧秕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容