偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Heartbleed: OpenSSL密碼與加密密鑰泄露漏洞剖析

安全 漏洞 數(shù)據(jù)安全
此次名為Heartbleed的OpenSSL漏洞引發(fā)了極其惡劣的影響,威脅全球用戶的安全問題究竟源自怎樣的代碼紕漏?

此次名為Heartbleed的OpenSSL漏洞引發(fā)了極其惡劣的影響,而為此暫時切斷互聯(lián)網(wǎng)連接肯定也不算什么理想的解決方案。僅僅由于廣泛使用的加密機制中存在一丁點微小缺陷,如今任何家伙都能輕松潛入存在漏洞的系統(tǒng)——包括銀行HTTPS服務器以及個人VPN——并瘋狂竊取密碼、登陸cookie、個人加密密鑰等等。

[[111357]]

現(xiàn)在已經(jīng)是2014年了,安全保障工作為何仍然如此不堪?

只需一份利用Metasploit引擎的簡單腳本外加短短幾秒鐘,惡意人士即可從依賴于OpenSSL 1.0.1到1.0.1f版本進行TLS加密的系統(tǒng)內(nèi)存中提取到敏感數(shù)據(jù)。根據(jù)我們掌握的情況,這一漏洞影響到的網(wǎng)站約為五十萬個、占總體受信網(wǎng)站中的17.5%,此外任何使用上述OpenSSL版本的客戶端軟件、郵件服務器、聊天服務等也都在受影響范圍之內(nèi)。

本周一開始已經(jīng)有不少熱門網(wǎng)絡服務陸續(xù)針對這一漏洞發(fā)布修復補丁;大家可以利用相關工具檢查自己的系統(tǒng)是否已經(jīng)中招(當然,風險要由各位自己承擔),同時也別忘了為自己已經(jīng)受到感染的系統(tǒng)安裝OpenSSL修復補丁。除此之外,我們還需要更改密碼、轉(zhuǎn)儲會話cookie并對數(shù)據(jù)風險加以評估。

如果大家還不了解Heartbleed是怎么回事,這里提供概括描述:

這項嚴重缺陷(CVE-2014-0160)的產(chǎn)生是由于未能在memcpy()調(diào)用受害用戶輸入內(nèi)容作為長度參數(shù)之前正確進行邊界檢查。攻擊者可以追蹤OpenSSL所分配的64KB緩存、將超出必要范圍的字節(jié)信息復制到緩存當中再返回緩存內(nèi)容,這樣一來受害者的內(nèi)存內(nèi)容就會以每次64KB的速度進行泄露。大家可以點擊此處獲取修復補丁,需要強調(diào)的是此次問題遠比蘋果前一陣子曝出的安全問題嚴重得多。

問題源自TLS Heartbeat擴展

這一漏洞藏身于OpenSSL的TLS Heartbeat擴展當中:這是一項持續(xù)作用型功能,其中一個連接端會向另一端發(fā)送任意數(shù)據(jù)的有效負載,對方則發(fā)回對應數(shù)據(jù)的精確副本以確保傳輸過程一切正常。根據(jù)官方提供的標準說明,Heartbeat信息在C語言中表現(xiàn)為以下形式:

Heartbleed: OpenSSL密碼與加密密鑰泄露漏洞剖析

這條HeartbeatMessage通過SSL3_RECORD結構——一種SSL/TLS通信基礎構建塊——進行傳輸。SSL3_RECORD中的關鍵性字段如下所示,其中l(wèi)ength代表接收到的HeartbeatMessage內(nèi)容為多少字節(jié)、data則為指向該HeartbeatMessage的指針。

Heartbleed: OpenSSL密碼與加密密鑰泄露漏洞剖析

更明確地進行解釋,SSL3記錄中的data指向接收到的HeartbeatMessage的起始位置,而length代表接收到的HeartbeatMessage的字節(jié)數(shù)量。與此同時,HeartbeatMessage中的payload length代表被發(fā)回的隨意有效負載的字節(jié)數(shù)量。 

發(fā)出HeartbeatMessage的一方對payload length擁有控制權,不過正如我們所看到,SSL3_RECORD中的length字段并沒有經(jīng)過驗證、而這一狀況就成了攻擊者實現(xiàn)內(nèi)存溢出絕佳機會。

以下圖表顯示了相關攻擊活動的工作原理:

Heartbleed: OpenSSL密碼與加密密鑰泄露漏洞剖析

請注意:其中并不包含填充字節(jié)  

