程式碼安全測試第十六期:使用不安全的隨機值漏洞
一、什麼是使用不安全的隨機值?
軟體依賴於不可預測的數值使用了不充分的隨機數導致的安全性降低。
產生原因:計算機是一種按照既定演算法執行的機器,因此不可能產生真正的隨機性。偽隨機數生成器 (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-2776103/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用不安全的隨機值漏洞隨機
- 程式碼安全測試第六期:XPath注入漏洞
- 程式碼安全測試第十九期:用不安全的授權建立臨時檔案漏洞
- 程式碼安全測試第七期:不安全的反射漏洞缺陷反射
- 程式碼安全測試第十二期:LDAP注入漏洞LDA
- 程式碼安全測試第十五期:跨站指令碼漏洞指令碼
- 程式碼安全測試第十三期:敏感資訊的明文傳輸漏洞
- 程式碼安全測試第十八期:呼叫System.exit()存在安全漏洞
- 程式碼安全測試第十期:日誌偽造漏洞
- 程式碼安全測試第十一期:記憶體洩漏漏洞記憶體
- 程式碼安全測試第十四期:使用已破解或危險的加密演算法導致的漏洞加密演算法
- 程式碼安全測試第十七期:物件只定義了Equals和Hashcode方法之一的漏洞物件
- 程式碼安全測試第二十八期:未使用的變數缺陷漏洞變數
- 程式碼安全測試第五期:OS命令注入漏洞
- 程式碼安全測試第二十六期:透過錯誤訊息導致的資訊暴露
- 程式碼安全測試第四期:可逆的單向雜湊漏洞
- 程式碼安全測試第二期:URL重定向(跳轉)漏洞
- 安全漏洞問題1:不安全的加密儲存加密
- 程式碼安全測試第三期:路徑遍歷漏洞的防範與檢測
- 網站安全測試之APP滲透測試漏洞網站APP
- 程式碼安全測試第九期:Switch中省略了break語句導致的程式碼缺陷漏洞
- 程式碼安全測試第一期:什麼是SQL隱碼攻擊漏洞?SQL
- 程式碼安全測試第二十期:資源未關閉/釋放漏洞
- 程式碼安全測試第二十二期:HTTP響應拆分漏洞HTTP
- 網站滲透測試安全檢測漏洞網站
- 介面測試-使用mock生產隨機資料Mock隨機
- 介面測試-使用 mock 生產隨機資料Mock隨機
- 滲透測試之CSRF程式碼漏洞的檢測與加固方案
- 程式碼安全 兩種程式碼漏洞
- 瞭解下C# 不安全程式碼C#
- 程式碼安全測試第二十四期:數字型別的不正確轉換漏洞型別
- web應用安全測試之業務漏洞Web
- python 使用 random模組生成隨機測試資料Pythonrandom隨機
- 前端週刊第十六期前端
- 蘋果測試 Safari 對 HTTP 網站顯示不安全警告蘋果HTTP網站
- 網站漏洞測試php程式碼修復詳情網站PHP
- 網站滲透測試漏洞分析程式碼架構網站架構
- 程式碼安全測試第二十一期:從finally塊中return漏洞