自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android安全之Intent Scheme Url攻擊

移動(dòng)開(kāi)發(fā) Android
Intent scheme url是一種用于在web頁(yè)面中啟動(dòng)終端app activity的特殊URL,在針對(duì)intent scheme URL攻擊大爆發(fā)之前,很多android的瀏覽器都支持intent scheme url。

0X01 前言

Intent scheme url是一種用于在web頁(yè)面中啟動(dòng)終端app activity的特殊URL,在針對(duì)intent scheme URL攻擊大爆發(fā)之前,很多android的瀏覽器都支持intent scheme url。

Intent scheme url的引入雖然帶來(lái)了一定的便捷性,但從另外一方面看,給惡意攻擊頁(yè)面通過(guò)intent-based攻擊終端上已安裝應(yīng)用提供了便利,盡管瀏覽器app已經(jīng)采取了一定的安全策略來(lái)減少這一類風(fēng)險(xiǎn),但顯然是不夠的。

2014年3月,一篇關(guān)于intent scheme url攻擊的文章:

Whitepaper – Attacking Android browsers via intent scheme URLs

詳細(xì)介紹了相關(guān)的攻擊手法,之后國(guó)內(nèi)的漏洞收集平臺(tái)上開(kāi)始被這一類型漏洞刷屏。

0X02 Intent scheme url解析

一個(gè)intent scheme url的使用示例: 

 

如果瀏覽器支持intent scheme url,在加載了改web頁(yè)面后,將根據(jù)url生成一個(gè)intent,并嘗試通過(guò)intent打來(lái)指定的activity。此過(guò)程中瀏覽器的需要完成的工作可以拆分為3步: 

Step1:

根據(jù)url生成對(duì)應(yīng)的intent object,此過(guò)程通過(guò)以下代碼完成:

Intent intent = Intent.parseUri(url);

intent scheme url的內(nèi)容可以根據(jù)一下語(yǔ)法規(guī)則設(shè)置的比較完善:

intent:

  1. HOST/URI-path // Optional host 
  2.   #Intent; 
  3.      package=[string]; 
  4.      action=[string]; 
  5.      category=[string]; 
  6.      component=[string]; 
  7.      scheme=[string]; 
  8.   end 

Step2:

intent過(guò)濾,安全起見(jiàn),很多瀏覽器對(duì)step1中的intent object進(jìn)行過(guò)濾,以抵御intent-based攻擊,不用的瀏覽器,過(guò)濾規(guī)則各不相同。

Step3:

組件調(diào)用,最后一步就是使用step2過(guò)濾后的intent調(diào)用指定的組件,瀏覽器中一般使用Context#startActivityIfNeeded() 或者 Context#startActivity()方法實(shí)現(xiàn)。

下面是各大瀏覽器對(duì)Intent scheme URL的支持情況 : 

 

 

 

0X03攻擊場(chǎng)景

主要由兩種攻擊場(chǎng)景。

類型1:瀏覽器攻擊

因?yàn)閕ntent是瀏覽器依據(jù)url生成并以瀏覽器自己的身份發(fā)送的,因此攻擊者惡意頁(yè)面中的intent scheme url不僅可以調(diào)起導(dǎo)出組件,還可以調(diào)起私有組件。

類型2:終端上安裝的任意APP

intent-based攻擊一般是通過(guò)終端上安裝的惡意app來(lái)實(shí)現(xiàn)的,但通過(guò)瀏覽器加載包含特定intent scheme url的惡意頁(yè)面,可以實(shí)現(xiàn)對(duì)終端上安裝的任意app遠(yuǎn)程intent-based攻擊的效果。在2013年?yáng)|京的Pwn2Own上比賽上,次攻擊方式被應(yīng)用于攻陷三星Samsung Galaxy S4。

0X04 攻擊案例

以下介紹三個(gè)瀏覽器的intent scheme url攻擊案例,攻擊主要源于這些瀏覽器在step2(也就是intent過(guò)濾過(guò)程)中存在缺陷。

Opera mobile for Android cookie theft

