CWE

常见的弱点枚举

一个由社区开发的软件&硬件缺陷类型的列表

新CWE吗?点击这里!
CWE最重要的硬件的弱点
CWE最危险的弱点
>CWE列表> CWE -个人字典定义(4.12)
ID

cwe - 759:使用单向散列没有盐

弱点ID: 759
抽象:变体
结构:简单的
视图定制的信息:
的用户感兴趣的更多的概念方面的一个弱点。例如:教育者,技术作家和项目/项目经理。 用户关心的实际应用和细节的本质弱点以及如何预防它的发生。例子:工具开发人员、安全人员、pen-testers事件反应分析师。 对于用户映射一个问题CWE / CAPEC id,即。,找到最合适的CWE为一个特定的问题(例如,CVE记录)。例如:工具开发人员、安全人员。 用户希望看到所有可用的信息CWE / CAPEC条目。 为用户谁想要定制显示细节。
×

编辑自定义过滤器


+描述
产品采用单向加密散列在一个输入,不应是可逆的,如一个密码,但是产品还没有使用盐,作为输入的一部分。
+扩展描述

这使得攻击者更容易pre-compute散列值使用字典攻击技术,如彩虹表。

值得注意的是,尽管共同的看法,好盐的使用一个散列不充分增加攻击者是谁的努力针对个人密码,或者有大量的计算资源可用,如与云服务或专业,廉价的硬件。脱机密码破解仍然可以有效如果哈希函数不是昂贵的计算;很多加密功能设计高效、可以使用大量的计算资源,容易受到攻击,即使哈希密码地强烈。使用盐仅略有增加的计算要求攻击者与其他策略相比,如自适应哈希函数。看到cwe - 916为更多的细节。

+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 916年 使用的密码哈希计算努力不足
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1013年 加密数据
+背景细节
在密码学中,盐是指一些随机的数据散列前一个输入词典攻击更困难。
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现 实现:造成这一弱点在建筑安全策略的实施。
+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
访问控制

技术的影响:旁路保护机制;获得特权或假设的身份

如果攻击者可以访问散列,然后缺少盐更容易进行强力攻击使用技术,如彩虹表。
+示范例子

示例1

在这两个例子中,一个用户是否登录,如果他们给密码匹配存储密码:

(坏的代码)
例如语言:C
unsigned char * check_passwd (char *明文){
ctext = simple_digest (sha1,明文,strlen(明文),…);
/ /登录如果哈希匹配存储散列
如果(等于(ctext secret_password ())) {
login_user ();
}
}
(坏的代码)
例如语言:Java
字符串明文=新的字符串(plainTextIn);
MessageDigest ence = MessageDigest.getInstance (SHA);
encer.update (plainTextIn);
byte[]消化= password.digest ();
/ /登录如果哈希匹配存储散列
如果(平等(消化,secret_password ())) {
login_user ();
}

这段代码只依赖一个密码机制(cwe - 309)使用只有一个因素身份验证(cwe - 308)。如果攻击者可以窃取或猜测用户的密码,他们给出了完全访问帐户。注意这段代码还使用sha - 1,这是一个弱散列(cwe - 328)。它还不使用盐(cwe - 759)。

示例2

在这个例子中,一个新的用户提供了一个新的用户名和密码创建一个帐户。程序散列新用户的密码,然后将其存储在数据库中。

(坏的代码)
例如语言:Python
def storePassword(用户名、密码):
切肉机= hashlib.new (md5)
hasher.update(密码)
hashedPassword = hasher.digest ()

错误# UpdateUserLogin成功执行,将返回True
返回updateUserLogin(用户名、hashedPassword)

虽然是好的为了避免存储明文密码,程序不提供一个盐散列函数,从而增加攻击者能够逆转的机会哈希和发现原始密码,如果数据库损坏。

解决这个很简单,提供一个盐的哈希函数初始化:

