安全播报

防御吧作为15年知名老牌域名服务商,CNNIC和CANN双认证域名注册商,已经
持续为500多万个域名提供服务,包括智能DNS/自由转移/隐私保护等服务!
使用不安全的随机值漏洞
2021-06-19 20:07:44 【

一、什么是使用不安全的随机值?


软件依赖于不可预测的数值使用了不充分的随机数导致的安全性降低。


产生原因:计算机是一种按照既定算法运行的机器,因此不可能产生真正的随机性。伪随机数生成器 (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


】【打印关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇linux之kali 2020.2默认登录用户.. 下一篇Microsoft Defender ATP 现在可以..

立足首都,辐射全球,防御吧专注云防御及云计算服务15年!

联系我们

服务热线:13051179500 18910191973
企业QQ:1245940436
技术支持:010-56159998
E-Mail:xihedata.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解决防御与加速) 版权所有 增值许可:京B2-20140042号
售前咨询
公司总机:18910191973
24小时电话:010-56159998
投诉电话:18910191973
值班售后/技术支持
售后服务/财务
备案专员
紧急电话:18610088800