研究者發現,基于脆弱的32位簽名的證書驗證機制很容易受到不同站點相同簽名的碰撞影響。
卡巴斯基實驗室近期更新了反病毒產品,本次更新修補了致使用戶易受流量劫持的漏洞。
谷歌的漏洞研究員塔維斯·奧爾曼迪最早發現這一漏洞,該漏洞存在于卡巴斯基殺毒軟件用來檢測加密鏈接內的潛在威脅時所用的SSL/TLS流量檢測功能里。
和其他終端安全產品一樣,卡巴斯基會在電腦上安裝一個自簽名的CA根證書,并用它延伸出的“葉”證書進行攔截訪問,從而對用戶訪問的所有https可用的站點授予證書。這允許殺毒軟件對本地瀏覽器和遠程服務器之間的鏈接進行加/解密操作。
奧爾曼迪發現,每當卡巴斯基的反病毒產品生成一個攔截證書時,它會基于網站提供的原始證書序列號生成一個32位的密鑰并緩存這一對應關系。而這一機制使得當用戶再次訪問同一網站時,殺毒軟件會使用緩存的葉證書而不是再次生成新的證書。
但問題在于,這個32位的密鑰十分脆弱,攻擊者能通過碰撞而輕易偽造出一個匹配密鑰的假證書。
奧爾曼迪描述了一個攻擊可能的情形:“比如,一個叫馬洛里的黑客想要攔截你與mail.google.com的通信,而這一通信對應的密鑰是0xdeadbeef。那么首先,馬洛里向你發送mail.google.com的真實葉證書,卡巴斯基會驗證該證書并生成它自己的證書和密鑰。然后,馬洛里使發送另一個站點(比如attacker.com)同樣使用0xdeadbeef作為密鑰的檢驗證書,并形成碰撞。現在馬洛里成功將對mail.google.com的域名解析定向到了attacker.com,卡巴斯基開始使用緩存的證書,而攻擊者則完全控制了對mail.google.com的訪問。
這意味著攻擊者擁有了網絡通信中的中間人位置,從而把用戶對mail.google.com的訪問通過域名解析重定向到攻擊者所控制的流氓服務器。該服務器擁有并使用attacker.com這一域名的證書。
在正常情況下,瀏覽器本應當提示證書錯誤,因為attacker.com的證書和用戶要訪問的mail.google.com不匹配。然而,由于瀏覽器實際看到的不是原始證書,而是卡巴斯基殺毒軟件為mail.google.com生成的證書,因此它將不會報錯并建立連接。
32位的密鑰過于脆弱,這導致即使正常的瀏覽也可能發生證書碰撞。例如,奧爾曼迪發現卡巴斯基為news.ycombinator.com和autodiscover.manchesterct.gov的證書生成了相同的密鑰。
卡巴斯基實驗室的研究員指出,除了32位密鑰以外,還有一個額外的域名檢查機制。這會提高實施中間人攻擊的難度,但是攻擊仍有可能發生。
奧爾曼迪在一個周三公開質詢會上表示:“我們提出了仍可能發生的替代性攻擊方式,卡巴斯基很快解決了問題。”他說,卡巴斯基公司在12月28日就解決了這一漏洞。
安全廠商常宣稱,為了保護用戶免受惡意網絡服務器在內的各種威脅,必須實現SSL / TLS攔截。然而,攔截的啟用常常會反過來導致安全問題。因為,要想準確無誤地驗證證書很難,這必須經過瀏覽器廠商自身多年的完善。