Entry № 160
缓存投毒
缓存投毒 是什么?
缓存投毒将恶意响应保存在共享缓存中,使后续用户收到由攻击者控制内容的攻击。
缓存投毒利用 CDN、反向代理、浏览器或 DNS 解析器等缓存层,使其持久化攻击者控制的内容。Web 缓存投毒通常滥用未参与缓存键计算的输入(unkeyed input):某个头部或参数影响了响应但未纳入缓存键,从而把被投毒的响应分发给后续访问者。变种包括 DNS 缓存投毒、应用层缓存投毒以及缓存欺骗。影响范围从篡改与 XSS 分发到凭据窃取与身份验证绕过。防御措施包括将相关输入纳入缓存键、在边缘对请求做归一化、限制可缓存的内容类型,并审计 Vary 与 Cache-Control 头。
● 示例
- 01
通过发送 X-Forwarded-Host 让应用将其反射到 <script> 标签,从而污染 CDN。
- 02
缓存带有攻击者控制的 Location 字段的 302 跳转,并发给所有访客。
● 常见问题
缓存投毒 是什么?
将恶意响应保存在共享缓存中,使后续用户收到由攻击者控制内容的攻击。 它属于网络安全的 漏洞 分类。
缓存投毒 是什么意思?
将恶意响应保存在共享缓存中,使后续用户收到由攻击者控制内容的攻击。
如何防御 缓存投毒?
针对 缓存投毒 的防御通常结合技术控制与运营实践,详见上方完整定义。
缓存投毒 还有哪些其他名称?
常见的别称包括: Web 缓存投毒, 响应投毒。