日前,一則關(guān)于的iOS網(wǎng)絡(luò)通信庫AFNetworking曝安全漏洞影響2.5萬iOS應(yīng)用的消息鋪天蓋地而來,有1000多種應(yīng)用程序被指稱,由于SSL存在Bug,導(dǎo)致這些應(yīng)用程序容易遭到攻擊。對此,由Mattt Thompson一手創(chuàng)立的Alamofire Software Foundation在GitHub上對于AFNetworking曝SSL漏洞引發(fā)的眾多擔(dān)憂進(jìn)行了回應(yīng),以下為全文:
就此事,對于不熟悉AFNetworking的人,這里有一些與其相關(guān)的細(xì)節(jié)需要了解:
AFNetworking是一個(gè)第三方開源庫,置于蘋果內(nèi)置框架之上,允許開發(fā)者向iOS和OS X應(yīng)用添加網(wǎng)絡(luò)功能。
AFSecurityPolicy是AFNetworking的組件之一,可根據(jù)應(yīng)用程序設(shè)置的規(guī)則處理驗(yàn)證挑戰(zhàn)(authentication challenge),包括通過HTTPS連接時(shí),對服務(wù)端返回的X.509證書的評估。
證書鎖定(certificate pinning)是一項(xiàng)信息安全技術(shù),它在標(biāo)準(zhǔn)TLS評估的基礎(chǔ)上做了改進(jìn),通過服務(wù)器顯式地發(fā)送證書來匹配包含在客戶端的憑證(credentials)。AFNetworking從版本1.2.0開始一直提供證書鎖定技術(shù)。
中間人攻擊(Man-in-the-Middle Attack, MitM)是在客戶端和服務(wù)器之間插入攻擊者本身,使兩邊都認(rèn)為自己和對方在直接通信。
這樣的一種攻擊方式在客戶端和服務(wù)器之間會涉及某個(gè)不可信的Wi-Fi接入點(diǎn)。沒有對響應(yīng)進(jìn)行恰當(dāng)?shù)仳?yàn)證,攻擊者就可以攔截通訊信息,用戶憑證或其他敏感信息因而會遭到泄露。
AFNetworking官方文檔強(qiáng)烈建議應(yīng)用程序要通過HTTPS進(jìn)行通信,并且使用證書或公鑰鎖定技術(shù)來弱化MitM這種攻擊行為。工程中所包含的示例代碼遵循了這些建議,在應(yīng)用程序中展示了證書鎖定的使用方式。
2015年2月12日,AFNetworking 2.5.1發(fā)布。這一版本包含了一個(gè)補(bǔ)丁,修改了證書的安全策略驗(yàn)證方式,將SSLPinningMode修改為AFSSLPinningModeNone。驗(yàn)證挑戰(zhàn)過程中,服務(wù)器的證書默認(rèn)是不會被驗(yàn)證的,除非客戶端存在與眾不同的配置行為,比如使用SSL pinning這樣的證書綁定技術(shù)。
2015年3月12日,我們從這個(gè)GitHub Issue開始意識到上述的修改行為所造成的影響。
2015年3月26日,來自Minded Security Research的Simone Bovi和Mauro Gentile發(fā)表了一篇博文,詳細(xì)說明了AFNetworking 2.5.1潛在的MitM方面的漏洞。
同樣在2015年3月26日,AFNetworking 2.5.2發(fā)布。這個(gè)版本恢復(fù)了先前的證書安全策略評估方式。如果安全策略將validatesDomainName設(shè)置為YES,那么SSLPinningMode將會被修改為AFSSLPinningModeNone。
2015年4月20日,AFNetworking 2.5.3發(fā)布了,該版本做了額外的修改。對所有的安全策略默認(rèn)設(shè)置validatesDomainName為YES。
2015年4月21日,GitHub上新開了一個(gè)Issue,要求完善AFNetworking的文檔和與安全相關(guān)的功能特性。我們正就此積極努力地對參考材料做全面徹底的修改。
還是在2015年4月20日,來自SourceDNA的Nate Lawson發(fā)表了一篇博文,宣稱某個(gè)工具可以識別蘋果商店中使用了AFNetworking2.5.1的應(yīng)用程序。包括來自Ars Technica的Dan Goodin在內(nèi)的許多記者,在其公布的文章中都引用了該博文并提及了博文的作者。這些公開發(fā)布的內(nèi)容都沒有就AFNetworking維護(hù)人員的解決方案進(jìn)行整理而置評。
2015年4月24日,SourceDNA在其后續(xù)發(fā)布的博文中聲稱,存在更多帶有安全漏洞的應(yīng)用程序,來自Ars Technica的Dan Goodin隨后也發(fā)表了一篇帶有相同效果的文章。需要強(qiáng)調(diào)的是,沒有任何一篇公開發(fā)表的文章對AFNetworking維護(hù)人員的解決方案進(jìn)行整理而置評。
如果應(yīng)用程序通過HTTPS通信,卻沒有啟用SSL pinning技術(shù)的話,應(yīng)用程序就可能容易受到所報(bào)道的MitM攻擊。
AFSecurityPolicy的官方文檔中的內(nèi)容:
將固定的SSL證書( pinned SSL)添加到應(yīng)用程序中,可以幫助應(yīng)用避免中間人攻擊以及存在的其他漏洞。大力鼓勵(lì)應(yīng)用程序在處理用戶數(shù)據(jù)或財(cái)務(wù)信息的時(shí)候,所有通信途徑都通過HTTPS協(xié)議,配置并啟用SSL pinning技術(shù)。
無論在什么時(shí)候,遵循這些建議的應(yīng)用程序都不應(yīng)該存在上述安全漏洞。
如果應(yīng)用使用HTTPS進(jìn)行通信,并且啟用了SSL pinning技術(shù),就不容易遭到所說的MitM攻擊。
很大一部分應(yīng)用程序使用AFNetworking是通過推薦的步驟啟用了SSL證書或public key pinning機(jī)制的,這些應(yīng)用程序不太不容遭到上面說的MitM攻擊。
如果使用的是先前的版本AFNetworking,我們強(qiáng)烈推薦您升級到版本2.5.3。
AFNetworking 2.5.1和2.5.2包含的默認(rèn)配置不適合產(chǎn)品級應(yīng)用程序——特別是如果不進(jìn)行額外的配置,就不會提供必要的TLS評估。
AFNetworking 2.5.3默認(rèn)配置更加安全,即使不使用SSL pinning也會進(jìn)行域名驗(yàn)證。
如果使用NSURLConnection或NSURLSession代替AFNetworking的話,你仍然需要檢查驗(yàn)證挑戰(zhàn)的實(shí)現(xiàn)方式。
蘋果內(nèi)置的NSURLConnection和NSURLSession,還有Security框架所提供的API,都具有對憑證驗(yàn)證的安全實(shí)現(xiàn)方式。但是,像任何API一樣,某個(gè)應(yīng)用程序的安全性取決于這些API的使用方法。
是否使用AFNetworking本身并不能保證你的應(yīng)用程序能夠靈活應(yīng)對MitM那樣的攻擊。是否能夠靈活應(yīng)對攻擊完全取決于應(yīng)用程序使用可用API的方法。在產(chǎn)品環(huán)境下,測試應(yīng)用程序的健壯性和網(wǎng)絡(luò)安全性終是開發(fā)人員的職責(zé)。
對于終端用戶來說,安全研究人員在軟件安全方面起著核心作用。研究人員與軟件開發(fā)人員共同努力,通過遵循既定的負(fù)責(zé)任的漏洞披露(responsible disclosure),可以快速修復(fù)漏洞。同時(shí),將當(dāng)前用戶的風(fēng)險(xiǎn)降到低。
然而,我們對一些研究人員的做法和一些對AFNetworking的披露感到失望。作為人盡皆知的話題,信息安全從未如此重要。安全研究人員和記者擁有獨(dú)特的機(jī)會來讓讀者了解這些事實(shí)。但不幸的是,這樣的披露方式常常通過制造恐懼來增加點(diǎn)擊量,而不是客觀詳實(shí)的報(bào)道。
尚未有確切的方法可以表明多少應(yīng)用程序受此問題的影響;這些對安全問題嚴(yán)重程度的揣測摧毀了對問題準(zhǔn)確和適度的回應(yīng)。同樣地,根據(jù)揣測提出的權(quán)利主張對企業(yè)和其客戶也幫助甚少。
事實(shí)上,編寫安全的軟件一直以來都是一項(xiàng)巨大的挑戰(zhàn)。這需要多學(xué)科的工程師們一起合作完成。這是一個(gè)極其重要的任務(wù),好由理性且富有責(zé)任心的人參與。
作為軟件維護(hù)人員,我們有很多事情可以做得更好,并積極采取措施來完善自身的組織和流程。從今天起,我們期待與信息安全社區(qū)的成員緊密合作,負(fù)責(zé)任地尋找并解決任何安全漏洞。
我們真誠地向使用AFNetworking的開發(fā)者和iOS整個(gè)開發(fā)者社區(qū)表示歉意。
作為開源項(xiàng)目的維護(hù)者,我們有責(zé)任提供與高標(biāo)準(zhǔn)相契合的軟件,該軟件將作為應(yīng)用程序不可或缺的一部分。我們卻沒有對應(yīng)該盡快更新的版本做出回應(yīng)。我們未能向您有效傳達(dá)至關(guān)重要的安全信息。這所有的一切,我們表示真誠的歉意并負(fù)全責(zé)。
在未來的幾周內(nèi),我們將推出重組后的AFNetworking及其相關(guān)項(xiàng)目,以確保穩(wěn)定的通信順利進(jìn)行。從用戶的角度看,這意味著更加頻繁地發(fā)布版本,更高的透明度,處理問題與合并請求過程中更多的反饋,我們?yōu)榇硕械脚d奮。
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個(gè)人觀點(diǎn), 并不代表本站贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個(gè)個(gè)人學(xué)習(xí)交流的平臺,網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對作者和來源進(jìn)行了通告,但是能力有限或疏忽,造成漏登,請及時(shí)聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對此聲明的最終解釋權(quán)。