ZipperDown漏洞細節披露,盤古實驗室教你快速檢測
ZipperDown漏洞背景介紹
盤古實驗室在2017年里多次承接來自不同客戶的iOS App審計業務。除常規安全掃描外,實驗室研究員對所審計的iOS App進行深入分析,研究各種潛在攻擊面,挖掘了多種安全漏洞和潛在風險。
Zip文件解壓縮過程中,由文件名和符號鏈接等引起的路徑穿越進而導致文件覆蓋是一類非常經典的安全問題,大量Unzip軟體都曾被發現這類安全漏洞。鑒於此,對所審計的iOS App中存在Zip文件處理的,我們都通過人工分析確認是否存在風險。基於盤古實驗室研究人員豐富的安全經驗,我們在多個iOS App中發現了解壓縮過程中存在路徑穿越問題。
最初,我們僅以為這是一些個別案例。然而,隨著被審計的iOS App數目不斷增長,我們吃驚地發現,Zip文件解壓縮過程中路徑穿越問題普遍存在於不同客戶的不同類別的App中!從個別案例到普遍存在,我們開始反思,為什麼iOS應用中一個如此典型的安全漏洞如此普遍?
經過仔細分析,我們確認這些受影響的iOS應用大多重用了SSZipArchive和ZipArchive兩個開源庫。這兩個開源庫,都提供了將Zip文件中的內容解壓縮到一個含有相對路徑的目錄中的特性。我們不由得面對接下來的一個問題,到底多少iOS應用使用了這兩個開源庫?
幸運地是,與此同時公司另外一個項目Janus 移動安全威脅數據平台(appscan.io)上已經收錄了168,951個iOS App。因此,我們創建了SSZipArchive和ZipArchive庫特徵,在Janus平台上進行匹配檢索,最終發現15,979個iOS App使用了這兩個庫!在這些iOS App中,不乏各種超級流行應用。我們對這個龐大的疑似受影響列表進行了抽檢,結果更令人不安,微博、陌陌、快手、網易雲音樂、QQ音樂等確實受影響。
這時候,我們意識到另外一個更加棘手問題:這個漏洞如何披露?首先,面對如此大的疑似受影響列表,我們顯然無法逐一確認。其次,本著負責任披露的原則,即便我們通知給庫的開發方、已確認受影響的App開發方,如何更好的保護那些在疑似列表上的App用戶?
再三斟酌後,我們發布了zipperdown.org 站點,將這類問題稱作ZipperDown,暫時沒有公開漏洞細節,而是通過公開疑似受影響列表的方式,期望與App開發者一起來協同修復這個問題。zipperdown.org發布後,我們收到了283封詢問郵件,在確認發信人身份後,我們共回復260份郵件分享了漏洞細節。
疑似列表公開後,我們承受了很大壓力。疑似列表給很多未真正受影響的App帶了很多困擾,我們為此表示深深歉意。但是我們仍然認為,對這兩個庫的使用是潛在的風險點,希望開發者能夠結合自身業務場景徹底杜絕該類問題。更為重要的是,我們想傳達的信息是,開發者應該重新審計自己App中對Zip文件的處理,即便沒有使用這兩個開源庫,也要確保杜絕路徑穿越等經典安全問題。
我們在Android平台上發現了類似問題。其他安全研究人員也在多個流行應用中披漏了不同形態的路徑穿越漏洞(」 General ways to find and exploit Path Traversal Vulnerabilities onAndroid APPs」, Xiaobo Xiang, DefCon China, 2018.)。請訪問zipperdown.appscan.io,查詢您的Android App是否存在類似問題。
ZipperDown漏洞詳情
SSZipArchive和ZipArchive解壓縮過程中沒有考慮到文件名中包含」../」的情況,造成了文件釋放過程中路徑穿越,導致惡意Zip文件可以在App沙盒範圍內,覆蓋任意可寫文件。具體代碼如下:
ZipArchive相關代碼:
SSZipArchive相關代碼:
ZipperDown漏洞攻擊場景
iOS平台下漏洞攻擊場景
基於漏洞原理,漏洞利用條件的核心即如何使目標App解壓不可信Zip文件。因為App業務差異大,我們僅列舉部分常見場景。
1. App直接接收不可信Zip文件,並使用SSZipArchive/ZipArchive(或其它存在路徑穿越問題的代碼)解壓。例如聊天應用、文件管理應用中可能存在這類業務場景。
2. App通過HTTP下載Zip文件,使用SSZipArchive/ZipArchive(或其它存在路徑穿越問題的代碼)解壓。在這種場景下,攻擊者可以通過流量劫持等途徑,將正常Zip文件替換為惡意Zip文件,在App中實現文件覆蓋。
此外,文件覆蓋的後繼攻擊依賴於具體App環境。在使用熱補丁的App中,可能存在補丁文件被覆蓋,進而導致惡意補丁文件載入執行的情況。即使沒有使用熱補丁,惡意Zip文件也可能覆蓋核心數據文件,觸發App解析這些核心數據中的邏輯錯誤或編碼錯誤等問題。由於iOS沙盒保護,ZipperDown的破壞範圍僅限在App環境中。
Android平台下漏洞攻擊場景
相比iOS下的ZipperDown,安卓平台下的ZipperDown漏洞更直觀、更容易理解,且破壞力也更大。安卓平台下的ZipperDown漏洞在利用場景上與iOS的有一些不同,主要區別在於:
1. 系統沙盒的策略不同。iOS應用中,所有可執行代碼都必須簽名,且可執行代碼存儲在隨機目錄中。在這種情況下,外部很難預測可執行代碼的路徑,而且,即使能成功預測並覆蓋,可執行代碼也無法載入。而安卓平台不同,在安卓平台下,應用代碼的存儲路徑是固定的,且可以修改的,除此之外,可以利用應用自身的各種機制來載入外部代碼,這給了安卓下的ZipperDown更大的破壞力。
2. 數據傳輸的策略不同。蘋果已經強制所有應用使用HTTPS協議傳輸數據,雖然本次ZipperDown事件暴露出來的問題出乎意料,但蘋果至少已經在這方面做出了一些努力。而安卓下卻沒有這方面的明確的規定,這也導致安卓下的問題更嚴重。
3. 導致ZipperDown的庫不同。在iOS中,ZipperDown漏洞主要是在使用SSZipArchive和ZipArchive這兩個第三方庫時引入的。而安卓平台下,系統的framework就提供這個功能,且同樣不帶不安全zip文件的檢測功能。雖然安卓平台下也存在一些第三方庫,如https://github.com/zeroturnaround/zt-zip,但janus上的查詢顯示,這類第三方庫的用量並不是很大https://www.appscan.io/search-app.html#type=app&q=strings:&page=1&hidecount=true&val=strings:%22Failed%20to%20process%20zip%20entry%22。
目前,針對安卓應用的ZipperDown漏洞,Janus已經提供了線上檢測功能。通過訪問www.appscan.io即可對應用進行檢測。與iOS應用類似,我們目前無法對ZipperDown漏洞進行全自動的檢測,對疑似問題,我們建議開發者使用Janus的深度檢查功能來自行確認應用邏輯。
修復方案
鑒於疑似受影響App業務場景的複雜性,我們建議以下修復方案,供各方參考。
·修復開源庫,充分考慮文件名中「../」和符號鏈接等情況,確保解壓縮過程中不會出現路徑穿越問題。參考補丁實現:
https://github.com/ZipArchive/ZipArchive/pull/454/commits/a431f782569c7dacbf58d2b72b0b80e71d2c81fe
·重新審計Zip文件來源,避免處理不可信Zip文件。例如,嚴格使用https下載Zip文件,或者對下載的Zip文件進行安全校驗防止篡改。
關於犇眾
上海犇眾信息技術有限公司是以國際頂級安全團隊盤古為核心的自主創新型企業,在操作系統安全性研究、程序自動化分析、漏洞挖掘與攻防等研究領域有雄厚基礎。公司創立於2014年,致力於移動互聯網安全技術研究和產品研發、為企業及個人用戶提供專業的安全服務和解決方案。
基於盤古團隊的安全研究成果,公司在移動終端APP漏洞檢測與風險評估,惡意APP檢測與分析、移動設備取證、移動設備APT檢測與對抗等領域開發了多款產品。
犇眾信息是國家互聯網應急中心 — CNCERT網路安全應急服務支撐單位,是中國信息安全測評中心 — CNNVD技術支撐單位。犇眾信息憑藉強勁的技術實力,逐漸得到客戶及合作夥伴的認可。
公司以讓每一台智能移動終端更安全為使命,基於豐富的系統攻防之道,鑄造堅實的移動設備安全和數據隱私保障之盾。同時公司秉承技術分享理念,為促進信息安全社區的整體發展和技術提升積極貢獻力量。


※蘋果秘密在Santa Clara的實驗室進行研究,未來或將取代三星
※做個實驗看百諾恩、米菲、凱爾得樂等十四款熱門紙尿褲的品質如何
TAG:實驗 |