iOS應用自動撥打電話,開啟攝像頭缺陷

wyzsk發表於2020-08-19
作者: Ano_Tom · 2014/08/27 16:41

0x00 背景


國外一安全研究者發現該缺陷,在iOS裝置上的某些應用裡(其測試的Google+、Facebook Messenger、Gmail都成功觸發),當使用者點選了構造好的連結時,會自動撥打電話,或開啟facetime,從而開啟前置攝像頭,且無任何提醒。缺陷產生的原因是開發者沒有看清官方開發文件對於Phone Links和FaceTime Links中這樣的一條說明,“當使用者在本地應用裡開啟該型別的連結時,iOS並不展示提醒視窗",從而導致缺陷的產生。

0x01 缺陷描述


檢視蘋果官方文件,對於URL方案的規定大致有如下幾種型別:

1)Mail Links(傳送郵件)

點選該型別的連結後,會自動呼叫郵件應用,且mailto URL必須指定一個收件地址。

網頁連結中的字串格式如下

<a href="mailto:[email protected]">John Frank</a>

本地應用上的URL字串格式為

mailto:[email protected]

當然也可以在字串中新增主題等內容,比如

mailto:[email protected][email protected]&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!

具體的mailto格式可以檢視RFC文件

http://www.ietf.org/rfc/rfc2368.txt

2)Phone Links(撥打電話)

tel型別的URL是用來開啟iOS裝置上撥打電話的應用,並且撥打指定的號碼。當使用者在網頁中點選了一個該型別的連結時,iOS裝置會彈出提醒視窗,詢問使用者是否撥打該號碼,若使用者同意則開始撥打電話。但是當使用者在本地應用裡開啟該型別的連結時,iOS並不展示提醒視窗,而是直接撥打指定的電話。當然本地應用可以配置是否顯示提醒。

比如在網頁中嵌入一個a標籤,內容為

<a href="tel:10086">fuck it</a>

那麼訪問該頁面,點選fuck it連結後自動彈出撥打電話的提醒。如圖1

2014082711012276720.png

官方文件同時給出了本地應用裡的url形式,本地應用中URL字串為tel:1-408-555-5555

在簡訊頁面輸入tel://10086點選後會提示撥打電話,如圖2

2014082711020263770.png

同時防止惡意的請求,連結裡包含* #字元時,系統並不會撥打該號碼。而且iOS上的電話號碼的識別檢測是預設開啟的,如果想讓網頁上包含的數字不被識別為手機號碼,則需要在網頁中加入如下的標籤

<meta name = "format-detection" content = "telephone=no">

具體的URL方案可以檢視如下RFC文件,

http://www.ietf.org/rfc/rfc2396.txt http://www.ietf.org/rfc/rfc2806.txt

3)FaceTime Links(開啟facetime,開啟前置攝像頭)

FaceTime型別的URL是用來呼叫FaceTime應用撥打指定的使用者,可以是電話號碼或者是繫結的郵箱地址。當使用者在網頁裡點開FaceTime型別的URL時,系統會提示是否撥打;但是當在本地應用裡點選該型別的URL時,iOS直接開啟FaceTime應用撥打電話,而無提醒。本地應用可以配置是否顯示提醒。 網頁中的連結格式為

<a href="facetime:14085551234">Connect using FaceTime</a>
<a href="facetime:[email protected]">Connect using FaceTime</a>

本地應用中URL字串為

facetime:// 14085551234
facetime:[email protected]

當然防止惡意請求,連結裡包含* #字元時,系統並不會撥打該號碼。而且iOS7之前的系統,用該協議撥打電話時候,是用的預設普通的撥打電話的應用而不是FaceTime應用

4)SMS Links(傳送簡訊)

SMS方案是用來開啟簡訊應用,其URL格式如下sms:

相關文章