使用不安全的隨機值漏洞
本期主題為使用不安全的隨機值的相關介紹。
一、什麼是使用不安全的隨機值?
軟體依賴於不可預測的數值使用了不充分的隨機數導致的安全性降低。
產生原因:計算機是一種按照既定演算法執行的機器,因此不可能產生真正的隨機性。偽隨機數生成器 (PRNG) 近似於隨機演算法,始於一個能計算後續數值的種子。
PRNG包括兩種型別:統計學的PRNG和密碼學的PRNG。
統計學的PRNG可提供有用的統計資料,但其輸出結果很容易預測,因此資料流容易複製。若安全性取決於生成數值的不可預測性,則此型別不適用。密碼學的PRNG透過可產生較難預測的輸出結果來應對這一問題。為了使加密數值更為安全,必須使攻擊者根本無法、或極不可能將它與真實的隨機數加以區分。通常情況下,如果並未宣告PRNG演算法帶有加密保護,那麼它有可能就是一個統計學的PRNG,不應在對安全性要求較高的環境中使用。
Java API中提供了java.util.Random類實現PRNG(),該PRNG是可移植和可重複的,如果兩個java.util.Random類的例項使用相同的種子,會在所有Java實現中生成相同的數值序列。
二、使用不安全的隨機值漏洞構成條件有哪些?
滿足一以下條件,就構成了一個該型別的安全漏洞:
1、使用存在風險的產生隨機數方法;
2、使用不可信資料作為種子。
三、使用不安全的隨機值漏洞會造成哪些後果?
關鍵詞:旁路保護機制;獲得特權或假定身份;其他
可能會導致嚴重的漏洞如易於猜測的密碼、可預測的加密金鑰、會話劫持攻擊和 DNS 欺騙。
四、使用不安全的隨機值漏洞的防範和修補方法有哪些?
1、使用目前被業界專家認為較強的經過良好稽核的加密PRNG演算法,初始化隨機數生成器時使用具有足夠長度且不固定的種子。
2、在安全性要求較高的應用中,應使用更安全的隨機數生成器,如java.security.SecureRandom類。
Java 語言在 java.security.SecureRandom 中提供了一個加密 PRNG。就像 java.security 中其他以演算法為基礎的類那樣,SecureRandom 提供了與某個特定演算法集-合相關的包,該包可以獨立實現。當使用 SecureRandom.getInstance() 請求一個 SecureRandom 例項時,您可以申請實現某個特定的演算法。如果演算法可行,那麼您可以將它作為 SecureRandom 的物件使用。如果演算法不可行,或者您沒有為演算法明確特定的實現方法,那麼會由系統為您選擇 SecureRandom 的實現方法。
五、使用不安全的隨機值漏洞樣例:
用 悟空靜態程式碼檢測分析上述程式程式碼,則可以發現程式碼中存在著“使用不安全的隨機值” 導致的程式碼缺陷,如下圖:
使用不安全的隨機值在CWE中被編號為CWE-330: Use of Insufficiently Random Values
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2792354/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式碼安全測試第十六期:使用不安全的隨機值漏洞隨機
- Matlab 隨機生成兩個數值之間的隨機數Matlab隨機
- 弱隨機化種子漏洞科普隨機
- JavaScript生成隨機顏色值JavaScript隨機
- JavaScript可以設定最大值和最小值的隨機數JavaScript隨機
- Swift 中隨機數的使用Swift隨機
- 用不安全的授權建立臨時檔案漏洞
- 安全漏洞問題1:不安全的加密儲存加密
- C# 隨機數 Random 的使用C#隨機random
- 深度學習:隨機值不可思議的有效性深度學習隨機
- 替代者暫時沒有做到更好,LibreSSL的偽隨機生成器不安全隨機
- 使用Hive隨機抽樣Hive隨機
- iOS也不安全?高危漏洞威脅近半果粉!iOS
- My SQL不安全臨時檔案建立漏洞(轉)SQL
- [Z]Oracle 的隨機數、隨機日期和時間、隨機字串Oracle隨機字串
- 使用Math類生成隨機數隨機
- python random隨機模組使用Pythonrandom隨機
- 使用mkpasswd生成隨機密碼隨機密碼
- 京東商城現奇葩漏洞 可隨機進入他人賬戶隨機
- 程式碼安全測試第七期:不安全的反射漏洞缺陷反射
- WebGoat-8.2.2靶場之不安全的反序列化漏洞WebGo
- 隨機之美,隨機森林隨機森林
- AS使用Random函式建立隨機數random函式隨機
- powershell 生成隨機使用者資訊隨機
- [隨機數詳解]生成一個隨機數,生成指定範圍的隨機數及隨機陣列去重隨機陣列
- 三星被曝出現漏洞,手機會隨機傳送照片給別人隨機
- 策劃解讀:關於“暴擊”的誤解與數值的“偽隨機”隨機
- 明明的隨機數隨機
- 隨機生成十六進位制顏色值程式碼例項隨機
- IE不安全Mozilla不保險 駭客曝Firefox嚴重漏洞(轉)Firefox
- 如何從陣列中隨機取出幾個值組成新的陣列?陣列隨機
- python生成隨機數、隨機字串Python隨機字串
- Python如何隨機生成1到100的隨機數?Python隨機
- (轉)Oracle的隨機數、隨機日期和時間、隨機字串及造資料匿名過程Oracle隨機字串
- js隨機生成十六進位制顏色值程式碼例項JS隨機
- 計算機網路不安全因素計算機網路
- 實現一個炫酷的隨機標籤排列效果(顏色隨機,大小隨機,成菱形排列的列表)隨機
- 隨機森林的祕密隨機森林