主要實作 SHA-3 演算法的函式庫中存在漏洞

XKCP 套件(擴充Keccak 程式碼套件)中提供的SHA-3 (Keccak) 加密雜湊函數的實作中發現了漏洞(CVE-2022-37454),該漏洞可能導致在處理某些資料時出現緩衝區溢出。格式化資料。 該問題是由 SHA-3 特定實現的程式碼中的錯誤引起的,而不是由演算法本身的漏洞引起的。 XKCP 套件被譽為 SHA-3 的官方實現,由 Keccak 開發團隊的投入開發,並用作各種程式語言中 SHA-3 函數的基礎(例如,XKCP 程式碼用於 Python hashlib 中)模組、Ruby 摘要包sha3和PHP hash_* 函數)。

據發現該問題的研究人員稱,他能夠利用該漏洞違反雜湊函數的加密屬性,找到第一和第二原像,並檢測衝突。 此外,還宣布將創建一個原型漏洞利用程序,允許在計算特殊設計檔案的雜湊值時執行程式碼。 該漏洞也可能用於攻擊使用 SHA-3(例如 Ed448)的數位簽章驗證演算法。 計劃稍後在漏洞全部消除後公佈攻擊方法的詳細資訊。

目前尚不清楚該漏洞對現有應用程式的實際影響有多大,因為要使問題在程式碼中顯現出來,必須使用區塊中的循環雜湊計算,並且處理後的區塊之一的大小必須約為4 GB(至少2^32 - 200 位元組)。 當一次處理輸入資料時(不按順序分部分計算雜湊值),問題不會出現。 作為最簡單的保護方法,提出限制哈希計算的一次迭代中涉及的資料的最大大小。

該漏洞是由輸入資料的區塊處理錯誤引起的。 由於與「int」類型的值進行不正確的比較,因此確定了掛起資料的不正確的大小,從而導致尾部被寫入到分配的緩衝區之外。 特別是,比較使用了「partialBlock + instance->byteIOIndex」的表達式,導致組成部分的值較大時出現整數溢位。 此外,程式碼中存在不正確的類型轉換“(unsigned int)(dataByteLen - i)”,這會導致 64 位元 size_t 類型的系統發生溢出。

導致溢出的範例程式碼: import hashlib h = hashlib.sha3_224() m1 = b"\x00" * 1; m2 = b"\x00" * 4294967295; h.update(m1) h.update(m2) print(h.hexdigest())

來源: opennet.ru

添加評論