文/Jing Tian
CertShim:利用動(dòng)態(tài)鏈接鞏固SSL證書驗(yàn)證
文/Jing Tian
最近發(fā)現(xiàn)的一系列SSL軟件棧(OpenSSL/ GnuTLS)的漏洞嚴(yán)重威脅到互聯(lián)網(wǎng)通信的安全。其中最為顯著的漏洞是客戶端無法正確地驗(yàn)證服務(wù)器端的SSL證書。這些漏洞或者是庫函數(shù)實(shí)現(xiàn)本身的問題,或者是由軟件工程師的錯(cuò)誤應(yīng)用而造成的[1]。雖然各種安全補(bǔ)丁和方案被提出來解決這個(gè)問題,實(shí)際的安裝和應(yīng)用卻差強(qiáng)人意。用戶或者需要徹底替換現(xiàn)有的庫函數(shù)實(shí)現(xiàn),或者需要等待第三方的軟件提供商來增強(qiáng)現(xiàn)有的應(yīng)用版本來應(yīng)對(duì)潛在的攻擊。
本文提出一種新的解決方案——CertShim,來針對(duì)如何正確的驗(yàn)證服務(wù)器端的SSL證書。CertShim的優(yōu)勢在于用戶不需要替換現(xiàn)有的庫函數(shù)實(shí)現(xiàn),或者升級(jí)現(xiàn)有的應(yīng)用, 即可隨時(shí)糾正現(xiàn)有軟件棧漏洞。
CertShim的基本思想是利用軟件庫的動(dòng)態(tài)鏈接來隨時(shí)改變核心函數(shù)的行為,從而實(shí)現(xiàn)根據(jù)最新的安全分析來隨時(shí)更新本地實(shí)現(xiàn)而不需要改變上層應(yīng)用。如圖1所示,CertShim位于SSL庫函數(shù)和SSL應(yīng)用中間,相當(dāng)于一個(gè)中間層。所有SSL應(yīng)用對(duì)SSL庫函數(shù)的實(shí)現(xiàn)都會(huì)先經(jīng)過CertShim。
作為一個(gè)中間層,CertShim主要起到以下三個(gè)作用:
一是糾正應(yīng)用層對(duì)SSL實(shí)現(xiàn)層的錯(cuò)誤調(diào)用,例如通過改變應(yīng)用函數(shù)調(diào)用的參數(shù)來確定最基本的安全檢查被開啟而不是被關(guān)閉。
二是提供其他安全認(rèn)證策略和方案。例如,用戶可以根據(jù)不同的應(yīng)用來設(shè)置不同的安全策略和方案。CertShim既支持Covergence[2],也支持DANE[3]。
三是支持庫函數(shù)的動(dòng)態(tài)補(bǔ)丁。例如,用戶可以添加自定義的主機(jī)名驗(yàn)證來增強(qiáng)原函數(shù)功能。
目前版本的CertShim主要實(shí)現(xiàn)了以下庫函數(shù)調(diào)用的hook:
除了C/C++常用的libssl、libgnutls,CertShim也提供對(duì)JDK6/7的支持。從SSL庫函數(shù)實(shí)現(xiàn)看,CertShim涵蓋了OpenSSL,GnuTLS和JSSE。從數(shù)據(jù)傳輸庫函數(shù)實(shí)現(xiàn)看,CertShim也涵蓋了對(duì)其他語言的支持,其中包括cURL、urllib、urllib2、httplib和python ssl等。從應(yīng)用程序看,CertShim支持Ubuntu常用軟件中的的95%。后續(xù)版本除了會(huì)涵蓋其他SSL庫函數(shù)實(shí)現(xiàn),也會(huì)添加對(duì)JDK8的支持。
(作者單位為University of Florida)
圖1
[1] Georgiev, M., Iyengar, S., Jana, S., Anubhai, R., Boneh, D., and Shmatikov, V. The Most Dangerous Code in the World: Validating SSL Certificates in Non-Browser Software. In Proceedings of the 2012 ACM conference on Computer and communications security (Raleigh, NC, USA, 2012), CCS ’12, ACM, pp. 38-49
[2] http://convergence.io/
[3] https://datatracker.ietf.org/wg/dane/documents/
[4] 詳細(xì)實(shí)現(xiàn)和論證,請(qǐng)參閱發(fā)表論文:https:// github.com/daveti/daveti/raw/master/paper/ccs14/ccs14a.pdf