一、漏洞簡介
CVE-2016-2183是OpenSSL庫中存在的一種TLS加密套件缺陷,由於該加密套件中使用了一個弱隨機數生成器,攻擊者可以利用此缺陷預測隨機數的值,從而成功繞過SSL/TLS連接的加密措施,實現中間人攻擊。該漏洞影響了OpenSSL 1.0.2版本之前的版本,而1.0.2版本及以後的版本中已經修復了該漏洞。
二、漏洞危害
由於該漏洞可以被用於中間人攻擊,攻擊者可以在不被發現的情況下竊取用戶的敏感信息。同時,該漏洞還可以被用於篡改HTTPS流量,因此攻擊者可以在不被用戶察覺的情況下修改網頁內容,欺騙用戶產生誤解或者進行更為危險的攻擊。
三、漏洞成因
該漏洞的成因在於OpenSSL庫中某些加密套件中使用了弱隨機數生成器。由於SSL/TLS連接需要隨機數,因此在TLS連接的過程中需要生成偽隨機數。而該加密套件中使用的隨機數生成器並非真正的隨機數,而是通過某種演算法對系統時間等量進行哈希,從而生成偽隨機數。
因此,由於該演算法的隨機性太弱,攻擊者可以預測偽隨機數的值,從而在SSL/TLS連接中使用預測到的偽隨機數進行加密操作,進而繞過了SSL/TLS連接的加密措施。攻擊者可以在中間人攻擊中,將自己偽裝成伺服器與客戶端進行通信,並通過預測隨機數的方式解密從客戶端傳來的加密數據,然後在攻擊者與真正的伺服器之間進行篡改並再次加密,發送給客戶端。因此,用戶有可能收到篡改後的數據,而不會意識到其中的問題。
四、漏洞修復
該漏洞已經被OpenSSL 1.0.2版本及以後的版本中進行了修復,修復方法是將加密套件中的隨機數生成器更換為安全的隨機數生成器。由於該漏洞主要影響OpenSSL 1.0.1及之前的版本,因此用戶需要及時更新自己的OpenSSL庫版本。
五、代碼示例
SSL_CTX* ctx = SSL_CTX_new(SSLv23_server_method()); SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1); SSL_CTX_set_cipher_list(ctx, "AES128-SHA"); SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF); SSL_CTX_set_tmp_rsa_callback(ctx, tmp_rsa_cb); SSL_CTX_set_tmp_dh_callback(ctx, tmp_dh_cb); SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, nullptr);
原創文章,作者:VAFE,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133738.html