已發現漏洞 (已在 CVE-2022-37454 下列出) en 加密哈希函數的實現 SHA-3 (Keccak),在 XKCP 包(擴展 Keccak 代碼包)中提供。
已識別的漏洞 可能導致緩衝區溢出 在處理形成的數據期間。 問題是由於 SHA-3 特定實現的代碼中的錯誤,而不是算法本身的漏洞。
埃爾帕克特 新科普 被吹捧為 SHA-3 的官方實現,在 Keccak 開發團隊的幫助下開發,並且 用作使用 SHA-3 的函數的基礎 在各種編程語言中(例如,XKCP 代碼用於 Python hashlib 模塊、Ruby digest-sha3 包和 PHP hash_* 函數)。
據發現問題的研究人員說, 可以利用該漏洞違反加密屬性 散列函數並找到第一個和第二個原像,以及確定衝突。
分段錯誤的原因是腳本會嘗試將更多的數據寫入緩衝區,而不是它可以容納的數據。 這種漏洞被稱為緩衝區溢出,OWASP 將其描述為“可能是最知名的軟件安全漏洞形式”。
代碼的一個小變種將導致無限循環:只需將 4294967295 替換為 4294967296。注意與 CVE-2019-8741 的相似性,這是我發現的另一個漏洞,影響了超過 1.400 億台 Apple 設備的固件,這也導致了無限循環。
還,宣布創建原型漏洞, que 允許在計算哈希時實現代碼執行 來自一個特別設計的文件。 該漏洞還可能用於攻擊使用 SHA-3 的數字簽名驗證算法(例如 Ed448)。 攻擊方法的詳細信息預計將在漏洞普遍消除後發布。
這種行為不應該發生在 Python 和 PHP 等“安全”語言中,因為它們會檢查所有讀寫操作是否在緩衝區範圍內。 但是,問題在於該漏洞存在於底層“不安全”的 C 語言中......
然而 目前尚不清楚該漏洞如何影響實踐中的現有應用程序,因為要在代碼中體現問題,必須使用對塊的循環哈希計算,並且處理的塊之一的大小必須約為 4 GB(至少 2^32 - 200 字節)。
當一次處理輸入數據時(沒有按部分順序計算哈希),問題不會出現。 作為一種更簡單的保護方法,建議限制一次哈希計算迭代中涉及的數據的最大大小。
易受攻擊的代碼於 2011 年 XNUMX 月發布,因此花了十多年的時間才發現此漏洞。 在加密實現中發現漏洞似乎很困難,即使它們在系統的整體安全性中起著關鍵作用。 (也許人們甚至沒有尋找這樣的漏洞,因為 XKCP 中的這個漏洞和上面提到的 Apple 漏洞都沒有資格獲得任何漏洞賞金計劃!)
脆弱性 是由於輸入數據的塊處理錯誤. 由於“int”類型的值比較不正確,確定了未完成數據的大小不正確,這導致隊列被寫出分配的緩衝區。
特別提到,在比較時,表達式«部分塊 + 實例-> byteIOIndex«,其中組件部分的值很大,導致整數溢出。 此外,代碼中的類型轉換“(unsigned int)(dataByteLen - i)”不正確,導致 64 位 size_t 類型的系統溢出。
終於 如果您有興趣了解更多信息,您可以在中查看詳細信息 以下鏈接。