Opera瀏覽器中缺少intent過(guò)濾步驟,一次可以通過(guò)惡意頁(yè)面中的intent scheme url調(diào)起瀏覽器的任意activity,包括私有的activity,通過(guò)如下攻擊代碼可以獲取到Opera瀏覽器的cookie: 

 

"com.admarvel.android.ads.AdMarvelActivity"是Opera瀏覽器的私有組件,"url=file:///data/data/com.opera.browser/app_opera/cookies"是Opera瀏覽器cookie文件的存放位置。 

Chrome for Android UXSS (Universal XSS)

Chrome的UXSS漏洞利用相對(duì)復(fù)雜,這里先介紹一下Intent Selector。Intent Selector機(jī)制提供一種main intent不匹配的情況下可以設(shè)置替補(bǔ)的方案。如下的intent scheme url: 

 

其中“SEL”是selector intent的標(biāo)識(shí)。 

在chrome中包含以下代碼:

1:Intent intent = Intent.parseUri(uri);

2:intent.addCategory("android.intent.category.BROWSABLE");

3:intent.setComponent(null);

4:context.startActivityIfNeeded(intent, -1);

第二行添加了BROWSABLE category(目標(biāo)Activity允許本身通過(guò) Web 瀏覽器啟動(dòng),以顯示鏈接引用的數(shù)據(jù),以此過(guò)濾/防止一些不該被調(diào)起的組件被調(diào)起),第三行將組建設(shè)置為null,用以抵御intent-based攻擊,但如果使用selector intent可以完美的bypass以上限制。

以下是android chrome上的一個(gè)UXSS攻擊的POC: 

 

 

 

Old stock browser cookie theft

Android stock browser (com.android.browser)的問(wèn)題類似于android chrome,同樣是在step2中對(duì)intent的過(guò)濾問(wèn)題,最終攻擊者可以盜取瀏覽器的cookie。此漏洞可能只存在于Android 4.3以下的設(shè)備,之后的版本中不一定預(yù)裝stock browser。

0X05 總結(jié)

有效抵御intent scheme url攻擊的方法主要是在step2中對(duì)intent做嚴(yán)格的安全限制:

  1. // convert intent scheme URL to intent object 
  2. Intent intent = Intent.parseUri(uri); 
  3. // forbid launching activities without BROWSABLE category 
  4. intent.addCategory("android.intent.category.BROWSABLE"); 
  5. // forbid explicit call 
  6. intent.setComponent(null); 
  7. // forbid intent with selector intent 
  8. intent.setSelector(null); 
  9.  // start the activity by the intent 
  10. context.startActivityIfNeeded(intent, -1);  

0X06 參考

http://www.mbsd.jp/Whitepaper...

騰訊御安全為開(kāi)發(fā)者推出了安全保護(hù)服務(wù),其中包括漏洞掃描、應(yīng)用加固、SO加固等,能夠幫助企業(yè)軟件發(fā)現(xiàn)潛在漏洞風(fēng)險(xiǎn)、防逆向、防篡改、防二次打包。有需求的團(tuán)隊(duì)可以登錄御安全官網(wǎng)試用。

(騰訊御安全原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)源)

責(zé)任編輯:龐桂玉 來(lái)源: segmentfault
相關(guān)推薦

2010-09-08 16:56:17

2017-05-16 14:25:28

2016-09-27 22:45:47

2020-11-05 10:39:19

安全技術(shù)

2016-10-24 14:23:14

2009-10-28 14:40:01

2012-06-01 11:02:33

2021-04-27 10:00:27

網(wǎng)絡(luò)安全WebURL

2012-07-23 13:22:42

Intent Filt安全Android

2014-07-15 10:16:02

AndroidIntent

2013-01-28 16:44:50

2023-04-04 07:06:21

2018-10-11 15:20:02

2018-10-12 15:50:02

2017-06-14 16:08:31

2016-06-13 15:53:34

SDN開(kāi)放網(wǎng)絡(luò)操作系統(tǒng)ONOS

2023-04-02 09:40:29

2009-04-03 08:26:02

2011-07-27 15:26:10

iPhone URL Scheme 進(jìn)程

2010-08-18 10:13:55

IntentAndroid
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)