銀聯(lián)江西
文章作者@蒸米spark是來自香港中文大學的博士生,他為了證明這一漏洞,制作了用URLScheme設計漏洞劫持微信/支付寶賬號密碼的Demo。作者聲明該漏洞是iOS系統(tǒng)漏洞,和支付寶、微信App無關(guān),只是拿支付寶和微信作為演示漏洞的應用,其他應用同樣可以中招,轉(zhuǎn)發(fā)者請勿斷章取義。
首先來看 demo: 在未越獄的 iPhone6(iOS 8.2)上盜取支付寶賬號密碼
原理:
在 iOS 上,一個應用可以將其自身”綁定”到一個自定義 URL Scheme 上,該 scheme 用于 從瀏覽器或其他應用中啟動該應用。這個設計非常類似于 android 上的 broadcast 和 broadcast receiver,但遠遠沒有 android 上的復雜。美團利用支付寶付款的整個過程如圖一所示:美團 首先將訂單信息通過 URL Scheme 發(fā)送給 Alipay,Alipay 收到訂單信息,調(diào)用支付界面,用戶 在 Alipay 上完成支付后,Alipay 再發(fā)送一個 URL Scheme 給美團,美團收到付款信息后,顯 示團購成功的界面。
圖一、正常支付流程
但因為 URL scheme 這個機制太簡單了,完全沒有考慮有多個 app 聲明同一個 URL Scheme 的情況,也沒有權(quán)限管理之類的方案。在 iOS 官方說明中:“在多個應用程序注冊了同一種 URLScheme 的時候,iOS 系統(tǒng)程序的優(yōu)先級高于第三方開發(fā)程序。但是如果一種URLScheme 的注冊應用程序都是第三方開發(fā)的,那么這些程序的優(yōu)先級關(guān)系是不確定的?!睂嶋H上,經(jīng) 過我們的測試,這個順序是和 Bundle ID 有關(guān)的,如果精心構(gòu)造 Bundle ID,iOS 總是會調(diào)用 我們 app 的 URL Scheme 去接收相應的 URL Scheme 請求。那么問題來了,如果我們精心構(gòu) 造一個 app 并聲明“alipay”這個 URL Scheme 會怎么樣呢?
結(jié)果就如 demo 中所演示的那樣,后安裝的 FakeAlipay 應用劫持了美團與支付寶之間的支付 流程,并且可以在用戶毫無意識情況下獲取用戶的賬號,支付密碼,以及幫用戶完成支付。 整個過程如圖二所示:FakeAlipay 在收到美團發(fā)來的訂單信息后,構(gòu)造了一個和支付寶一樣 的登陸界面,用戶在輸入了賬號密碼后,FakeAlipay 會把賬號密碼以及訂單信息發(fā)送到黑客 的服務器上,黑客在獲得了這些信息后,可以在自己的 iOS 設備上完成支付,并把支付成功 的 URL Scheme 信息發(fā)回給 FakeAlipay,FakeAlipay 再把支付成功的 URL Scheme 信息轉(zhuǎn)發(fā)給 美團。因為時間原因,demo 做得比較粗糙,沒有做轉(zhuǎn)發(fā)信息給美團這一部分的演示,但絕 對是可行的。
圖二、劫持后的支付流程
這種攻擊可以成功的原因除了 iOS 本身的漏洞外,支付寶也有一定的責任。那就是發(fā)給支付 寶的訂單信息并不是綁定當前設備的。因為這個原因,黑客可以在其他的 iOS 設備上完成支 付。 同樣是因為不綁定當前設備的問題,黑客甚至可以先在自己的設備上生成好訂單,然 后在用戶打開支付寶支付的時候把訂單替換掉,讓用戶給黑客的訂單買單。
0x03 DEMO 細節(jié)分析(微信)
基本上和支付寶一樣,不過支付時只需要提供 6 位支付密碼,如 果想要得到微信賬號密碼的話,還需要構(gòu)造一個假的登陸界面。當然了,你可能會說有短信 驗證,但是如果整個登錄界面都是偽造的話,用戶也會乖乖的幫你輸入短信驗證碼的。并且, 在 iOS 8.1 之前,iOS 的短信也存在監(jiān)控漏洞,具體請參考我們 ASIACCS 的論文。
作者建議:
作者在文章中表示該漏洞利用簡單,修復卻非常復雜,所以在iOS8.2上還是未能修復。但他還是提出了幾點建議讓開發(fā)者參考:
1.蘋果可以限制iOS應用不能注冊別的應用的BundleID作為URLScheme。這樣的話,使用自己的BundleID作為URLScheme的接收器就會變的安全很多。
2.第三方應用可以通過①給自己發(fā)送URLScheme請求來證明沒有被劫持,如果沒有收到自己的URLScheme,就可以及時給用戶發(fā)送提醒;②利用MobileCoreServices服務中的applicationsAvailableForHandlingURLScheme()來檢測所有注冊了該URLSchemes的應用和處理順序,從而檢測自己、或者別人的URLScheme是否被劫持。
具體原文和視頻可以>>跳轉(zhuǎn)閱讀,希望借助這樣的一個漏洞報告能夠讓大家提高警惕,同時讓蘋果做出回應,從系統(tǒng)上解決這一問題。APP開發(fā)商也要從自身考慮引入安全機制,不能完全依賴蘋果
聯(lián)系客服