1. 前言
OpenSSL[1]是以Eric Young與Tim Hudson所寫的SSLeay為基礎之開放原始碼SSL套件,主要功能為基本的傳輸層資料加密。在2012/3/14推出的1.0.1版本存在高風險漏洞(漏洞編號:CVE-2014-0160)[2],漏洞與OpenSSL TLS/DTLS傳輸層安全協議heartbeat擴充元件相關,因此又被稱為Heartbleed漏洞,該漏洞允許攻擊者從伺服器記憶體中讀取最多64KB的資料,將造成記憶體內容外洩風險。
2. 漏洞資訊
漏洞編號:CVE-2014-0160
影響OpenSSL版本:
3. 檢測方式
針對CVE-2014-0160可能產生之資安影響,提供下列檢測與改善建議供各機關參考。
3.1.自行檢視OpenSSL版本
3.1.1. 可利用openssl指令檢視版本
#openssl version

資料來源:本計畫整理
圖1 openssl指令檢視版本
3.1.2. 可利用dpkg檢視所使用的OpenSSL版本
#dpkg -l openssl

資料來源:本計畫整理
圖2 dpkg檢視Openssl版本
如版本為1.0.1至1.0.1f與OpenSSL 1.0.2-beta至1.0.2-beta1皆為本次受影響之版本。
3.2.使用Heartbleed Checker檢測網頁
3.2.1. 檢測方法
檢測網站: http://heartbleed.honeynet.org.my [3]。
此網站由MyCERT所提供,於網站中直接輸入Domain Name即可直接進行檢測,網站如下圖所示:

資料來源:本計畫整理
圖3 Heartbleed檢測網頁
3.3.使用python程式檢測
3.3.1. 檢測方法
確認python安裝版本,輸入python -V

資料來源:本計畫整理
圖4 python安裝版本檢查
下載python檢測程式ssltest.py : http://pastebin.com/WmxzjkXJ
可檢測的Port包含HTTPS:443(預設)、SMTPS:465、IMAPS:993及POP3S:995,於安裝python的主機command line內輸入指令: python ssltest.py [IP或DN] -P [Port],下圖以192.168.10.128為範例。

資料來源:本計畫整理
圖5 python指令輸入
3.3.2. 檢測結果
如存在CVE-2014-0160弱點則會印出SSL服務記憶體內的資訊,此時可以利用python ssltest.py 192.168.10.128 | more逐頁檢視。

資料來源:本計畫整理
圖6 攻擊成功畫面
3.4.使用perl程式檢測
3.4.1. 檢測方法
下載perl檢測程式check-ssl-heartbleed.pl : https://github.com/noxxi/p5-scripts/blob/master/check-ssl-heartbleed.pl
指令格式:perl check-ssl-heartbleed.pl [IP 或 DN]:443,也可以在網域名稱後指定特定SSL連接埠,如:imaps。
3.4.2. 檢測結果
如機關存在CVE-2014-0160弱點則在執行後會出現如下圖紅框內的結果。

資料來源:本計畫整理
圖7 驗證存在弱點畫面
3.5.使用弱點掃描軟體檢測
3.5.1. 檢測方式
擁有Nessus軟體授權之機關可選用Plugin ID:73412進行檢測,可檢測OS如:CentOS、Debian、Fressbsd、Oracle Linux、RedHat、Amazon Linux AMI and other platforms including Gentoo,Scientific Linux, Slackware[4]。
如使用Nexpose軟體則可以參考Nexpose針對CVE-2014-0160建置專屬template[5] 進行檢測。
3.6. 使用Metasploit檢測
3.6.1. 檢測環境架設
安裝Metasploit與至github更新CVE-2014-0160的檢測程式[6]。
匯入檢測程式以KAIL為例:
#mkdir /usr/share/metasploit-framework/modules/auxiliary/scanner/ssl/
#cp openssl_heartbleed.rb /usr/share/metasploit-framework/modules/auxiliary/scanner/ssl/
3.6.2. 檢測方法
利用Metasploit的msfcli檢測CVE-2014-0160漏洞。
參數說明:
THREADS設定執行序的數量
TLS_CALLBACK設定支援的協定,如:None, SMTP, IMAP, JABBER, POP3, FTP,HTTPS為None
PORT設定所要檢測的埠
RHOSTS設定要檢測的IP與網段
範例:
#msfcli auxiliary/scanner/ssl/openssl_heartbleed THREADS=256 TLS_CALLBACK=None PORT=443 RHOSTS=10.4.0.0/24 E
3.6.3. 檢測結果
提供檢測圖示以確認主機是否含有CVE-2014-0160漏洞

資料來源:本計畫整理
圖8 含有漏洞之主機
4. 改善建議
為避免機關遭駭客利用CVE-2014-0160弱點而導致機敏資料外洩,技服中心提出以下幾點改善建議以供參考。
4.1.更新OpenSSL版本
建議修補至1.0.1g與1.0.2beta-2以上之版本
4.2.更新帳號密碼
建議更新管理者帳號密碼,亦可考慮同步要求使用者全面更新密碼。
4.3.重新產生伺服器私密金鑰
私密金鑰可能因為此弱點而外洩[7],因此建議重新產生伺服器私密金鑰。
4.4.更換新憑證
建議撤銷舊有憑證,重新使用新憑證。
5. 結語
CVE-2014-0160弱點已由OpenSSL於2014/4/7正式宣布影響範圍包含OpenSSL 1.0.2-beta~1.0.2-beta1、OpenSSL 1.0.1~1.0.1f,該漏洞將導致駭客可竊取機關機敏資訊。因此各機關應盡速了解機關內OpenSSL的使用情形,針對機關有使用OpenSSL之伺服器進行CVE-2014-0160弱點檢測,以掌握可能產生的影響,如為重要業務之伺服器應盡速完成修補措施,並持續追蹤機關網站是否發生使用者帳號遭受盜用之情形,視情況決定是否需要通知使用者進行密碼更換。
技服中心將持續進行CVE-2014-0160弱點檢測與通報作業,蒐集CVE-2014-0160弱點資訊,彙整通報之CVE-2014-0160相關資安事件,以隨時掌握CVE-2014-0160資安事件與影響程度。
6. 參考文獻
[1]OpenSSL官方網站,
https://www.openssl.org。
[2]CVE-2014-0160,
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160
[3]Heartbleed Checker,
http://heartbleed.honeynet.org.my
[4]Nessus-Heartbleed,
http://www.tenable.com/heart-bleed
[5]Using Nexpose to Stop the Bleeding (Scanning for the OpenSSL Heartbleed Vulnerability),
https://community.rapid7.com/community/nexpose/blog/2014/04/10/using-nexpose-to-stop-the-bleeding-scanning-for-cve-2014-0160
[6]Metasploit CVE-2014-0160檢測程式,
https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/scanner/ssl/openssl_heartbleed.rb
[7]Heartbleed臭蟲證實會洩露伺服器的SSL私密金鑰,
http://www.ithome.com.tw/news/86737