SSL/TLS 漏洞“受戒禮”
一、漏洞分析
事件起因
2015年3月26日,國外數據安全公司Imperva的研究員Itsik Mantin在BLACK HAT ASIA 2015發表論文《Attacking SSL when using RC4》闡述了利用存在了13年之久的RC4漏洞——不變性弱密鑰(《Weakness in the Key Scheduling Algorithm of RC4》,FMS 發表於2001年)進行的攻擊,並命名為“受戒禮”攻擊(Bar Mitzvah Attack)。
直到2015年3月,還有約30%的網絡通信是由RC4進行保護的。通過“受戒禮”攻擊,攻擊者可以在特定環境下只通過嗅探監聽就可以還原采用RC4保護的加密信息中的純文本,導致賬戶、密碼、信用卡信息等重要敏感信息暴露,並且可以通過中間人(Man-in-the-middle)進行會話劫持。
攻擊方法和模式
攻擊者嗅探監聽大量的SSL鏈接,可以判斷第一個加密消息包含SSL的完成消息和HTTP請求,都是具有可預測的信息的。然后等待一個不變性弱密鑰的鏈接到來,當獲取到一個弱密鑰鏈接時候就可以提取出LBS。當弱密鑰使用的時候,明文和密鑰會進行異或,攻擊者可以看到生成的密文模式。
攻擊者同樣也進行DNS投毒,將所有的鏈接鏈接到一個惡意的主機,主機進行中間人攻擊,能夠有效地進行大量用戶的嗅探監聽和會話劫持。
漏洞原理和細節
根據《Attacking SSL when using RC4》中的闡述,漏洞的成因主要在於不變性弱密鑰是RC4密鑰中的一個L型的圖形,它一旦存在於RC4的密鑰中,在整個初始化的過程之中保持狀態轉換的完整性。這個完整的部分包括置換過程中的最低有效位,在由RPGA算法處理的時候,決定偽隨機輸出流的最低有效位。這些偏差的流字節和明文進行過異或,導致密文中會泄露重要明文信息。
二、安全檢測
本地檢測:(針對服務器,需要在linux服務器下安裝openssl)
$ openssl s_client IP:PORT -cipher RC4
如果能夠查看到證書信息,那么就是存在風險漏洞
如果顯示sslv3 alerthandshake failure,表示改服務器沒有這個漏洞。
三、修補方式
對於NGINX的修補
修改nginx配置文件中的 ssl_ciphers項
ssl_ciphers"ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on;
重新加載:
$sudo /etc/init.d/nginx reload
對於apache的修復
打開配置文件
$ sudo vi /etc/httpd/conf.d/ssl.conf
修改配置
SSLCipherSuite
HIGH:MEDIUM:!aNULL:!MD5;!RC4
$ sudo /etc/init.d/httpd restart
對於TOMCAT的修復
server.xml 中SSL connector加入以下內容:
SSLEnabled="true"sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"
tomcat例子:
<connector port="443"maxhttpheadersize="8192" address="127.0.0.1"enablelookups="false" disableuploadtimeout="true"acceptCount="100" scheme="https" secure="true"clientAuth="false" SSLEnabled="true"sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"keystoreFile="mydomain.key"
keystorePass="password"
truststoreFile="mytruststore.truststore"truststorePass="password"/>;
對於websphere的修復
1.登錄控制台--展開Security--點擊SSL certificate and key management--點擊右側SSL configurations--進入Quality of protection (QoP) settings
刪掉rc4相關算法
was修復后,還能掃描到漏洞.那么可能是IHS沒有關掉rc4,則需要對IBM HttpServer 修復
對於 IBM HttpServer 修復
配置文件默認路徑 /IBM/HttpServer/conf/httpd.conf
刪除配置以下rc4相關算法
# All of these must be removed to disable RC4
SSLCipherSpec SSL_RSA_WITH_RC4_128_SHA
SSLCipherSpec SSL_RSA_WITH_RC4_128_MD5
SSLCipherSpec 34
SSLCipherSpec 35
參考博文https://www.cnblogs.com/lsdb/p/7126399.html
詳細修復查看官網 https://www-01.ibm.com/support/docview.wss?uid=swg21701072