在上面的例子中,攻擊者在發(fā)出的HeartbeatMessage當中包含了僅為1字節(jié)的有效負載,這一情況也被反映在了SSL3的length記錄當中;不過payload length字段要求有效負載長度應該為65535字節(jié)。受害者忽略了SSL3記錄,轉(zhuǎn)而從內(nèi)存接收到的HeartbeatMessage起始處開始讀取65535字節(jié)的數(shù)據(jù)并將其復制到緩存當中,最終以合適的長度發(fā)送回攻擊者處。由于包含大量額外字節(jié),上圖中紅色單元格所示即為可能導致信息泄露的數(shù)據(jù)部分。

從代碼角度分析

以下代碼為OpenSSL對HeartbeatMessage輸入內(nèi)容的處理方式,其中p為指向該信息起始處的指針:

Heartbleed: OpenSSL密碼與加密密鑰泄露漏洞剖析

這樣一來,信息類型就被體現(xiàn)在hbtype變量當中,該指針由1字節(jié)開始遞增,而n2s()宏將長度為16-bit的Heartbeat有效負載寫入到payload變量中并將該指針增加到2字節(jié)。接下來,pl又成為指向這部分有效負載內(nèi)容的指針。 

舉例來說,一條Heartbeat信息中的payload length為65535字節(jié),即:一條接收到的Heartbeat中最多可能包含64KB有效負載。代碼必須將輸入的HeartbeatMessage以副本形式發(fā)送回去,從而保證緩存區(qū)擁有足夠的空間來保存64KB有效負載、1字節(jié)信息類型、2字節(jié)有效負載長度外加部分填充字節(jié),具體結構如前所述。

它會利用以下代碼創(chuàng)建HeartbeatMessage回復結構,其中bp為指向HeartbeatMessage回復起始位置的指針:

Heartbleed: OpenSSL密碼與加密密鑰泄露漏洞剖析

因此這部分代碼會將響應類型寫入到緩存起始位置、遞增緩存指針、利用s2n()宏向內(nèi)存中寫入16-bit payload長度并以2字節(jié)為單位遞增緩存指針,而后將payload的字節(jié)數(shù)量從接收到的有效負載中復制到用于回復的有效負載發(fā)送內(nèi)容中。 

請注意,payload由攻擊者全面控制,而且64KB也足以容納大量信息。假如由攻擊者發(fā)送的HeartbeatMessage只擁有1字節(jié)有效負載,而且其payload length又與實際情況不符,那么以上代碼中的memcpy()就會在接收到的HeartbeatMessage之外從起始處讀取受害者的內(nèi)存進程。

而這部分內(nèi)存很可能包含其它意義重大的信息,例如密碼內(nèi)容或者來自其它客戶端的加密信息等。

事實上,盡管我們了解到雅虎已經(jīng)對其系統(tǒng)進行了修復,但該公司仍然發(fā)布了如下建議:

請不要登陸雅虎網(wǎng)站。目前OpenSSL漏洞Heartbleed允許攻擊者提取用戶名以及簡單密碼信息!

— Mark Loman (@markloman),2014年4月8號

修復手段

OpenSSL 1.0.1g中的補丁從本質(zhì)上講就是一項邊界檢查,旨在利用SSL3結構(s3->rrec)中的正確長度記錄描述輸入的HeartbeatMessage。

Heartbleed: OpenSSL密碼與加密密鑰泄露漏洞剖析

OpenSSL是在2011年12月31號星期六午夜期間耗時61分鐘完成TLS Heartbeat項目源代碼提交工作的。如今我們所承受的各種威脅可謂一場姍姍來遲的安全風暴。

責任編輯:藍雨淚 來源: ZDNet
相關推薦

2014-06-04 09:34:36

2012-10-24 16:34:46

2023-10-27 07:20:11

2022-08-04 14:28:12

Github安全

2019-03-23 12:35:35

GitHub代碼開發(fā)者

2021-10-15 13:00:55

LinuxSeahorse加密密鑰

2019-05-06 10:21:09

加密密鑰云安全云計算

2024-01-19 07:49:27

2019-03-12 11:29:04

加密云安全密鑰

2014-07-29 09:25:39

加密密鑰管理云加密

2023-08-10 23:40:15

2022-06-28 10:58:48

協(xié)議通信加密

2015-08-11 09:30:51

2021-11-16 09:00:00

安全加密密鑰工具

2015-11-02 09:31:32

2014-04-09 10:27:29

2014-04-10 18:31:40

2014-07-09 14:39:09

2012-08-29 09:28:43

2014-12-08 10:41:05

亞馬遜AWS服務加密密鑰管理服務
點贊
收藏

51CTO技術棧公眾號