資安公司Nccgroup揭露了編號為CVE-2018-0495的ROHNP漏洞,該漏洞允許駭客恢復ECDSA或DSA私鑰,也就是說當加密函式庫進行TLS或SSH連線,以私鑰創建簽章時,會意外的透過記憶體快取洩漏部分關鍵資訊,駭客可以在收集數千個簽章流出的資訊後,就能恢復完整私鑰,整個過程不需要系統的管理員權限。許多加密函式庫皆受ROHNP漏洞影響,包括CryptLib、LibreSSL與OpenSSL等,使用者應盡速更新函式庫。

Nccgroup已經使用了最新版本的OpenSSL函式庫,完成了ROHNP漏洞的攻擊示範,透過記憶體快取旁路攻擊,在一分鐘以內就能恢復256位元的ECDSA私鑰。

ROHNP漏洞影響的情況端看應用程式部署的方式,不過,共通點都是需要駭客與受害者在同一部機器上執行程式碼,如此才能構成旁路攻擊。Nccgroup提到,最一般符合條件的情況便是在雲端環境,當駭客與受害者都被分配到相同的實體主機上,運行各自的虛擬機器時,駭客就能使用跨虛擬機器旁路攻擊,達成偷取SSH伺服器金鑰或是TLS私鑰的目的。

但這些工作對駭客來說很困難,首先駭客必須識別託管服務的雲端供應商,接著駭客必須在該供應商雲端服務不停地創建虛擬機器,直到其中一臺虛擬機器與受害者使用相同的實體機器,有了這個條件才能進行接下來的攻擊。第二步,駭客以TLS連接以觸發ECDSA簽名過程,並使用跨虛擬機器旁路監視洩漏出來的資訊,再使用這些資訊恢復網站私鑰。最後駭客才能攔截網站與用戶之間的流量,修改TLS封包的內容,並使用偷來的私鑰偽造簽章。

Nccgroup提到,要使用這個漏洞需要有非常專業的技術,即使完成上述流程中的任一步驟都不容易,不過,因為ECDSA或DSA的使用方式很多種,因此最危險的環節可能會在於有問題的實作模式,或是金鑰資訊被輕易地洩漏出去。Nccgroup認為,最具風險的或許是他們還沒有想到的旁路攻擊實務方面,因此ROHNP漏洞的衝擊有可能比想像還大。

ECDSA(Elliptic Curve Digital Signature Algorithm)與DSA(Digital Signature Algorithm)是常見的數位簽章演算法,從一般網站到加密貨幣都可以見到他們的身影。(EC)DSA使用私鑰與訊息混合後得到的簽章,來證明訊息是真實沒有經過竄改的,其混合的計算過程非常簡單,僅包含基本的數學運算。

在各加密函式庫中,ECDSA私鑰與訊息的混合公式就為s = k-1(m + r * x)(mod q),x是私鑰,m是訊息,k和r是長度與私鑰相同的隨機數字,組成了這個被稱為單向函數的式子。如果從已知推算未知,已有k會很容易算出r,但是只有r會很難算出k。簽章人使用x、m、k以及r來算出s,然後回傳r與s來當作簽章。

駭客已知m、r與s,目的是要算出x。而有問題的地方就發生在mod q,同餘加法運算並非固定時間,當結果大於q時會需要多一次減法計算。駭客透過收集到的簽章資料,比對以旁路攻擊監控同餘運算是否多一次減法計算時間,就能刪除不可能的數字組合,透過收集數千個簽章後,便能獲取剩下唯一的x私鑰值。

Nccgroup檢查了許多開源加密函式庫,有些僅ECDSA或DSA其中一種演算法存在問題,有部份則兩種都有。確定存在漏洞的函式庫有CryptLib(Both)、LibreSSL(Both)、Mozilla NSS(Both)、Botan(ECDSA)、OpenSSL(ECDSA)、WolfCrypt(ECDSA)、Libgcrypt(ECDSA)、LibTomCrypt(ECDSA)、LibSunEC(ECDSA)、MatrixSSL(ECDSA)與BoringSSL(DSA)。

Nccgroup提到,這個漏洞揭露屬於非典型情況,因為任何一個函式庫單獨發布安全補丁,都會透漏其漏洞細節,因此在6月13日這個漏洞訊息公開的同時,各加密函式庫的更新也都才同時釋出。


Advertisement

更多 iThome相關內容