Openssl多個安全補丁簡易分析危害及修復方案

wyzsk發表於2020-08-19
作者: livers · 2014/06/06 16:31

0x00 概述


心臟出血(CVE-2014-0160)後,Openssl 拿出專項資金進行了程式碼審計,於6月5號晚釋出了所發現的漏洞公告。

https://www.openssl.org/news/secadv_20140605.txt

總結如圖:

enter image description here

兩個高危漏洞 2014-0224中間人攻擊(截獲明文) 和2014-0195(DTLS 特定包程式碼執行) 3個拒絕服務 1個快取區注入 1個特殊漏洞

0x01 詳情


1. CVE-2014-0224 ChangeCipherSpec 注入

漏洞作者:KIKUCHI Masashi

漏洞原理

enter image description here

按照TLS的協議 在固定的時間順序內服務端傳送和接收ChangeCipherSpec(更改金鑰規格)資料,但是實際上openssl的實現:

服務端在傳送時是按照時間線的順序傳送,接收時卻沒有檢查順序,導致攻擊者可以構造偽造的ChangeCipherSpec(比如使用空的主金鑰),導致可以中間人攻擊解密兩端加密資訊。

更多詳情:http://ccsinjection.lepidum.co.jp/blog/2014-06-05/CCS-Injection-en/index.html

Poc

https://gist.github.com/rcvalle/71f4b027d61a78c42607 https://gist.github.com/rcvalle/585e12e4d5d3b658cd3d#

影響版本:

客戶端所有版本都存在。服務端已知的受影響版本OpenSSL 1.0.1 和1.0.2-beta1.

漏洞產生必須客戶端和服務端都使用了受影響版本的openssl。

2. CVE-2014-0195 DTLS碎包程式碼執行

漏洞作者:Jüri Aedla(Pwn2Own的火狐溢位執行獲勝者)

漏洞原理:

為了避免被IP分片,在DTLS存在一個資料包處理機制:

對所有大的UDP包進行分割,每個分割後的DTLS片段有三個標誌欄位:

總訊息長度
幀偏移量
幀大小長度

每個DTLS分包後的總訊息長度是固定不變的。

OPENSSL把每個收到的DTLS包判斷(幀大小長度<總的長度)就會把這段長度的資料複製到緩衝區。

Openssl出錯的地方就是:他認為所有DTLS包的總訊息長度都是固定不變的。並沒有檢查總訊息長度是否一致

所有攻擊者可構造第一個包:

總長度 10
分包長度 2

第二個包

總長度 1000
分包長度900

由於長度欄位佔用3個位元組,理論上可以寫入(2^8)^3資料,再利用上下文執行命令。

OPENSSL在後面做了一些長度的程式碼檢查但是前面已經執行。

More: http://h30499.www3.hp.com/t5/HP-Security-Research-Blog/ZDI-14-173-CVE-2014-0195-OpenSSL-DTLS-Fragment-Out-of-Bounds/ba-p/6501002#.U5FqnvmSyD4

受影響範圍:

只有使用到DTLS的應用才會受影響。
包括但不限於:
VPN(openVPN)
VoIP
WebRTC  按照我之前對某些應用的研究很多app使用了這個。包括某 使用者量最大的app 影片通訊基於這個做的。
SSL的LDAP
SNMPv3
基於SSL的影片 音訊

(你們只用zmap掃埠是不是太侷限了)

3. DOS

CVE-2014-0221&&CVE-2014-0198&&CVE-2010-5298

CVE-2014-0221

原理

傳送無效的DTLS握手包到DTLS客戶端,可令客戶端進入死迴圈導致拒絕服務。

影響

只對使用了DTLS的客戶端有影響。

CVE-2014-0198&&CVE-2010-5298

原理

ssl3_read_bytes功能在競爭條件下可以讓攻擊者在會話中注入資料或導致拒絕服務。

影響

只有在SSL_MODE_RELEASE_BUFFERS開啟的時候受影響(預設關閉)
但是有些服務商為了節省記憶體會開啟此選項。(比如Nginx,apache2.4.1,openvpn)
對DTLS/SSL2無影響。

CVE-2014-3470

匿名ECDH套件拒絕服務

OpenSSL TLS客戶端啟用了匿名ECDH密碼套件會受到拒絕服務攻擊。

0x02 修復


1. 升級到Openssl最新版

Openssl 0.9.8 za

https://www.openssl.org/source/openssl-0.9.8za.tar.gz

Openssl 1.0.0m

https://www.openssl.org/source/openssl-1.0.0m.tar.gz

Openssl 1.0.1h

https://www.openssl.org/source/openssl-1.0.1h.tar.gz

2. 升級完後 記得重啟是配置生效。

受影響的客戶端及時進行補丁更新。:)

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章