黑雲壓城城欲摧 - 2016年iOS公開可利用漏洞總結

来源:http://www.cnblogs.com/alisecurity/archive/2016/12/27/6226157.html
-Advertisement-
Play Games

本報告總結了2016年比較嚴重的iOS漏洞(可用於遠程代碼執行或越獄),希望能夠對大家移動安全方面的工作和研究帶來一些幫助。 ...


黑雲壓城城欲摧 - 2016年iOS公開可利用漏洞總結

作者:蒸米,耀刺,黑雪 @ Team OverSky

 

 

0x00 序

iOS的安全性遠比大家的想象中脆弱,除了沒有公開的漏洞以外,還有很多已經公開並且可被利用的漏洞,本報告總結了2016年比較嚴重的iOS漏洞(可用於遠程代碼執行或越獄),希望能夠對大家移動安全方面的工作和研究帶來一些幫助。

 

0x01 iOS 10.1.1 公開的可利用漏洞

1. mach_portal攻擊鏈:該攻擊鏈是由Google Project Zero的Ian Beer公佈的。整個攻擊鏈由三個漏洞組成:損壞的內核port的uref可導致任意進程的port被越權替換(CVE-2016-7637),powerd任意port替換可導致DoS(CVE-2016-7661),因為set_dp_control_port沒有上鎖導致的XNU內核UaF(CVE-2016-7644)。

攻擊者先使用CVE-2016-7637將launchd與”com.apple.iohideventsystem”系統服務具有發送許可權的port替換成自己控制的進程的port,並攻擊者還具有該port的接收許可權。然後,攻擊者利用CVE-2016-7661對powerd這個進程進行DoS,使其重啟。在啟動過程中,因為powerd的啟動需要用到”com.apple.iohideventsystem”系統服務,於是將task port發送給了這個系統服務。但因為攻擊者利用之前的CVE-2016-7637漏洞獲取了”com.apple.iohideventsystem”系統服務port的接收許可權,因此攻擊者獲得了powerd的task port,從而控制了具有root許可權並且在沙盒外的powerd進程。攻擊者隨後利用powerd進程的task port獲取到了host_priv port,然後利用host_priv port觸發因set_dp_control_port沒有上鎖而導致的XNU內核UaF(CVE-2016-7644)漏洞,從而控制了kernel task port。攻擊者在獲取了kernel task以後,就可以利用系統提供的mach_vm_read()和mach_vm_write()去進行任意內核讀寫了。

2016年12月22日,qwertyoruiop在Ian Beer公佈的mach_portal攻擊鏈的基礎上,加入了KPP的繞過、內核patch和cydia的安裝,併在自己的twitter上發佈了iOS 10.1.*的越獄。

 

0x02 iOS 9.3.4 公開的可利用漏洞

1. PEGASUS 三叉戟攻擊鏈:該攻擊鏈是在對阿聯酋的一位人權活動家進行apt攻擊的時候被髮現。整個攻擊鏈由三個漏洞組成:JSC遠程代碼執行(CVE-2016-4657),內核信息泄露(CVE-2016-4655),內核UAF代碼執行(CVE-2016-4656)。

