999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

OpenSSL HeartBleed漏洞自動化檢測工具設計與實現

2018-06-29 01:58:04陳希胡峻潔張亮嚴義兵雷敏
網絡空間安全 2018年1期
關鍵詞:檢測信息

陳希 胡峻潔 張亮 嚴義兵 雷敏

摘 要:OpenSSL在實現心跳邏輯時,存在編碼上的缺陷,導致了HeartBleed漏洞的發生。由于在沒有正確執行邊界檢查的前提下,就執行memcpy( )函數調用受害用戶輸入內容作為長度參數,使得攻擊者可以利用該漏洞遠程讀取存在漏洞版本的OpenSSL服務器內存中多達64KB的數據。論文文通過分析OpenSSL的工作原理,闡明了HeartBleed漏洞產生的根本原因;設計并實現自動化檢測工具,判斷服務器是否存在該漏洞,并在實際測試中被成功應用。

關鍵詞:OpenSSL; HeartBleed漏洞; 自動化檢測

中圖分類號:TP312 文獻標識碼:A

Design and implementation of automated detection tool for openssl heartbleed vulnerability

Abstract: Heartbeat logic in OpenSSL has a code flaw, leading to the occurrence of HeartBleed vulnerability. The execution of the memcpy( ) function invokes the victim user input content as a length parameter without the proper execution of the boundary check, allowing the attacker to remotely read up to 64KB of data in the OpenSSL server memory where the vulnerability exists. This paper analyzes the principle of OpenSSL and clarifies the root cause of the HeartBleed vulnerability. On this basis, this paper designs and implements the automated detection tool which is successfully applied in the actual test to judge whether the server exists the vulnerability.

Key words: OpenSSL; heartbleed vulnerability; automated detection

1 引言

OpenSSL是一款功能齊全的安全套接字層密碼庫,其作用是為了實現網絡通信的加密與認證功能。OpenSSL囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL(Secure Sockets Layer,安全套接層)協議,并提供多樣的應用程序供使用,保障了網絡通信的安全。

2014年4月8日,OpenSSL 曝出一種名為HeartBleed (CVE ID:CVE-2014-0160)[1]的嚴重安全漏洞。該漏洞首先被Google研究員尼爾·梅塔(Neel Mehta)發現,起因是他可以從特定服務器上隨機獲取64KB的工作日志。利用該漏洞,黑客可直接對個人電腦發起“心臟出血”攻擊,從存在漏洞版本的OpenSSL服務器內存中讀取請求存儲位置之外的多達64 KB的數據,這段內存數據可能包含用戶名與密碼、證書私鑰、重要的商業文檔等數據。OpenSSL所具有的強大功能使其被廣泛應用于各大網銀、在線支付、電商網站、門戶網站、電子郵件等領域,因此HeartBleed漏洞勢必引發巨大的網絡災難。目前,中國國家信息安全漏洞共享平臺(CNVD)將該漏洞定級為“高?!盵2]。

鑒于HeartBleed漏洞的危害程度和影響范圍,本文通過研究HeartBleed漏洞原理,設計并編寫Python腳本以完成自動化檢測的目的[3],幫助用戶能夠及時發現安全問題所在,并在最后以內網中一臺存在OpenSSL HeartBleed漏洞的主機(試驗機)為例,測試了腳本的運行結果。

2 漏洞原理

2.1 OpenSSL工作原理

OpenSSL是一款實現了SSL協議和TLS (Transport Layer Security,安全傳輸層)協議的開源工具,被廣泛地應用于互聯網各大應用中。

SSL協議位于TCP/IP協議與各種應用層協議之間,是Netscape公司所研究開發的一項用于保障網絡安全的協議,其通過傳輸層對網絡連接進行加密保護,保障了互聯網傳輸過程中數據的安全性。

SSL協議主要可分為兩個部分[4]。

(1)SSL記錄協議(SSL Record Protocol)

記錄協議處于可靠的傳輸協議(如TCP)之上,可以實現高層協議的數據封裝、壓縮、加密等基本功能。明文傳送情況下,SSL記錄協議的結構如圖1所示。

在圖1中,類型、版本和長度統稱為“記錄頭信息”,共為5個字節,其中:類型占1個字節,用來表示該記錄攜帶的數據類型;版本占2個字節,用來表示該記錄的協議版本,分為主要版本和次要版本,各占1個字節;長度占2個字節,用來表示所攜帶數據的長度,但是并不包含記錄頭信息中的5個字節,因此整個記錄的長度應為“長度+5”。

(2)SSL握手協議(SSL Handshake Protocol)

握手協議位于SSL記錄協議之上,用于在實際的數據傳輸開始前,為客戶端與服務器提供身份認證、協商加密算法、交換加密密鑰等服務[5]。SSL握手協議的過程如圖2所示。

