2018年,谷歌發(fā)布了名為“Titan”的硬件產(chǎn)品,是基于FIDO技術(shù)規(guī)范打造的,用來保護支持該硬件的所有平臺賬號。Google Titan 這樣的硬件安全密鑰被認為是保護用戶賬戶預(yù)防釣魚和接管攻擊的最安全的方式。NinjaLab最新研究表明,擁有此類雙因子認證設(shè)備的攻擊者可以利用嵌入在Titan中芯片的電磁側(cè)信道可以對其進行克隆。
漏洞概述
該漏洞CVE編號為CVE-2021-3011,攻擊者利用該漏洞可以從Google Titan Key 或YubiKey這樣的FIDO U2F設(shè)備中提取與受害者賬號相關(guān)的加密密鑰或ECDSA私鑰,完全破壞雙因子認證的保護。換句話說,攻擊者可以在無需U2F設(shè)備或在受害者完全沒有察覺的情況下登入受害者應(yīng)用賬號。
在攻擊中,攻擊者克隆了受害者應(yīng)用賬號的U2F設(shè)備。克隆授予了其訪問應(yīng)用賬號的權(quán)限,除非合法用戶取消或廢除其雙因子認證憑證。
攻擊概述
整個克隆(密鑰恢復(fù)攻擊)需要滿足一些先決條件。首先,攻擊者需要獲取目標賬號的登陸用戶名和密碼,然后獲取Titan Security Key的訪問權(quán)限,通過定制的軟件從中提取與賬號相關(guān)的密鑰。
要克隆U2F密鑰,研究人員需要將設(shè)備的塑料保障移除,將其中的2個微控制器暴露出來——一個用來執(zhí)行加密操作的安全enclave (NXP A700X 芯片)和作為USB/NFC接口和認證微控制器之間路由器的通用芯片。然后通過ECDSA前面過程中NXP芯片散發(fā)的電磁輻射來利用側(cè)信道攻擊提取出ECDSA加密密鑰。
該側(cè)信道攻擊是利用了計算機系統(tǒng)實現(xiàn)過程中泄露的信息,而非利用軟件漏洞。一般來說,側(cè)信道攻擊利用的信息有時序信息、電量消耗、電磁泄露、聲音信號等。
通過從6小時的U2F認證請求命令中獲取的6000條側(cè)信道信息,研究人員稱其利用機器學(xué)習模型成功恢復(fù)出了與FIDO U2F賬號相關(guān)聯(lián)的ECDSA私鑰。
漏洞影響
該漏洞影響以下產(chǎn)品:
· 谷歌Titan Security Key (所有版本);
· Yubico Yubikey Neo;
· Feitian FIDO NFC USB-A / K9;
· Feitian MultiPass FIDO / K13;
· Feitian ePass FIDO USB-C / K21;
· Feitian FIDO NFC USB-C / K40。
· 除了安全密鑰外,攻擊還可以在NXP JavaCard芯片上執(zhí)行,包括:
· NXP J3D081_M59_DF;
· NXP J3A081;
· NXP J2E081_M64;
· NXP J3D145_M59;
· NXP J3D081_M59;
· NXP J3E145_M64;
· NXP J3E081_M64_DF等。
總結(jié)
雖然研究人員從谷歌Titan Security Key中竊取了ECDSA私鑰,但使用Google Titan Security Key和其他的FIDO U2F雙因子認證token仍然是很安全的,因此雙因子認證比單一認證更加安全,而且此類側(cè)信道攻擊的成本和難度都非常高。用戶也可以選擇其他沒有發(fā)現(xiàn)漏洞的硬件安全密鑰產(chǎn)品。
完整技術(shù)報告參見:
https://ninjalab.io/wp-content/uploads/2021/01/a_side_journey_to_titan.pdf