今天读了篇论文Cookies Lack Integrity: Real-World Implications,里面有涉及到CDN相关的,提到了我们的服务,我就分析了下。

CDN服务商一般给客户提供一个专用域名,每个客户一个独立的子域名,子域名供不同的客户使用,假设某cdn服务商使用cname.cdn-site.com的不同子域名给不同客户提供服务:

A客户: 28d4198.cname.cdn-site.com
B客户:18f3191.cname.cdn-site.com

这两个域名正常情况下是给客户配置DNS解析,用户配置cname记录到这些域名的,不会直接使用这些域名 但是实际上,这些域名是可以直接访问的,假如A客户域名下托管了一段js,这段js执行如下代码:

document.cookie="name=test;Path=/;domain=.cdn-site.com";

此js代码设置了上级域的cookie,此是访问B客户的子域名就会带上name=test的cookie ,从而导致了污染。

目前的危害也不是很大, 也没有好的处理措施,效果原文中是这么说的:

This type of cookie injection attack could cause performance downgrade, bandwidth consumption, and even denial-of-service (DoS) if the amount of injected cookies exceeds the server’s header size limitation2

总结: CDN服务商拿来做cname的域名,绝对不要提供web服务。