TLS位于傳輸層和應用層之間,其作用是實現數據的安全加密功能。客戶端向服務器發送TLS心跳數據包,其中用兩個字節表明有效負載數據長度,而服務器端OpenSSL將根據這個有效負載長度構造一個新的數據包返回給用戶,用以確認彼此在線,以便實現持續通信功能。此次“心臟出血”事件中的HeartBleed漏洞正是存在于OpenSSL的TLS Hearbeat擴展中,利用了心跳包的正常工作,以獲取到持續溢出的“心跳信號”數據。

2.2 漏洞利用方式

OpenSSL在實現TLS心跳邏輯時,存在編碼上的缺陷,其心跳處理邏輯并沒有檢測心跳包中的數據長度是否和返還的數據長度相符合。具體來說,這一漏洞是由于在沒有正確進行邊界檢查的前提下就執行memcpy( )函數調用受害用戶輸入內容作為長度參數所導致的[6]。攻擊者通過追蹤OpenSSL所分配的64KB緩存,將超出必要范圍的字節信息復制到緩存中再返回緩存內容,這樣一來OpenSSL的內存內容就會以每次64KB的速度遭受泄露[7]。

利用這一方式,攻擊者可以獲取到網站服務器中用于加密信息的網絡密鑰,而后從中截取用戶的個人信息;或者通過直接潛伏在OpenSSL服務器的內存中,達到隨時且快捷的獲取眾多網站用戶信息的目的。

根據文獻[8]的標準說明,心跳信息在C語言中的表現形式如下:

這條心跳信息使用SSL3_RECORD結構進行傳輸,進一步觀察分析SSL3_RECORD結構的定義:

其中,SSL3記錄中的data指向接收到的心跳信息的起始位置;length表示接收到的心跳信息的字節數量;而心跳信息中的payload length則表示被返回的有效負載的字節數量。心跳信息的發送方可以決定payload length,同時SSL3_RECORD結構中的length 字段卻沒有進行校驗,這樣便導致了內存溢出情況的發生[9]。

在接收到心跳信息之后,OpenSSL將對其進行如下處理:

其中,p為指向所接收到的HeartbeatMessage的起始處的指針;bp為指向HeartbeatMessage回復起始位置的指針。根據上述代碼分析可得:OpenSSL服務器端是根據發送端提供的載荷長度來拷貝數據的,然而發送端用戶可以控制變量payload,即心跳載荷長度和pl的心跳數據。

假設攻擊者指定了最大的payload為65535字節,但是發往服務器的心跳數據僅為0或1字節,那么memcpy函數就會把服務端內存中這條SSLv3記錄之后的數據復制到新分配的最大空間的內存區域,并返回給攻擊者。依照上述方法,攻擊者可以重復獲取服務器大段內存進行數據分析,得到密碼內容等重要信息。

3 檢測工具的設計與實現

3.1 有效攻擊載荷生成

對于檢測工具的設計與實現,考慮到Python擁有強大的類庫,非常適合用以快速開發,被廣泛應用于眾多自動化測試項目中,因此本文使用Python語言設計并編寫OpenSSL HeartBleed漏洞自動化檢測腳本[10]。

通過閱讀心跳拓展協議RFC 6520,可以分析得到有效攻擊載荷的數據結構為:

依據該結構,腳本設計了如下攻擊載荷:

hb = h2bin('''

18 03 02 00 03

01 ff ff

''')

其中,“18”表示Heartbeat Type;“03 02”表示TLS的版本號,此處應為TLS v1.1;“00 03”表示Heartbeat Message的長度,也就是payload的長度;“01”表示heartbeat_request;“ff ff”表示payload length。而payload和padding都不設數據,以便利用漏洞將后續內存中的數據復制出來。

3.2 腳本設計

基于OpenSSL的工作原理以及HeartBleed漏洞的利用方式,本文按照如圖3思路設計編寫自動化檢測腳本,如圖3所示。

首先,自動化檢測腳本需先建立socket連接,關鍵代碼如下:

Tcp socket建立完成后,發送SSL/TLS Client Hello請求,關鍵代碼如下:

若Server Hello消息返回,則說明SSL/TLS會話已建立成功。其中,在接收服務器返回的數據包時程序調用了recvmsg函數,該函數內容如下:

該函數實現了讀取返回信息的功能,在函數執行的第一步時又調用了recvall函數,用以從返回的數據包中讀取長度為5個字節的數據,而后函數將所讀取的5個字節以1、2、2字節分割,其中typ表示數據包類型,ver表示TSL版本,ln表示數據包長度。recvall函數關鍵代碼如下:

下一步,腳本利用hit_hb函數向服務器發送偽造的心跳包,并讀取返回的信息,檢測漏洞是否存在:

如果成功接收到溢出的數據,那么則表示服務器存在HeartBleed漏洞,得出檢測結果:

3.3 實際測試

實際測試環境為安裝了OpenSSL 1.0.1版本的docker鏡像,如圖4所示,首先使用如下命令拉取鏡像到本地:

