Android APP通用型拒絕服務(wù)、漏洞分析報(bào)告

點(diǎn)評(píng):記得曾經(jīng)有段時(shí)間很多SRC平臺(tái)被刷了大量APP本地拒絕服務(wù)漏洞,移動(dòng)安全團(tuán)隊(duì)愛(ài)內(nèi)測(cè)(ineice.com)發(fā)現(xiàn)了一個(gè)安卓客戶(hù)端的通用型拒絕服務(wù)漏洞覆履,來(lái)看看他們的詳細(xì)分析吧。

0xr0ot和Xbalien交流所有可能導(dǎo)致應(yīng)用拒絕服務(wù)的異常類(lèi)型時(shí),發(fā)現(xiàn)了一處通用的本地拒絕服務(wù)漏洞硝全。該通用型本地拒絕服務(wù)可以造成大面積的app拒絕服務(wù)栖雾。

針對(duì)序列化對(duì)象而出現(xiàn)的拒絕服務(wù)主要是由于應(yīng)用中使用了getSerializableExtra() 的API,由于應(yīng)用開(kāi)發(fā)者沒(méi)有對(duì)傳入的數(shù)據(jù)做異常判斷伟众,惡意應(yīng)用可以通過(guò)傳入畸形數(shù)據(jù)析藕,導(dǎo)致應(yīng)用本地拒絕服務(wù)。

漏洞應(yīng)用代碼片段:

1 Intent i = getIntent();

2 if(i.getAction().equals("serializable_action")){

3 i.getSerializableExtra("serializable_key"); //未做異常判斷

4 }

攻擊應(yīng)用代碼片段:

1 Intent i = new Intent();

2 i.setAction("serializable_action");

3 i.setClassName("com.exp.serializable", "com.exp.serializable.MainActivity");

4 i.putExtra("seriadddddlizable_dkey",XXX); //此處是傳入畸形數(shù)據(jù)

5 startActivity(i);

比如XXX處傳入BigInteger.valueOf(1)極有可能發(fā)生轉(zhuǎn)型異常錯(cuò)誤java.lang.ClassCastException赂鲤。

但后來(lái)交流中發(fā)現(xiàn)噪径,當(dāng)傳入一個(gè)自定義的序列化對(duì)象Serializable或getParcelable對(duì)象時(shí),接收Intent的目標(biāo)組件在getSerializableExtra()数初、getParcelable()等會(huì)拋出類(lèi)未定義的異常java.lang.NoClassDefFoundError找爱。這是因?yàn)楫?dāng)你給漏洞應(yīng)用傳入一個(gè)應(yīng)用本身并沒(méi)有的序列化類(lèi)對(duì)象,在應(yīng)用上下文中肯定是找不到這個(gè)類(lèi)的泡孩。

自定義的序列化類(lèi)很簡(jiǎn)單:

1 public class DataSchema implements Serializable {

2 private static final long serialVersionUID = -3601187837704976264L;

3 public DataSchema() {

4 super();

5 }

6 }

對(duì)應(yīng)的攻擊代碼中XXX處傳入new DataSchema(),我們發(fā)現(xiàn)傳入的key不管是否與漏洞應(yīng)用相同车摄,都會(huì)拋出類(lèi)未定義的異常。

隨著測(cè)試的深入仑鸥,我們通過(guò)logcat發(fā)現(xiàn)吮播,在錯(cuò)誤日志里不一定是getSerializableExtra()、getParcelable()導(dǎo)致的眼俊。然后我們就延伸了下意狠,試著向getXXXExtra()傳入我們自定義的序列化類(lèi)對(duì)象,發(fā)現(xiàn)都會(huì)拋出類(lèi)未定義的異常疮胖。

測(cè)試app代碼片段:

1 protected void onCreate(Bundle savedInstanceState) {

2 Intent intent = getIntent();

3 intent.getStringExtra("ROIS"); //此處依然會(huì)由于NoClassDefFoundError crash

4 }

接著我們測(cè)試了市面上大量主流應(yīng)用环戈,涵蓋BAT等。發(fā)現(xiàn)這種方法可以通殺澎灸。我們開(kāi)始覺(jué)得這個(gè)是android本身的問(wèn)題院塞,開(kāi)始翻源代碼。

01 public String getStringExtra(String name) {

02 return mExtras == null ? null : mExtras.getString(name);

03 }

04 /frameworks/base/core/java/android/os/Bundle.java

05 public String getString(String key) {

06 unparcel(); //處理數(shù)據(jù)

07 ...

08 }

09 /* package */ synchronized void unparcel() {

10 ...

11 mParcelledData.readMapInternal(mMap, N, mClassLoader);

12 ...

13 }

14

15 /frameworks/base/core/java/android/os/Parcel.java

16 readMapInternal解析傳遞進(jìn)來(lái)的數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末性昭,一起剝皮案震驚了整個(gè)濱河市拦止,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌糜颠,老刑警劉巖汹族,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異其兴,居然都是意外死亡鞠抑,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)忌警,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事法绵』伲” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵朋譬,是天一觀的道長(zhǎng)盐茎。 經(jīng)常有香客問(wèn)我,道長(zhǎng)徙赢,這世上最難降的妖魔是什么字柠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮狡赐,結(jié)果婚禮上窑业,老公的妹妹穿的比我還像新娘。我一直安慰自己枕屉,他們只是感情好常柄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著搀擂,像睡著了一般西潘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哨颂,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天喷市,我揣著相機(jī)與錄音,去河邊找鬼威恼。 笑死品姓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沃测。 我是一名探鬼主播缭黔,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蒂破!你這毒婦竟也來(lái)了馏谨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤附迷,失蹤者是張志新(化名)和其女友劉穎惧互,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體喇伯,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡喊儡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了稻据。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艾猜。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出匆赃,到底是詐尸還是另有隱情淤毛,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布算柳,位于F島的核電站低淡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瞬项。R本人自食惡果不足惜蔗蹋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望囱淋。 院中可真熱鬧猪杭,春花似錦、人聲如沸绎橘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)称鳞。三九已至涮较,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冈止,已是汗流浹背狂票。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熙暴,地道東北人闺属。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像周霉,于是被迫代替她去往敵國(guó)和親掂器。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理俱箱,服務(wù)發(fā)現(xiàn)国瓮,斷路器,智...
    卡卡羅2017閱讀 134,664評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,178評(píng)論 25 707
  • 我們?cè)跁r(shí)間的洪流里趟過(guò) 誠(chéng)惶誠(chéng)恐 措手不及 沒(méi)有你的日子 我以為會(huì)更加豐滿(mǎn) 卻未想過(guò) 這些早已成為我的惡疾 像癌細(xì)...
    西澤兮閱讀 238評(píng)論 0 4
  • 人生八苦,第一苦便是“生之苦”跟衅。 “生之苦”不僅僅是從產(chǎn)道里出生的痛孵睬,更是無(wú)法選擇之苦。 我們不能選擇自己的父母伶跷,...
    王唯安閱讀 760評(píng)論 0 2
  • 最近在寫(xiě)項(xiàng)目的時(shí)候發(fā)現(xiàn)要寫(xiě)一個(gè)圓形進(jìn)度條掰读,本來(lái)想著自己寫(xiě)一個(gè)吧秘狞,寫(xiě)完后發(fā)現(xiàn)有坑啊,關(guān)鍵是還是一個(gè)大坑蹈集,項(xiàng)目中使用的...
    猩程變閱讀 1,755評(píng)論 0 0