Google雲端小組的開發人員已發現一個漏洞 (CVE-2019-9836) 在實施AMD SEV技術(安全加密虛擬化),這可能會破壞使用此技術保護的數據。
硬件級別的AMD SEVe提供虛擬機的透明內存加密, 在這裡,只有當前的來賓系統才能訪問解密的數據,而其餘的虛擬機和虛擬機管理程序在訪問此內存時會獲得加密的數據集。
發現的問題允許完全恢復PDH私鑰的內容 在主操作系統不可用的單個受保護PSP(AMD安全處理器)處理器級別上進行處理。
通過擁有PDH密鑰,攻擊者可以恢復會話密鑰和秘密序列 在創建虛擬機和訪問加密數據時指定。
該漏洞是由於橢圓曲線的實現存在缺陷 (ECC)用於加密,允許攻擊者恢復曲線的參數。
在執行受保護虛擬機的啟動命令期間,攻擊者可以發送與NIST建議參數不匹配的曲線參數,這將導致在乘法運算中使用低階點值與私鑰中的數據。
發現SEV的橢圓曲線(ECC)實施容易受到無效曲線攻擊。 在啟動啟動命令時,攻擊者可以發送
小順序ECC點不在官方NIST曲線中,它們迫使SEV固件將小順序點乘以標量固件的專用DH。
通過收集足夠的模塊化廢物,攻擊者可以恢復完整的PDH私鑰。 使用PDH,攻擊者可以恢復會話密鑰並啟動虛擬機的秘密。 這違反了SEV提供的機密性保證。
ECDH協議的安全性直接取決於生成的起點的順序 曲線的離散對數是非常複雜的任務。
在初始化AMD SEV環境的步驟之一中,將從用戶獲得的參數用於帶有私鑰的計算中。
本質上,執行兩點相乘的操作,其中之一對應於私鑰。
如果第二點是低階質數,則攻擊者可以通過列出所有可能的值來確定第一點的參數(冪取模運算中使用的模的位)。 可以使用殘差的中國定理將選定的質數片段進行組合以確定私鑰。
無效曲線攻擊是在不同曲線-不同參數(a,b)上執行ECDH點的乘法。 由於不使用參數“ b”,因此可以在較短的Weierstrass點求和函數中實現這一點。
在此曲線上,該點的初級階較小。 通過嘗試小階點的所有可能值,攻擊者可以檢索私有標量位(調製階數)。
使用SEV固件版本高達0.17 build 11的AMD EPYC服務器平台是一個問題。
AMD已經發布了固件更新,這增加了對使用與NIST曲線不匹配的點的鎖定。
同時,先前為PDH密鑰生成的證書仍然有效,從而使攻擊者可以針對從受漏洞保護的環境進行虛擬機遷移的攻擊。
還提到了對以前的易受攻擊版本的固件版本執行回滾攻擊的可能性,但是尚未確認此功能。