這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
heartbleeder 可以探測你的伺服器是否存在 OpenSSL CVE-2014-0160 漏洞 (心臟出血漏洞)。
什麼是心臟出血漏洞?
CVE-2014-0160,心臟出血漏洞,是一個非常嚴重的 OpenSSL 漏洞。這個漏洞使得攻擊者可以從存在漏洞的伺服器上讀取64KB大小的記憶體資訊。這些資訊中可能包含非常敏感的資訊,包括使用者請求、密碼甚至認證的私密金鑰。
據稱,已經有攻擊者在某寶上嘗試使用漏洞讀取資料,在讀取200次後,擷取了40多個使用者名稱和7個密碼。
如何使用 heartbleeder 檢測心臟出血漏洞?
安裝
可以在gobuild.io下載編譯好的二進位檔案的壓縮包。包括Windows、Linux、MacOSX。
由於伺服器作業系統最常用的是Linux,因此這裡提供一下下載Linux二進位壓縮包的命令:
Linux(amd64)
wget http://gobuild.io/github.com/titanous/heartbleeder/master/linux/amd64 -O output.zip
Linux(i386)
wget http://gobuild.io/github.com/titanous/heartbleeder/master/linux/386 -O output.zip
下載後解壓縮即可。
也可以自行編譯安裝(Go版本需在1.2以上), 使用如下命令:
go get github.com/titanous/heartbleeder
二進位檔案會放置在 $GOPATH/bin/heartbleeder。
使用
$ heartbleeder example.comINSECURE - example.com:443 has the heartbeat extension enabled and is vulnerable
Postgres 預設在 5432 連接埠使用 OpenSSL,如果你使用Postgres伺服器,則需使用如下命令:
$ heartbleeder -pg example.comSECURE - example:5432 does not have the heartbeat extension enabled
如何手工檢測心臟出血漏洞
如果不方便安裝heartbleeder,或者不放心自動檢測的結果,也可以手動檢測。
首先判斷伺服器上的Openssl版本是否是有漏洞的版本。目前有漏洞的版本有: 1.0.1-1.0.1f(包含1.0.1f)以及 1.0.2-beta。你可以使用如下的命令查看伺服器上的目前的版本:
openssl version
接著你需要判斷是否開啟了心跳擴充:
openssl s_client -connect 你的網站:443 -tlsextdebug 2>&1| grep 'TLS server extension "heartbeat" (id=15), len=1'
如果以上兩個條件你都滿足的話,很遺憾,你的伺服器受此漏洞影響,需要儘快修複。
如何修複
- 將受影響的伺服器下線,避免它繼續泄露敏感資訊。
- 停止舊版的 openssl 服務,升級 openssl 到新版本,並重新啟動。
- 產生新密鑰。(因為攻擊者可能通過漏洞擷取私密金鑰。)將新密鑰提交給你的CA,獲得新的認證之後在伺服器上安裝新密鑰。
- 伺服器上線。
- 撤銷舊認證。
- 撤銷現有的會話cookies。
- 要求使用者修改密碼。
編撰 SegmentFault