$ docker pull medicean/vulapps:o_openssl_heartbleed

啟動配置好的安裝有OpenSSL 1.0.1版本的docker鏡像,如圖5所示。

接著,運行自動化檢測腳本,如圖6所示。

查看結果,成功接收到了溢出數據,實現了自動化檢測HeartBleed漏洞的目的,如圖7所示。

4 結束語

OpenSSL在被廣泛應用的同時,其安全性也應受到更多的重視及研究。本文通過分析OpenSSL的工作原理,闡明了HeartBleed漏洞產生的根本原因及可能被利用的方式,提出編寫Python腳本以實現自動化檢測的目的。用戶使用本文所設計的自動化工具,可以在不損害服務器的情況下,對服務器進行漏洞檢測,并快速發現安全問題。

參考文獻

[1] 美國國家標準與技術所.國家漏洞數據庫[EB/OL]. http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-0160.

[2] 中國國家信息安全漏洞共享平臺[EB/OL]. http://www.cnvd.org.cn/flaw/show/CNVD-2014-02175.

[3] 丁敏.基于Python語言實現自動化測試的研究[J].數字技術與應用,2010(3):88-88.

[4] 檀亞樂,胡曦明,馬苗. SSL協議工作過程探析[J].網絡安全技術與應用,2017,(07):36-38.

[5] 胡仁林,張立武.基于模糊綜合分析的SSL/TLS協議配置安全評估模型研究[J].信息安全研究,2017,3(06):538-547.

[6] 馬虹哲.源代碼安全漏洞檢測方法探討[J].網絡空間安全,2016,7(Z2):55-58.

[7] 安思華,易平,王春新,李朝峰. OpenSSL Heartbleed漏洞攻擊原理及防范方法研究[J]. 通信技術,2014,47(07):795-799.

[8] SEGGELMANN R,TUEXEN M. Transport Layer Security(TLS) and Datagram Transport Layer Security(DTLS) Heartbeat Extension[EB/OL]. IETF RFC6520. https://tools.ietf.oor/html/rfc6520.

[9] 杜江,羅權.基于代碼審計技術的OpenSSL脆弱性分析[J].計算機系統應用,2017,26(09):253-258.

[10] 錢劼,雷敏,鄒仕洪.Java反序列化漏洞自動檢測腳本設計[J].網絡安全技術與應用,2017,(08):66-68.

猜你喜歡
檢測信息
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
小波變換在PCB缺陷檢測中的應用
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 日韩第九页| 国产精品成| 国产无人区一区二区三区| 国产一在线观看| 国产欧美日韩91| 九九九久久国产精品| 欧美精品影院| 国产在线欧美| 国产精品久久精品| 国模极品一区二区三区| 国产成人超碰无码| 青青草欧美| 91精品国产无线乱码在线| 国内精品一区二区在线观看| 国产精品无码AV中文| 亚洲天天更新| 国产精品尤物在线| 中文毛片无遮挡播放免费| 欧美中文字幕一区| 中文毛片无遮挡播放免费| 日韩一区精品视频一区二区| 福利在线免费视频| 露脸一二三区国语对白| 欧美成人影院亚洲综合图| 青青草国产一区二区三区| 成年人国产视频| 日韩欧美高清视频| 久久综合五月| 亚洲一区第一页| 中国一级特黄视频| 91国内外精品自在线播放| 青青青国产视频手机| 国产精品性| 亚洲国产成人精品无码区性色| 国产欧美在线视频免费| 欧美v在线| 欧美精品在线免费| 热久久综合这里只有精品电影| 狠狠操夜夜爽| 91欧美在线| 日本一区二区三区精品AⅤ| 偷拍久久网| 波多野一区| 欧美在线一二区| 久久精品中文字幕免费| 亚洲福利视频网址| 国产视频一二三区| 国内精品一区二区在线观看 | 成人在线视频一区| 国产精品视频第一专区| 亚洲福利网址| 大学生久久香蕉国产线观看| 欧美激情视频二区三区| 丁香五月亚洲综合在线 | 欧美三级视频在线播放| 亚洲一区二区成人| 高h视频在线| 麻豆AV网站免费进入| 国产一区二区三区精品欧美日韩| a亚洲天堂| 国产又黄又硬又粗| 亚洲人成人无码www| 久久国产免费观看| 色网站免费在线观看| 欧美精品啪啪一区二区三区| 正在播放久久| 欧洲精品视频在线观看| 国产国模一区二区三区四区| 日本日韩欧美| 亚洲欧洲日产国产无码AV| 午夜欧美在线| 亚洲69视频| 欧美中文字幕在线二区| 美女无遮挡被啪啪到高潮免费| 国产欧美日本在线观看| 97久久精品人人| 永久免费AⅤ无码网站在线观看| 美女潮喷出白浆在线观看视频| 亚洲欧洲AV一区二区三区| 在线观看无码av免费不卡网站| 久久久久青草线综合超碰| 久久精品只有这里有|