iOS URL Scheme有可能被惡意劫持

Apple利用iOS沙箱機制來管理應用程式的安全性及隱私問題,這機制會限制每個應用程式能夠存取的資源。可以在應用程式遭入侵時控制影響程度,同時所有經由App Store下載的應用程式都適用。但也因為這樣的存取控制,讓應用程式間的溝通變得更加困難。

幸運的是,Apple有精心設計一些方法來協助應用程式彼此溝通,其中最常見的就是URL Scheme。本質上這是種讓開發者通過URL在iOS設備上啟動應用程式的方式。可以讓應用程式傳遞資訊到另一個應用程式。例如開啟帶有facetime://的URL時會讓FaceTime撥打出去,而這就是URL Scheme發揮作用的地方。這是條非常方便的捷徑;但是URL Scheme是以溝通為出發點來設計,而非安全性。

我們接下來會探討URL Scheme遭到濫用時可能會產生的隱私外洩、帳單詐騙以及彈出廣告等問題。我們會用中國的幾款官方iOS應用程式來說明可以如何被誤用,特別是用通訊及行動支付應用程式微信以及零售應用程式蘇寧易購。有許多其他應用程式也有跟微信及蘇寧易購同樣的功能,所以它們也可能遭受底下所談到的攻擊。我們已經通知了廠商並與之協作(特別是微信),並將這類攻擊回報給零時差計畫(ZDI)。

攻擊如何運作?

iOS允許多款應用程式聲明同一個URL Scheme。例如Sample://可以被兩個完全無關的應用程式用來實作URL Scheme。這也是惡意應用程式能夠利用URL Scheme來侵害使用者的方式。

Apple在之後的iOS版本(iOS 11)解決了這個問題,該版本使用先到先得的原則,並且只有使用URL Scheme的已安裝應用程式會被啟動。但仍可以用不同的方式來利用此漏洞。

URL Scheme會影響帳號隱私

URL Scheme可以做為應用程式從其他應用程式接收資訊的入口。如上所述,因為Apple允許不同的應用程式聲明相同的URL Scheme,惡意應用程式可能有辦法劫持某些應用程式的敏感資訊。當應用程式A的登入程序跟應用程式B連結時,此漏洞就變得特別嚴重。

比方說,蘇寧易購(一款零售應用程式)可以讓受害者用自己的微信帳號登入。正常的身份認證流程(如下所示)是蘇寧易購產生URL Scheme查詢並送給微信應用程式。當微信應用程式從蘇寧易購接收到查詢,它會向微信伺服器請求登入令牌(Login-Token)並將其發送回給蘇寧易購進行身份認證。

Figure.1

圖1. 蘇寧易購使用微信應用程式連結的微信帳號登入

我們的研究發現,蘇寧易購都是用相同的登入請求(Login-Request)URL Scheme查詢來請要求登入令牌(Login-Token),但是微信(WeChat)不會對登入請求來源進行認證。這讓攻擊者能夠將應用程式的登入請求URL Scheme用在惡意用途。

攻擊者可以用蘇寧易購的登入請求URL Scheme查詢來要求受害者微信帳號的登入令牌。接著可以用該令牌來用受害者的微信帳號登入蘇寧易購應用程式(如下圖所示)。這樣可以讓攻擊者收集個人資訊或惡意使用對兩個帳號的存取權限。

Figure.2

圖2. 駭客用受害者的微信帳號登入蘇寧易購應用程式

為了進行上述攻擊,攻擊者要先取得蘇寧易購的登入請求URL Scheme。這需要先用微信的URL Scheme來製作完全獨立的應用程式(微信的URL Scheme可以在蘇寧易購應用程式Info.plist的LSApplicationQueriesSchemes欄位內取得)才能經由蘇寧易購應用程式擷取到。利用正確的微信URL Scheme就可以做出假的微信應用程式,而蘇寧易購應用程式會跟假微信查詢登入令牌。

如果蘇寧易購應用程式送出查詢,則假應用程式可以取得其登入請求URL Scheme。我們分析之後發現,這個登入請求包含了固定的參數,在幾輪查詢之後會重複固定的值,讓攻擊者有機會去回放請求。

Figure.3

圖3. 擷取到從蘇寧易購到微信的登入請求

Figure.4

圖4. 擷取到從微信到蘇寧易購的登入令牌

如圖3和圖4所示,蘇寧易購在查詢內插入獨特而復雜的URL Scheme(wxe386966df7b712ca)來讓微信回應。這特定URL在微信內註冊為蘇寧易購登入。微信可以識別它卻不會驗證登入請求來源。它會直接用登入令牌(Login-Token)來回應請求的來源。

不幸的是,來源可能是惡意使用蘇寧易購URL Scheme的惡意應用程式。

Figure.5

