跳到主要內容區塊

ntuccepaper2019

技術論壇

OPENSSL(CVE-2014-0160)漏洞分析與防禦方法簡介
  • 卷期:v0038
  • 出版日期:2016-09-20

作者:李美雯 / 臺灣大學計算機及資訊網路中心程式設計師
本文轉載自臺灣大學計資中心北區學術資訊安全維運中心


OPENSSL漏洞(CVE-2014-0160)讓有心人士可透過OpenSSL技術竊取系統記憶體資料,取得使用者帳號與密碼等機敏資訊。本文將透過實作漏洞檢測、擷取系統資料、提供修補漏洞建議措施與結論等說明此漏洞,期望讀者能透過本分析報告確認管理及使用範圍內是否存在此漏洞,以進行漏洞的修補與防護。

 

使用Metasploit實做OPENSSL漏洞檢測

1. 開啟Metasploit msf介面,並鍵入指令
use auxiliary/scanner/ssl/openssl_heartbleed”

 


圖一 開啟Metasploit msf介面

 

2. 接著使用「show options」檢視有何參數須調整,此例中僅需設定「RHOSTS」(目標IP位置)以及「RPORT」(目標PORT)

 


圖二 設定「RHOSTS」(目標IP位置)以及「RPORT」(目標PORT)

 

3. 使用set RHOSTS及set RPORT等指令設定參數,設定完成後,鍵入run執行掃描,當顯示Heartbeat response with leak表示目標IP存有此弱點。

 


圖三 檢測弱點

 

4. 若目標IP無此此弱點,則會顯示如下圖資訊。

 


圖四 無弱點回應

 

使用openssl.py擷取OPENSSL漏洞資料

Openssl.py為Jared Stafford利用Python所撰寫的檢測工具,為公開的原始碼,可至https://gist.github.com/sh1n0b1/10100394下載及使用。
1. 開啟檢測工具

 


圖五 開啟Openssl.py檢測工具

 

2. 填入檢測時所需之參數(目標IP及port,預設為443)

 


圖六 填入檢測所需之參數

 

3. 目標IP存有此弱點,將可收到其記憶體中64KB的資料

 


圖七 記憶體中64KB的資料

 

4. 若目標IP不存在此弱點,則會顯示如下圖資訊

 


圖八 不存在弱點顯示資料

 

修補OPENSSL漏洞

針對OPENSSL漏洞(CVE-2014-0160),使用上述檢測工具可確認伺服器是否存在此漏洞。由於部份機敏資料可能已外洩,加上此弱點存取資料來源為記憶體,難以察覺是否已被外部使用者取得,故建議可參考下列幾點建議進行後續修補動作,避免資料持續外洩。
1. 立即更新OpenSSL套件至最新版本(1.0.1g or 1.0.2-beta2 以上之版本)
2. 清除目前Server所有的Session
3. 重啟OpenSSL的服務
4. 重新產生伺服器SSL私鑰
5. 更新本機管理者帳號密碼
6. 將原使用之憑證撤銷,並使用新產生之憑證

 

結論與建議

OPENSSL(CVE-2014-0160)漏洞影響範圍極廣,應盡速完成漏洞修補與損害管制,針對一般使用者與系統管理人員的建議如下:
一般使用者,若有使用HTTP/SSL服務者,建議立刻進行密碼變更並留意自己的帳號是否有異常活動。
若您為系統管理人員,請確認系統之OpenSSL版本是否在受害範圍,若有,請進行修補,並使用 ssltest.py檢測工具檢測確認洞已修補完成。若您暫時無法進行漏洞修補,可使用免費之Snort IDS進行攻擊偵測,Rule編號分別為sid: 30510 - 30517, 30520 - 30525, 30549, 30777 - 30788。

 

參考資料

1. OpenSSL專區
http://www.icst.org.tw/Heartbleed.aspx?lang=zh://news.cnet.com/8301-1009_3-57591042-83/mobile-malware-grows-by-614-percent-in-last-year/
2. Snort Community
http://blog.snort.org/2014/04/sourcefire-vrt-certified-snort-rules_8.html
3. Python Heartbleed, https://gist.github.com/sh1n0b1/10100394