使用不安全的隨機值漏洞
本期主題為使用不安全的隨機值的相關介紹。
一、什麼是使用不安全的隨機值?
軟體依賴於不可預測的數值使用了不充分的隨機數導致的安全性降低。
產生原因:計算機是一種按照既定演算法執行的機器,因此不可能產生真正的隨機性。偽隨機數生成器 (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隨機
- 用不安全的授權建立臨時檔案漏洞
- 深度學習:隨機值不可思議的有效性深度學習隨機
- WebGoat-8.2.2靶場之不安全的反序列化漏洞WebGo
- 使用Math類生成隨機數隨機
- 程式碼安全測試第七期:不安全的反射漏洞缺陷反射
- Python如何隨機生成1到100的隨機數?Python隨機
- 策劃解讀:關於“暴擊”的誤解與數值的“偽隨機”隨機
- python生成隨機數、隨機字串Python隨機字串
- 明明的隨機數隨機
- 如何從陣列中隨機取出幾個值組成新的陣列?陣列隨機
- Python隨機函式random使用詳解Python隨機函式random
- 三星被曝出現漏洞,手機會隨機傳送照片給別人隨機
- 使用jMeter構造大量併發的隨機HTTP請求JMeter隨機HTTP
- 隨手記 - Springboot Application Properties 值Spring BootAPP
- 實現一個炫酷的隨機標籤排列效果(顏色隨機,大小隨機,成菱形排列的列表)隨機
- 隨機森林的祕密隨機森林
- Linux Shell 生成隨機數和隨機字串Linux隨機字串
- 隨機數隨機
- 帝國CMS萬能標籤呼叫隨機文章的方法(按表隨機和按照本欄目隨機)隨機
- 000.【Web安全】你所使用的隨機數真的安全嗎?Web隨機
- C#怎麼從List集合中隨機取出其中一個值C#隨機
- 《劍與遠征》系統拆解:數值、策略與隨機性結合隨機
- Zerodium:Android 漏洞的利用價值首次超越了 iOSAndroidiOS
- Scrapy使用隨機User-Agent爬取網站隨機網站
- 使用神經網路生成抽象隨機藝術神經網路抽象隨機
- 隨機生成使用者資訊(號碼、名字)隨機
- 使用js動態新增連結隨機連結JS隨機
- 介面測試-使用 mock 生產隨機資料Mock隨機
- 介面測試-使用mock生產隨機資料Mock隨機
- 使用charles嗅探https請求,你的API並不安全HTTPAPI
- JavaScript隨機數的應用JavaScript隨機
- GoLang 中的隨機數 tipsGolang隨機
- 更安全的隨機數生成隨機