圖5. 惡意應用程式URLSchemeAttack竊取登入令牌(Login-Token

這個登入令牌讓駭客可以存取受害者的微信帳號,進而暴露了個人資訊。被入侵帳號也可能被用在惡意用途。

Figure.6

圖6. 攻擊者的裝置利用偷來的登入令牌登入受害者的微信帳號

此問題並非僅限於這兩個應用程式,此漏洞存在於具有此特定登入功能的多款應用程式。

URL Scheme被惡意地用於帳單釣魚

偽造URL Scheme可以用在多種攻擊方案。另一個例子是帳單回放網路釣魚攻擊,用來誘騙受害者支付別人的帳單。此攻擊會用到社交工程手法以及URL Schemes漏洞。

總的來說,帳單回放釣魚攻擊會向具有支付功能的應用程式發送結帳請求的URL Scheme。我們可以使用連結任何支付應用程式的滴滴同行或美團打車(都是交通應用程式)來說明這種攻擊。

為了重現這種攻擊,我們用微信作為支付應用程式來進行模擬。我們還未見到實際案例的出現,但的確可以用給定參數做到。攻擊者可以用上述的作法:利用正確的URL Scheme來製作假微信應用程式,並且攻擊者可以從滴滴同行或美團打車取得URL Scheme結帳請求。

使用結帳URL Scheme,攻擊者可以向微信應用程式回放結帳請求,並自動呼叫支付介面。因為攻擊者使用竊自滴滴同行或美團打車的正確URL Scheme請求,真正的微信應用程式就會接受付款請求。

Figure.7

圖7. 證明能夠回放URL Scheme請求

不可否認地,一般使用者不大可能會被騙,因為不太會對隨機跳出的微信付款介面同意結帳請求。但此功能大大地增加詐騙的可能性。使用者可能在心不在焉下點了付款按鈕,或可能認為這是筆真實的付款請求。

還有另一種可能的攻擊方式會使用簡訊社交工程以及URL Scheme。這裏以相同的應用程式作示範,這類攻擊也是利用了結帳流程。

使用滴滴同行或美團打車的人會定期收到簡訊來提醒未付帳單。攻擊者可以用包含結帳請求的URL Scheme連結來發送相同簡訊給受害者 – 這結帳請求可以是來自攻擊者的任何請求。此連結會被導向微信支付介面並要求受害者付款。這是操縱並誘騙受害者支付不屬於他們帳單的簡單作法。

Figure.8

圖8. 來自簡訊的帳單回放釣魚攻擊

還好的是,最新版本的微信應用程式有個新安全策略來防止這類結帳回放攻擊:微信將不接受行動版Safari傳送來的結帳請求。但如果結帳請求是由Chrome、Message、Gmail等應用程式啟動,則攻擊仍然可行。

URL Scheme被用在彈出廣告

URL Scheme的另一個問題是可以用來啟動應用程式。這意味著一旦惡意應用程式註冊了某個URL Scheme,就可能在呼叫URL Scheme時啟動惡意應用程式。根據我們的研究,我們系統審核的大量應用程式被發現會利用此功能向受害者派送廣告。

潛在惡意應用程式會故意聲明與流行應用程式關聯的URL Scheme:wechat://、line://、fb://、fb-messenger://等。我們發現了一些此類惡意應用程式:

SHA256 Bound ID 應用程式所聲明的URL Scheme數量
1377742266f2a56f0424c1884c9c1fab8daa113b51c7f4d2ac4b2f88b770a1f5 co.Mu.Mu 490
c329fc984a2d75e4f1f15288cb5d9383c2f439dbae67bf808759bc5bc8336aee co.medaistream.pokemap2 430
93326edbbd8863fbb0d2e602e1d8a7348349053ae144912286e78fb17a685c0f co.musical.Musical 491
fe8fe4226ba17924cd31505a07b19691b5eecf2e9ae677bc9765130020662b89 com.musictechnology.Musia 491

解決方案

URL Scheme可能很危險,所以不建議用來傳輸敏感資訊。因為如果不管來源目標如何都會傳輸通訊和資料,攻擊者就可以利用這樣無驗證的功能。

受影響廠商分別在2018年6月和8月漏洞首次被發現時收到通知,趨勢科技注意到許多有漏洞的應用程式都是中國 App Store的熱門下載。Apple已經知道了此種威脅;他們已經通知開發人員URL Schemes的危險性並提供了建議。他們明確指出:「URL Scheme為你的應用程式帶來了潛在攻擊媒介,因此請確保驗證所有網址參數並拋棄任何格式錯誤的網址。此外,將可用操作限制成不會對使用者資料帶來危險的操作。」

對開發者來說,通常會建議使用通用連結作為深層連結的最佳實作。設定通用連結(HTTP或HTTPS)登入介面,並用隨機識別碼在本地端驗證收到的登入令牌,這可防止惡意劫持和登入令牌回放。

此外,趨勢科技會偵測可能利用此功能的潛在惡意應用程式。我們的漏洞掃描系統能夠識別可能濫用URL Scheme的惡意應用程式。趨勢科技的XGen安全防護技術安全防護技術提供了高保真機器學習功能來防護閘道 和端點,並且保護實體、虛擬和雲端的工作環境。使用網頁/網址過濾、行為分析和客製化沙箱等功能,XGen安全防護技術可以抵禦不斷進化來繞過傳統安全控制和針對已知或未知漏洞的攻擊。XGen安全防護技術驅動著趨勢科技一系列的安全解決方案:Hybrid Cloud Security(混合雲防護)User Protection (使用者防護),Network Defense(網路防護)

@原文出處:iOS URL Scheme Susceptible to Hijacking 作者:Lilang Wu、Yuchen Zhou和Moony Li(趨勢科技