作者:gentle_zhou
原文链接:OWASP Top 10漏洞解析(2)- A2:Cryptographic Failures 加密机制失效-云社区-华为云
Web应用程序安全一直是一个重要的话题,它不但关系到网络用户的隐私,财产,而且关系着用户对程序的新人。随着Web应用程序功能持续增加,复杂性不断提高,这些程序也面临着越来越多的安全威胁和挑战。
为了帮助这些应用程序的开发团队和安全人员了解和防范这些威胁,提高安全意识,编写更安全的代码,OWASP(Open Web Application Security Project,开放式Web应用程序安全项目)发布了一份标准指南,称为OWASP Top 10。
这是一份关于Web应用程序安全风险的标准指南,它基于全球范围内的安全专家和数据提供者的共识,列出了当前最严重、最关键的10种Web应用程序安全风险,并提供了相应的防范措施和建议。OWASP Top10 每隔几年会更新一次(目前已经发布了六个版本,分别是2004年、2007年、2010年、2013年、2017年和2021年),最新的版本是在2021年发布的OWASP Top10:2021。
今天,就来为大家讲解其中的第二条缺陷:Cryptographic Failures加密机制失效,它从2017年版本的第3位上升到了当前第2位。

在之前的版本中,该类缺陷被称为“敏感数据泄漏”(Sensitive Data Exposure),这听上去更像是一种症状/结果而并非是缺陷根因。而在新版本里,则更聚焦于密码学相关的失效(或则说加密机制的缺乏),而这类失效则常常会导致敏感数据的泄漏。典型的CWE漏洞包括:CWE-259:使用了硬编码密码,CWE-327:使用了已被破坏或有风险的密码算法 和 CWE-331:不充分的熵(entropy,每条消息中包含的信息量)。
对于这类缺陷,用户需要首先决定数据在包括传输等一系列过程中的保护需求;举个例子,这里说的数据可以是密码,信用卡卡号,健康记录,个人信息,需要额外保护的商业秘密等,简单来说被隐私法所保护的数据,比如欧盟的GDPR,金融行业数据保护相关(比如PCI数据安全标准)。
对于数据,是否存在加密机制失效的缺陷,可以从这几方面去考虑:
最低程度,至少需要做到如下这些事情:
一个应用程序使用自动的数据库加密法来加密数据库中的信用卡号。然而,当检索这些数据时,它们会自动解密,从而让SQL注入漏洞有了可趁之机:会以明文形式获取到这些信用卡号。
一个网站没有使用或强制所有页面使用TLS,或者使用了弱加密。
一个攻击者可以监控网络流量(例如,在一个不安全的无线网络中),将连接从HTTPS降级到HTTP,拦截请求,并窃取用户的会话cookie。然后,攻击者可以重新使用这个cookie并劫持用户的(已认证的)会话,从而可以访问或修改用户的私有数据。除了上述情况,攻击者还可以修改所有传输的数据,例如,转账的收款人。
密码数据库使用不加盐或简单的哈希来存储每个人的密码。
一个文件在上传过程中有的漏洞允许攻击者获取密码数据库。所有不加盐的哈希都可以通过预先计算的哈希的彩虹表来暴露。由简单或快速哈希函数生成的哈希可能会被GPU破解,即使它们被加盐了。
1、https://owasp.org/Top10/A02_2021-Cryptographic_Failures/
体验华为云CodeArts Check 代码检查服务:代码检查CodeArts Check_精准定位_代码缺陷_安全检查_华为云