在瀏覽器漏洞方面,由於iOS系統的JavaScriptCore庫的MarkedArgumentBuffer類在垃圾回收的時候可能會造成記憶體堆破壞,導致黑客可以使用該漏洞泄露對象地址以及執行任意指令。在內核漏洞方面,由於XNU內核的OSUnserializeBinary()函數在反序列化用戶態傳入的數據時沒有對OSNumber的長度進行校驗,導致可以泄露內核的棧信息。利用精心構造的OSString對象,還可以觸發UAF漏洞並導致內核代碼執行(具體的分析可以參考我們之前的文章:基於PEGASUS的OS X 10.11.6本地提權:https://jaq.alibaba.com/community/art/show?articleid=531)。利用該攻擊鏈可以做到iOS上的遠程完美越獄,可以說是近幾年來影響最大的iOS漏洞之一了。並且在未來,極有可能出現利用該漏洞的iOS大面積掛馬事件。

 

0x03 iOS 9.3.3 公開的可利用漏洞

1. IOMobileFramebuffer Heapoverflow 內核漏洞: 該漏洞存在於IOMobileFramebuffer這個內核服務中。在IOMobileFramebuffer::swap_submit(IOMFBSwap *)這個函數中,因為沒有對用戶態傳入的IOMFBSwap數據進行校驗,從而導致內核堆溢出。利用該漏洞可以在沙盒內(不需要沙盒逃逸)直接對內核進行攻擊,並完成非完美越獄。該漏洞在iOS 9.3.3盤古越獄(女媧石)中被使用。

 

0x04 iOS 9.3.2 公開的可利用漏洞

1. WebKit RCE heapPopMin 遠程代碼執行漏洞: 因為Webkit模塊中的WebCore ::TimerBase::heapPopMin()存在記憶體破壞漏洞,利用該漏洞可以對iOS設備進行遠程攻擊。當用mobile safari瀏覽有惡意攻擊代碼的網頁的時候,safari將會被黑客控制。但要註意的事,被控制的僅僅是safari,想要獲取用戶數據還需要進行沙盒逃逸,想要控制手機還需要對內核進行攻擊。另外,因為webkit不光存在於iOS中,因此該漏洞還被用於PS4,Kindle等設備的越獄。

2. GasGauge 條件競爭內核漏洞: 該漏洞存在於GasGauge這個內核服務中,因為在free記憶體的時候沒有進行加鎖操作,黑客可以開多個線程進行free操作,當競爭成功的時候可以造成double free的漏洞,隨後可以轉化為任意zone的UAF並控制內核,並完成非完美越獄。需要註意的是,該內核服務並不能在沙盒內直接訪問,所以想要利用該漏洞,需要先做到沙盒逃逸。

 

0x05 iOS 9.3.1 公開的可利用漏洞

 

1. inpuTbag Heapoverflow 內核漏洞: 該漏洞是阿裡移動安全的OverSky團隊發現並公佈的,該漏洞存在於IOHIDDevice這個內核服務中,因為沒有對Input report的szie做檢測從而造成內核堆溢出。利用該漏洞可以對內核進行攻擊,並完成非完美越獄。需要註意的是,該內核服務需要在沙盒外並擁有"com.apple.hid.manager.user-access-device"這個entilement才能訪問,所以想要利用該漏洞,需要先做到沙盒逃逸,然後繞過entilement的檢測才能利用。

 

0x06 iOS 9.1 公開的可利用漏洞

1. CVE-2015-7037 Photos 沙盒逃逸漏洞: 該漏洞存在於com.apple.PersistentURLTranslator.Gatekeeper這個系統服務中,在盤古越獄中被使用,通過利用改漏洞,一個在沙盒內的app可以做到mobile許可權的沙盒外任意文件讀寫,配合dyld的漏洞可以做到沙盒外的任意代碼執行。

2. CVE-2015-7084 IORegistryIterator 內核漏洞: 該內核漏洞存在於IOKit中,因為IORegistryIterator對象沒有線程互斥的保護,導致對成員進行操作的時候可能出現錯誤。該漏洞可以在沙盒內直接通過race condition觸發, 隨後轉化為內核信息泄露以及內核的代碼執行,並做到非完美越獄。

 

0x07 iOS 9.0 公開的可利用漏洞

1. CVE-2015-6974 IOHIDFamily 內核漏洞:該漏洞存在於IOHIDResource這個內核服務中,在terminateDevice後,系統沒有將device設置為NULL, 從而造成UAF漏洞。該漏洞在盤古iOS 9.0越獄中被使用,利用該漏洞可以做到內核的任意讀寫,並完成非完美越獄。需要註意的是,該內核服務並不能在沙盒內直接訪問,所以想要利用該漏洞,需要先做到沙盒逃逸。

 

0x08 總結

可以看到2016年的公開可利用的漏洞數量是非常巨大的,相對2015年可以說是有了一個指數級的增長。雖然蘋果更新系統的速度非常快並且無法降級,但隨著老設備(iPhone 4s及以下已無法升級iOS 10)越來越多,並且用戶對新系統期望越來越低,iOS設備的更新率已經變得非常緩慢。

 

根據某專業移動分析平臺2016年12月的數據可以看到,僅有3.28%的設備更新了最新版的iOS 10.2。這意味著96.72%的設備都有被最近剛發佈的mach_portal漏洞攻擊的風險。我們相信,在新的一年,iOS的漏洞數量還會持續增加,並且隨著漏洞利用技術的公開,黑灰產也極有可能利用漏洞對用戶進行攻擊,希望廣大用戶一定要註意自己iOS設備的安全。

最後,對本文提到的漏洞感興趣的同學可以在我們的github上學習相關的資料:https://github.com/zhengmin1989/GreatiOSJailbreakMaterial

 

更多阿裡安全類技術文章及報告,請訪問阿裡聚安全博客


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.數字number與字元串string相加的就,最後會得到一個字元串string:'1'+3='13' 2.數字number與字元串string相減,最後會得到一個數字number:'1'-0=1,'s'-0=NaN 3.數字number與字元串string相乘:最後會得到一個數字number:' ...
  • sessionStorage 和 localStorage html5中web storage包括兩種儲存方式:sessionStorage 和 localStorage sessionStorage用於本地存儲一個會話(session)中的數據,這些數據只有在同一個會話 中的頁面才能訪問並且當會話 ...
  • C的回調函數: callBack.h 1)、聲明一個doSomeThingCount函數,參數為一個(無返回值,1個int參數的)函數。 callBack.c 1)、在doSomeThingCount函數,對運行次數自增,並調用參數--函數。 main.c 1)、定義一個customdoSomeTh ...
  • 學了OC的block,再寫C的回調函數有點彆扭,對比下區別,回憶記錄下。 C的回調函數: callBack.h 1)、定義一個回調函數的參數數量、類型。 2)、聲明一個外部函數指針。 3)、聲明一個doSomeThingCount函數 callBack.c 1)、定義一個函數指針 2、在doSome ...
  • 1.activity_main.xml 2.MainActivity.class package com.example.administrator.myfirst; import android.os.Bundle; import android.support.v7.app.AppCompatA ...
  • #Fragment* 用途:在一個Activity里切換界面,切換界面時只切換Fragment裡面的內容* 生命周期方法跟Activity一致,可以理解把其為就是一個Activity* 定義佈局文件作為Fragment的顯示內容 結果: 點擊左邊的三個按鈕,右邊顯示相應的顏色。 ###生命周期* f ...
  • 由[OpenDigg](http://www.opendigg.com/) 出品的安卓開源項目周報第三期來啦。我們的安卓開源周報集合了OpenDigg一周來新收錄的優質的安卓開發方面的開源項目,方便安卓開發人員便捷的找到自己需要的項目工具等。 ...
  • 一、文件進行IPC介紹 共用文件也是一種不錯的進程間通信方式,兩個進程通過讀/寫同一個文件來交換數據。在Windows上,一個文件如果被加了排斥鎖將會導致其他線程無法對其進行訪問,包括讀寫,而由於Android系統基於Linux,使其併發讀/寫文件可以沒有限制地進行,甚至兩個線程同時對同一個文件進行 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...