一組研究人員發(fā)現(xiàn)19年前的老舊加密攻擊現(xiàn)新變體“ROBOT”,在特定條件下能獲取加密私鑰,從而解密敏感HTTPS流量。
何為ROBOT
ROBOT的全稱為Return Of Bleichenbacher's Oracle Threat,即Bleichenbacher的 Oracle威脅回歸,從字面意思可以看出這種攻擊是Bleichenbacher攻擊的變種。
ROBOT攻擊:19年前的Bleichenbacher攻擊回歸-E安全
Bleichenbacher攻擊原理
1998年,貝爾實驗室(Bell Laboratories)的丹尼爾-布萊汀巴克爾在TLS服務(wù)器的操作機制中發(fā)現(xiàn)漏洞:當(dāng)服務(wù)器所有者選擇RSA算法加密服務(wù)器-客戶端的密鑰交換時,TLS服務(wù)器操作過程就會出現(xiàn)漏洞。
默認(rèn)情況下,在客戶端(瀏覽器)與服務(wù)器通過HTTPS開始通信之前,客戶端將會選擇將服務(wù)器公鑰加密的隨機會話密鑰。這個被加密的會話密鑰會被發(fā)送到服務(wù)器,服務(wù)器再使用私鑰解密消息,并保存會話密鑰副本,以便后續(xù)用來識別每個客戶端。但由于RSA算法并不安全,它還使用填充系統(tǒng)在加密會話密鑰的頂層添加額外的隨機字節(jié)。
布萊汀巴克爾發(fā)現(xiàn),如果會話密鑰通過RSA算法加密,而填充系統(tǒng)為PKCS #1 1.5,攻擊者可簡單將隨機會話密鑰發(fā)送給TLS服務(wù)器,并詢問是否有效,TLS服務(wù)器將會以簡單的“是”或“否”給出回應(yīng)。這意味著攻擊者可通過簡單的暴力破解攻擊猜測這個會話密鑰,并解密在TLS(HTTPS)服務(wù)器和客戶端(瀏覽器)之間交換的所有HTTPS消息。
TLS標(biāo)準(zhǔn)設(shè)計者并未替換不安全的RSA算法,而是決定添加應(yīng)對策略,加大暴力猜密過程的難度。這種修復(fù)方案不足以應(yīng)對不斷演進的Bleichenbacher攻擊,2003年、2012年、2014年、2015年和2016年不同的Bleichenbacher攻擊新變體出現(xiàn)。2016年的變體為DROWN漏洞攻擊,該攻擊影響了三分之一的HTTPS站點。
最新的變體ROBOT攻擊強勢現(xiàn)身
ROBOT攻擊也繞過了TLS開發(fā)人員1998年及之后部署的應(yīng)對策略。研究人員表示,TLS標(biāo)準(zhǔn)相當(dāng)復(fù)雜,許多服務(wù)器設(shè)備廠商未正確實現(xiàn)TLS標(biāo)準(zhǔn)第7.4.7.1節(jié)(RFC 5246)定義的原始Bleichenbacher攻擊應(yīng)對策略。
影響范圍
研究人員指出,思科、Citrix、F5和Radware等公司在某些配置下——即服務(wù)器所有者決定通過RSA算法加密TLS會話密鑰,并使用PKCS #1 1.5填充系統(tǒng)——易遭遇ROBOT攻擊。
ROBOT攻擊:19年前的Bleichenbacher攻擊回歸-E安全
研究人員表示,盡管是ROBOT老舊攻擊的變種,但包括Facebook和PayPal等27個Alexa排名前100的站點易遭遇ROBOT攻擊。而且研究人員在案例研究中加密了Facebook流量。其它排名靠后的站點也可能易遭受ROBOT攻擊。
檢測方法與應(yīng)對措施
研究人員已經(jīng)發(fā)布了一個Python腳本(https://github.com/robotattackorg/robot-detect),幫助服務(wù)器管理員掃描易受攻擊的主機,并在ROBOT攻擊網(wǎng)站首頁添加了ROBOT漏洞檢查程序(請戳!)。
補丁發(fā)布之前,研究人員和美國計算機應(yīng)急響應(yīng)小組(US-CERT)建議設(shè)備所有者禁用設(shè)備上的TLS會話密鑰RSA加密(也就是所謂的RSA加密模式)。這種方法實現(xiàn)起來不是問題,因為大多數(shù)設(shè)備還支持Elliptic Curve Diffie Hellman(ECDH)會話密鑰加密。
使用思科ACE產(chǎn)品的用戶應(yīng)注意
思科表示,受影響的思科ACE產(chǎn)品線幾年前已停產(chǎn),因此不會提供更新。然而目前仍有大量易受攻擊的主機仍在使用這些設(shè)備,因為這些設(shè)備不支持任何其它密碼套件,禁用RSA也無濟于事。
ROBOT與DROWN漏洞攻擊的影響力相當(dāng),因為攻擊者能記錄 HTTPS,并解密流量。另外值得注意的是:攻擊者通過 ROBOT攻擊獲取的并非TLS 服務(wù)器私鑰,而是每個客戶端連接的個人會話密鑰。這就意味著,攻擊者無法訪問通用解密密鑰,而只是訪問某個 HTTPS 會話的一次性密鑰。要解密大量 HTTPS 流量,ROBOT 攻擊也要投入大量計算能力。