cwe - 1275:敏感饼干与不当SameSite属性
描述
SameSite属性没有设置敏感饼干,或一个不安全的使用价值。
扩展描述
SameSite属性控制如何跨域请求发送cookie。该属性有三个值:“松懈”,“严格的”或“没有”。如果使用“没有”值,一个网站可能会创建一个跨域POST HTTP请求到另一个网站,和浏览器自动添加这个请求cookie。这可能会导致跨站请求伪造(CSRF)攻击如果没有额外的保护(如Anti-CSRF令牌)。
的关系
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 |
请注意 |
实现 |
这个弱点时发生在实现编码器不正确设置SameSite属性。 |
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
保密 完整性 不可抵赖性 访问控制
|
如果网站不施加额外的防御CSRF攻击,无法使用“宽松”或“严格”的值可能会增加接触CSRF攻击的风险。完整性破坏的可能性很低,因为一个成功的攻击不仅依赖于一个不安全的SameSite属性。为了执行CSRF攻击必须达到的条件有很多,如缺乏CSRF的令牌,没有在网站上确认为敏感的行为,“简单”“内容类型”HTTP请求头和许多更多。 |
低 |
利用的可能性
示范例子
示例1
在这个例子中,一个cookie存储会话ID用于客户的互动网站。下面的代码片段建立一个新的饼干sessionID。
让sessionId = generateSessionId () 让cookieOptions ={域:' example.com '} 响应。饼干(sessionid, sessionid cookieOptions)
自从sameSite没有指定属性,cookie将与每个请求发送到网站由客户端。攻击者可以通过使用以下潜在执行CSRF攻击恶意页面:
< html >
<形式id =邪恶行动= = " http://local: 3002 / setEmail "方法" POST " >
< input type = "隐藏" name = " newEmail " value = " abc@example.com " / >
> < /形式
<脚本> evil.submit() < /脚本> < / html >
当客户机访问恶意网页,它提交的/ setEmail POST HTTP请求到脆弱的网站。因为浏览器自动添加的sessionid请求cookie,网站会自动执行“setEmail”行动代表客户端。
减轻风险,使用sessionid的饼干的sameSite属性设置为“严格”。
让sessionId = generateSessionId () 让cookieOptions ={域:“example.com”, sameSite:“严格”} 响应。饼干(sessionid, sessionid cookieOptions)
潜在的缓解措施
实施阶段:
设置SameSite属性敏感饼干的“宽松”或“严格”。这指示浏览器这个cookie只适用于同一域请求,它提供了一个良好的深度防御反对CSRF攻击。当“宽松”的价值在于使用,饼干也派出顶级跨域导航通过HTTP GET,头,选择,和跟踪方法,而不是其他HTTP方法更像是状态突变引起的副作用。
注意:虽然这缓解是有效保护饼干从浏览器的脚本引擎,第三方组件或插件可能有自己的引擎,允许访问饼干。攻击者也可以直接使用XMLHTTPResponse阅读标题和饼干。 |
会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
引用
|