cwe - 338:使用密码地弱伪随机数发生器(PRNG)
 描述
产品使用伪随机数生成器(PRNG)在一个安全上下文,但是PRNG的算法不是密码地强。
 扩展描述
当non-cryptographic PRNG加密中使用上下文,它可以公开加密某些类型的攻击。
伪随机数生成器(PRNG)通常不是用于密码学。有时一个平庸的随机性是充分的或可取的来源使用随机数的算法。弱发电机通常需要更少的处理能力和/或不使用宝贵的,有限的,熵源系统上。尽管这样prng可能非常有用的特性,这些特性可以用来打破密码学。
 的关系
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
 相关的视图”研究概念”(cwe - 1000)
自然 |
类型 |
ID |
的名字 |
ChildOf |
类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 |
330年 |
使用随机值不足 |
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
 简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 |
类型 |
ID |
的名字 |
ChildOf |
类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 |
330年 |
使用随机值不足 |
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
 相关视图”架构概念”(cwe - 1008)
自然 |
类型 |
ID |
的名字 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1013年 |
加密数据 |
 模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 |
请注意 |
架构和设计 |
|
实现 |
实现:造成这一弱点在建筑安全策略的实施。 |
 常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
访问控制
|
如果PRNG用于身份验证和授权,如会话ID或生成密钥的种子,那么攻击者可以很容易猜出ID或密钥和访问限制功能。 |
|
 利用的可能性
 示范例子
示例1
这两个示例使用一个统计PRNG播种与系统时钟的当前值生成一个随机数:
随机(随机随机= new System.currentTimeMillis ()); int accountID = random.nextInt ();
将srand (()); int randNum = rand ();
在这些示例中,使用的随机数函数rand()和Random.nextInt(),不考虑密码地强大。攻击者可以预测这些函数生成的随机数。注意,这些例子也展示cwe - 337(PRNG预测种子)。
 观察到的例子
参考 |
描述 |
|
加密产品使用rand()库函数来生成一个复苏的关键,使其更容易进行强力攻击。 |
|
随机数发生器可以反复生成相同的值。 |
|
Web应用程序生成可预测的会话id,允许会话劫持。 |
|
SSL图书馆使用弱随机数发生器,只有产生65536独特的钥匙。 |
 潜在的缓解措施
实施阶段:
使用功能或硬件,使用一个基于硬件的所有加密的随机数生成。这是推荐的解决方案。在Windows上使用CyptGenRandom或hw_rand()在Linux上。 |
 会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
 笔记
维护
CWE 4.5,相关术语随机性,熵,和可预测性可以相差很大。在开发人员和其他社区,使用“随机性”。然而,在密码学,“熵”是不同的,通常隐含的测量。没有常用的定义,甚至在标准文件和加密文件。CWE的未来版本将试图定义这些术语,如果有必要,区分他们的方式适合不同的社区,但不会减少可用性CWE的映射,理解,或者其他场景。
 分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
扣 |
|
|
Non-cryptographic PRNG |
CERT C安全编码 |
MSC30-C |
CWE更抽象 |
不要使用兰德()函数生成伪随机数 |
 引用
|
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪20:弱随机数。”Page 299. McGraw-Hill. 2010. |
|