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