當安全協議不安全了:OpenSSL漏洞
昨天早上大家還在討論XP停止服務的事,到處是相關的新聞和文章,到了下午,到處都是OpenSSL的漏洞消息了。
OpenSSL與SSL安全協議
什么是SSL安全協議,我記得在10年我寫過一篇簡單介紹的文章,小談SSL安全協議(http://hi.baidu.com/fooying/item/2c4c407ee2acb1326cc37c74),大家不凡可以看看,以前的文章,大家就不要笑話了。
SSL,全稱Secure Socket
Layer,為Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程中不會被截取及竊聽。簡單的說,就是加密傳輸的數據,避免被截取監聽等。
SSL應該是大家平時接觸最多的安全協議了,大家可以看訪問一些網址的時候,一般是http://開頭,如果發現https://開頭就是采用了SSL安全協議。比如,大家在登陸微信網頁版的時候就可以看到:
一般來說,比如nginx,可以通過以下方式就可以進行配置:
# HTTPS server
#
server {
listen 443;
server_name localhost;ssl on;
ssl_certificate /opt/nginx/sslkey/server.crt;
ssl_certificate_key /opt/nginx/sslkey/server.key;location / {
root /home/workspace/;
index index.asp index.aspx;
}
}
大家可以看到,監聽的是443端口,然后通過ssl on;來開啟,同時通過ssl_certificate和sl_certificate_key配置證書和key文件,具體的就不多解釋了,大家可以自己搜索下。
那么證書和key又是怎么一回事呢?接下來就要講到OpenSSL了。
進行過nginx編譯的同學都知道,在編譯nginx的時候,如果想讓nginx支持開啟SSL,那么必須加一個--with-http_ssl_module 的配置項。那么如何讓服務器支持這個配置項呢?又如何生成nginx開發SSL中所需要的證書和key文件呢?都是源于OpenSSL。
OpenSSL是一個強大的安全套接字層密碼庫,Apache使用它加密HTTPS,OpenSSH使用它加密SSH, 但是,你不應該只將其作為一個庫來使用,它還是一個多用途的、跨平臺的密碼工具。
大家平時如果采用公私鑰的方式連接服務器,也是需要用到OpenSSL的。簡單的理解,OpenSSL是一個強大的支持庫,更是一個強大的密碼工具。雖然要支持SSL協議不一定得采用OpenSSL,但是基本大部分的都是采用OpenSSL。
心臟出血的OpenSSL
相信前面簡單的介紹能讓大家了解到OpenSSL的重要性,也明白了SSL協議是做什么的,那么大家應該就可以理解,本來采用SSL協議是為了數據傳輸的安全性,是為了更安全,但是OpenSSL的漏洞直接導致了本該是讓為了更安全的設置變成了致命的危險。
簡單介紹下漏洞,這個漏洞是昨天國外的黑客曝光的,該漏洞可以獲取HTTPS服務器的隨機64K內存。這個漏洞被稱為heartbleed,直譯的話就是心臟出血。可能有部分同學沒意識到這個64K有啥用錯,讀取內存又有啥用?
貼幾張圖:
這是筆者利用poc進行的一些測試(測試poc:http://s3.jspenguin.org/ssltest.py,直接python ssltest.py domain就可以了),大家可以看到,cookie設置是明文帳號密碼都直接爆出來了,有的還有代碼源碼(這個忘記截圖了。。。)、SSL私鑰(這個筆者沒測試出來)等,那么影響有多大呢?看下wooyun的漏洞提交列表:
再給個來自zoomeye(http://www.zoomeye.org/)的統計數據:
全國443端口:1601250,有33303個受本次OpenSSL漏洞影響
看了這些,成為"心臟出血"完全不為過。今天估計又有許多運維同學可忙的了。具體的漏洞分析我也不多說了,大家可以看wooyun上的文章(http://drops.wooyun.org/papers/1381)
安全防范
說了這么多,可能有些同學覺得都不要去訪問那些是https的網站了,其實也大可不必,官方其實已經放出補丁了,修復方法:
升級到最新版本OpenSSL 1.0.1g 無法立即升級的用戶可以以段落DOPENSSL_NO_HEARTBEATS開關重新編譯OpenSSL 1.0.2-beta版本的漏洞將在beta2版本修復
對于個人用戶的話,大家不用太擔心,雖然說影響有點大,不過像那些大網站,比如微信、淘寶等都已經修復了,實在不放心,大家可以今晚暫時不要訪問就是了,不過我覺得沒必要,不要像上次攜程的事件一樣搞的過爆了。另外,提供個在線檢測的工具給大家:http://filippo.io/Heartbleed/
結語
剩下的就不多說了,首先給那些連夜處理的運維和安全工作人員道聲辛苦了。現在大家對安全越來越重視,這是好事,但是我覺得還是不要人云亦云,剩下的就是大家上網多小心些!