CWE

普遍的弱点

社区开发的软件和硬件弱点类型清单

2021 CWE最重要的硬件弱点
CWE前25个最危险的弱点
>CWE列表> cwe-单个字典定义(4.10)
ID

CWE-784:在安全决定中依赖cookie而无需验证和完整性检查

弱点ID:784
抽象:变体
结构:简单的
查看自定义信息:
+描述
该产品使用依赖cookie的存在或值的保护机制,但不能正确确保cookie对关联用户有效。
+扩展描述
攻击者可以在浏览器内或通过浏览器外部实现客户端代码来轻松修改cookie。攻击者可以通过修改cookie包含预期值来绕过保护机制,例如授权和身份验证。
+关系
部分帮助该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
+与观点“研究概念”相关(CWE-1000)
自然 类型 ID 姓名
Childof 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 807 在安全决定中依赖不受信任的输入
Childof 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 565 依靠cookie而无需验证和完整性检查
部分帮助该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
+与“建筑概念”(CWE-1008)有关
自然 类型 ID 姓名
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 1012 交叉切割
+介绍模式
部分帮助引言的不同模式提供了有关如何以及何时引入这种弱点的信息。该阶段识别可能发生介绍的生命周期中的一个点,而音符提供了与给定阶段中引言有关的典型情况。
阶段 笔记
建筑和设计 遗漏:这种弱点是由于在架构和设计阶段缺少安全策略而引起的。
执行
+适用的平台
部分帮助该清单显示了可能出现的弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。

语言

班级:不是特定语言的(不确定的患病率)

技术

课程:基于Web的(通常很普遍)

+常见后果
部分帮助该表指定与弱点相关的不同个人后果。该范围确定了违反的应用程序安全区域,而影响描述了如果对手成功利用这一弱点,就会产生负面的技术影响。其可能性提供了有关预期相对于列表中其他后果的特定后果的可能性的信息。例如,可能会利用弱点来实现一定的影响,但很可能会利用它来实现不同的影响。
范围 影响 可能性
访问控制

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

使用cookie设置用户的特权是危险的。可以操纵饼干以声称高水平的授权,或声称已经成功进行了认证。
+利用的可能性
高的
+示例的例子

示例1

以下代码摘录读取了浏览器cookie的值,以确定用户的角色。

(不良代码)
示例语言:爪哇
cookie [] cookie = request.getCookies();
for(int i = 0; i cookie c = cookie [i];
if(c.getName()。等于(“角色”)){
userrole = c.getValue();
}
}

示例2

以下代码可以用于医疗记录申请。它通过检查是否设置了cookie来执行身份验证。

(不良代码)
示例语言:php
$ auth = $ _cookies ['authenticated'];
如果(!$ auth){
if(authenticateUser($ _ post ['user'],$ _post ['password'])==“成功”){
//保存cookie以在以后的回复中发送
setCookie(“身份验证”,“ 1”,time()+60*60*2);
}
别的 {
ShowLoginsCreen();
die(“ \ n”);
}
}
DisplayMedical Hishistory($ _ POST ['dateber_id']);

程序员预计将始终应用AuthenTicateUser()检查,并且只有在身份验证成功时才会设置“身份验证” cookie。程序员甚至勤奋地指定了cookie的2小时到期。

但是,攻击者可以将“身份验证的” cookie设置为非零值,例如1。攻击者绕过了身份验证。

示例3

在下面的示例中,从浏览器cookie读取身份验证标志,从而允许对用户状态数据的外部控制。

(不良代码)
示例语言:爪哇
cookie [] cookie = request.getCookies();
for(int i = 0; i cookie c = cookie [i];
if(c.getName()。等于(“ authenticated”)&& boolean.true.equals(c.getValue())){
身份验证= true;
}
}
+观察到的例子
参考 描述
攻击者可以通过将cookie设置为特定值来绕过身份验证。
攻击者可以通过将“ admin” cookie设置为1来绕过身份验证并获得管理特权。
内容管理系统允许通过将“登录” cookie设置为“确定”来允许管理特权。
电子约会应用程序允许通过将管理员cookie设置为1,允许管理员特权。
基于Web的电子邮件列表管理器允许攻击者通过将登录cookie设置为“管理员”来获得管理特权。
+潜在的缓解

阶段:建筑和设计

避免使用cookie数据作为安全相关的决策。

阶段:实施

如果要将其用于与安全有关的决策,请在cookie数据上执行彻底的输入验证(即服务器端验证)。

阶段:建筑和设计

添加完整性检查以检测篡改。

阶段:建筑和设计

保护关键的饼干免受重播攻击,因为跨站点脚本或其他攻击可能会使攻击者窃取强烈的加密饼干,该饼干也可以通过完整性检查。此缓解措施适用于仅在单个交易或会话中有效的cookie。通过执行超时,您可以限制攻击的范围。作为完整性检查的一部分,请使用不暴露于客户端的不可预测的服务器端值。
+会员资格
部分帮助此成员关系表显示了其他CWE类别和视图,将此弱点称为成员。该信息通常可用于理解弱点适合外部信息源的何处。
自然 类型 ID 姓名
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 1354 OWASP前十2021年A08:2021-软件和数据完整性失败
+笔记

维护

可能需要为此条目定义新的父母。该条目特定于Cookie,这反映了2008年和2009年在CVE中为基于Cookie的身份验证报告的大量漏洞。但是,其他类型的输入(例如参数或标题)也可以用于类似的身份验证或授权。。类似的问题(在研究观点下)包括CWE-247CWE-472
+参考
[Ref-706]史蒂夫·克里斯蒂。“不可原谅的漏洞”。2007-08-02。<http://cve.mitre.org/docs/docs-2007/unforgivable.pdf>。
[Ref-7] Michael Howard和David LeBlanc。“编写安全代码”。第13章,“ Cookie and Fields中的敏感数据”第435页。第二版。Microsoft Press。2002-12-04。<https://www.microsoftpressstore.com/store/writing-secure-code-9780735617223>。
+内容历史记录
+提交
提交日期 提交者 组织
2009-07-16 CWE内容团队 MITER
+修改
修改日期 修饰符 组织
2009-10-29 CWE内容团队 MITER
更新的关系
2010-02-16 CWE内容团队 MITER
更新了示范示例,参考,关系
2011-06-01 CWE内容团队 MITER
更新的common_cconsquences
2017-01-19 CWE内容团队 MITER
更新的关系
2017-11-08 CWE内容团队 MITER
更新的模式_OF_INTRODUCTION,参考,关系
2018-03-27 CWE内容团队 MITER
更新的引用
2020-02-24 CWE内容团队 MITER
更新了适用的_platforms,关系
2021-10-28 CWE内容团队 MITER
更新的关系
2023-01-31 CWE内容团队 MITER
更新的描述
提供更多信息 - 请选择其他过滤器。
页面最后更新:2023年1月31日