(好的代码)
例如语言:Python
def storePassword(用户名、密码):
切肉机= hashlib.new (md5, b 'SaltGoesHere”)
hasher.update(密码)
hashedPassword = hasher.digest ()

错误# UpdateUserLogin成功执行,将返回True
返回updateUserLogin(用户名、hashedPassword)

注意,不管使用的盐,md5哈希不再被认为是安全的,所以这个例子还是展品cwe - 327

+观察到的例子
参考 描述
路由器不使用盐散列,使其更容易破解的密码。
路由器不使用盐散列,使其更容易破解的密码。
+潜在的缓解措施

阶段:体系结构和设计

使用一个自适应哈希函数,可以配置为改变计算的工作量需要计算散列,如迭代的数量(“拉伸”)或所需的内存。哈希函数自动执行盐。这些函数可以显著增加蛮力攻击的开销相比intentionally-fast MD5等功能。例如,彩虹表攻击会变得不可行,由于高计算开销。最后,由于计算能力变得更快和更便宜的随着时间的推移,这项技术可以改造增加工作量没有迫使整个更换使用的算法。

一些哈希函数的一个或多个这些所需的属性包括bcrypt [ref - 291],scrypt [ref - 292],PBKDF2 [ref - 293]。虽然有积极讨论哪些是最有效的,他们都是比使用盐很少用哈希函数计算开销。

注意,使用这些函数可以对性能有影响,所以他们需要特殊考虑避免拒绝服务攻击。然而,他们的可配置性提供了更好的控制有多少CPU和内存使用,所以它可以调节以适应环境的需要。

有效性:高

阶段:体系结构和设计

如果技术需要额外的计算工作不能实现,然后为每个密码处理,生成一个新的随机盐使用强大的随机数发生器和不可预知的种子。加入盐的明文密码散列前。当散列存储,存储盐。不要使用相同的盐为每一个密码。

有效性:有限

注意:请注意盐的工作量不会减少目标攻击一个人散列(比如一个关键人的密码),一般来说他们更有效比其他哈希技术,如增加计算时间和内存开销。没有内置工作负载,现代攻击可以计算大量的散列,甚至耗尽整个空间的所有可能的密码,在很短的时间内,使用大规模并行计算和GPU, ASIC或FPGA硬件。

阶段:实施;架构和设计

当使用有技术,正确地使用它们。不偷工减料,跳过资源密集型步骤(cwe - 325)。这些步骤通常是必不可少的预防常见的攻击。
+检测方法

自动静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 字节码的弱点分析,包括反汇编程序+源代码弱点分析
  • 二进制弱点分析,包括反汇编程序+源代码弱点分析

有效性:飙升部分

人工静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 二进制/字节码反汇编程序,然后使用手动分析缺陷和异常

有效性:飙升部分

人工静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 关注人工抽查,手动分析来源
  • 手工源代码审查(不检查)

有效性:高

自动静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 源代码缺陷分析仪
  • Context-configured源代码分析器

有效性:高

自动静态分析

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 配置检查

有效性:飙升部分

体系结构或设计审查

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 正式的方法/ Correct-By-Construction
成本有效的部分报道:
  • 检验(IEEE 1028标准)(适用于需求、设计、源代码,等等)。

有效性:高

+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 816年 OWASP十大2010类别A7 -不安全的加密存储
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 866年 2011年前25 -多孔防御
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 958年 SFP二级集群:破碎的加密
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1346年 OWASP十大2021类别A02:2021 -密码失败
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1402年 综合分类:加密
+脆弱性映射笔记

用法:允许

(CWE ID可以用来映射到现实世界的漏洞)

原因:可接受的使用

理由是:

这个CWE条目是变体的抽象级别,这是一个首选的抽象级别映射到漏洞的根本原因。

评论:

仔细阅读这两个名称和描述,以确保此映射是一个适当的配合。不要试图“力”映射到底层基础/变体只是遵守这首选的抽象级别。
+引用
(ref - 291)约翰尼·雪莱。“bcrypt”。<http://bcrypt.sourceforge.net/>。
科林·珀西瓦尔(ref - 292)。“Tarsnap——scrypt密钥推导函数和加密效用”。<http://www.tarsnap.com/scrypt.html>。
ref - 293 b . Kaliski。“RFC2898——PKCS # 5:密码的加密规范2.0版本”。5.2 PBKDF2。2000年。<https://www.rfc-editor.org/rfc/rfc2898>。URL验证:2023-04-07
黑尔(ref - 294)结尾。“如何安全地存储密码”。2010-01-31。<https://codahale.com/how-to-safely-store-a-password/>。URL验证:2023-04-07
布莱恩·克雷布斯(ref - 295)。“企业如何加强密码安全”(托马斯·h·“)采访时。2012-06-11。<https://krebsonsecurity.com/2012/06/how-companies-can-beef-up-password-security/>。URL验证:2023-04-07
(ref - 296)太阳能设计师。“密码安全:过去、现在、未来”。2012年。<https://www.openwall.com/presentations/PHDays2012-Password-Security/>。URL验证:2023-04-07
(ref - 297)特洛伊打猎。“我们的密码哈希没穿衣服”。2012-06-26。<https://www.troyhunt.com/our-password-hashing-has-no-clothes/>。URL验证:2023-04-07
(ref - 298) Joshbw。“我们真的应该使用bcrypt / scrypt ?”。2012-06-08。<https://web.archive.org/web/20120629144851/http: / /www.analyticalengine.net/2012/06/should-we-really-use-bcryptscrypt/>。URL验证:2023-04-07
OWASP (ref - 631)。“密码存储备忘单”。<https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html>。URL验证:2023-04-07
[ref - 632]托马斯“。“足够的彩虹表:你需要知道的关于安全的密码方案”。2007-09-10。<http://hashphp.org/hashing.html>。URL验证:2023-04-07
(ref - 633)罗伯特·格雷厄姆。“规范”的重要性。2009-02-02。<https://blog.erratasec.com/2009/02/importance-of-being-canonical.html .ZCbyY7LMJPY>。URL验证:2023-04-07
詹姆斯McGlinn [ref - 634]。“密码散列”。<https://privacyaustralia.net/phpsec/articles/password-hashing/>。URL验证:2023-04-07
杰夫·阿特伍德(ref - 635)。“彩虹散列开裂”。2007-09-08。<https://blog.codinghorror.com/rainbow-hash-cracking/>。URL验证:2023-04-07
杰夫·阿特伍德(ref - 636)。“速度哈希”。2012-04-06。<https://blog.codinghorror.com/speed-hashing/>。URL验证:2023-04-07
(ref - 637)“彩虹表”。维基百科。2009-03-03。<https://en.wikipedia.org/wiki/Rainbow_table>。URL验证:2023-04-07
[REF-7]大卫迈克尔·霍华德和勒布朗。编写安全代码。第9章,302页“创建一个咸哈希”。第二版。微软出版社。2002-12-04。<https://www.microsoftpressstore.com/store/writing -安全-代码- 9780735617223>。
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第二章,“盐价值观”,页46。1版。艾迪生卫斯理》2006。
+内容的历史
+提交
提交日期 提交者 组织
2009-03-03
(CWE 1.3, 2009-03-10)
CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2009-10-29 CWE内容团队 主教法冠
更新的关系
2010-02-16 CWE内容团队 主教法冠
更新的引用
2011-03-29 CWE内容团队 主教法冠
更新Observed_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences、Demonstrative_Examples Potential_Mitigations Related_Attack_Patterns,关系
2011-09-13 CWE内容团队 主教法冠
更新Potential_Mitigations、引用关系
2012-05-11 CWE内容团队 主教法冠
更新引用Related_Attack_Patterns、人际关系
2012-10-30 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations,引用
2013-02-21 CWE内容团队 主教法冠
更新描述,Potential_Mitigations、引用关系类型
2014-02-18 CWE内容团队 主教法冠
更新Potential_Mitigations,引用
2014-07-30 CWE内容团队 主教法冠
更新Detection_Factors、人际关系
2017-01-19 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Modes_of_Introduction、引用关系
2018-03-27 CWE内容团队 主教法冠
更新的引用
2019-06-20 CWE内容团队 主教法冠
更新的类型
2020-02-24 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples
2021-10-28 CWE内容团队 主教法冠
更新的关系
2023-01-31 CWE内容团队 主教法冠
更新描述
2023-04-27 CWE内容团队 主教法冠
更新引用关系
2023-06-29 CWE内容团队 主教法冠
更新Mapping_Notes
页面最后更新:2023年6月29日