用户密码暴露给第三方CDN的量化分析
1. 不同CDN提供商的密码暴露情况
在使用Cloudflare的网站中,将DNS提供商转移到Cloudflare的网站里,有63%会将用户密码暴露给Cloudflare;而使用Cloudflare CDN服务但未转移DNS提供商的网站,83%不会出现密码暴露问题。
对于Incapsula,高达66%的网站密码暴露率可能源于其提供的动态内容缓存服务。该服务会在短时间内缓存动态内容以提升网页加载性能,而其他CDN提供商并未启用此服务。使用Incapsula的网站可能会利用这一服务缓存包括登录响应在内的动态内容,从而导致密码暴露。
网站信任知名CDN提供商并采用其防御攻击是合理的,但这并不意味着用户也应信任CDN。从用户角度看,他们可能会担忧与第三方CDN共享私人数据的问题。此外,流行CDN还存在单点故障风险,恶意内部人员可能会泄露超过40%客户网站的用户密码,导致大规模用户数据泄露。
研究人员将这些发现告知了Cloudflare、Akamai和Fastly三家CDN提供商,他们均作出回应,承认密码暴露问题,并声称值得信赖,会遵循隐私政策保护客户数据。Akamai还解释,为给客户提供诸如WAF等保护,必须终止包括传输私人数据的TLS连接。
2. 不同网站类别的密码暴露分布
研究人员从Alexa Top Sites by Category收集网站类别数据,在12,451个启用CDN的网站中,2,010个可通过Alexa数据分类。由于政府、娱乐和家庭三类网站中启用CDN的网站少于20个,数据代表性不足,因此仅分析其余14个类别。
| 网站类别 | CDN使用情况 | 密码暴露比例 |
|---|---|---|
| 零售 | 大量使用,因需展示大量产品图片,CDN可加速图片传输 | 58% |
| 旅游 | - | 超40% |
| 健康 | - | 超40% |
| 金融 | - | 38% |
| 教育 | - | 密码暴露比例最低 |
从表格数据可知,零售网站从CDN中获益显著,但也最容易将密码暴露给CDN。此外,旅游、健康和金融网站的密码暴露比例也较高,而教育网站的密码暴露情况相对较好。
3. 现有应对措施分析
3.1 客户端加密与CDN绕过
部分网站采用客户端加密保护用户密码,如baidu.com、dropbox.com和chase.com通过源服务器分发公钥。但这种解决方案在网站中应用较少,在12,451个启用CDN的网站中,最多只有2,057个(16.5%)采用客户端密码加密,即“密码加密网站”。
研究人员还分析了网站排名与密码加密部署的关系,将50K网站分为100个区间,每个区间包含500个网站。结果显示,即使排名前1,500的网站,采用密码加密的比例也低于30%,不过相较于低排名网站,其比例相对较高。在低排名区间有一个异常高的比例,经手动检查发现,20个密码加密网站中有13个是tmall.com不同零售商的子域名,用户登录这些子域名网站时会被导向tmall.com,该网站采用了密码加密。
客户端加密作为初步防御措施,只能抵御被动攻击者,而大多数网站甚至无法防范被动攻击。若存在主动攻击者,CDN绕过可保护用户隐私,但会暴露源服务器IP地址,使服务器面临DDoS风险。目前,研究人员无法通过RDAP验证登录请求的目的地是否为源服务器,后续将进一步研究CDN绕过情况。
3.2 其他可能的应对措施
- 密码认证密钥交换(PAKE) :PAKE协议如SRP和OPAQUE可在登录请求中不暴露密码的情况下验证用户身份,即使CDN发起主动攻击,登录过程也被证明是安全的。但PAKE协议需要首次使用时建立信任(TOFU),即账户注册时需要安全通道。因此,PAKE适用于不允许在线注册的网络服务,如银行业。不过,网站几乎很少使用PAKE,原因可能是开发者难以理解和实现该协议,也可能是他们通常信任第三方CDN,未意识到密码暴露问题。
- OAuth :用户可使用Google账户等进行OAuth登录,由于谷歌和Facebook等科技巨头拥有自己的CDN,登录时用户密码不会暴露给第三方。但更多的OAuth使用可能会导致单点故障,若谷歌账户密码泄露,后果严重。
- 双因素认证 :虽不能防止密码暴露给第三方CDN,但可防止账户在密码泄露后被攻击。
这些应对措施主要针对用户密码保护,而网站上存储的用户私人数据在传输过程中也可能泄露给CDN,由于私人数据更为复杂多样,制定应对措施难度更大,后续将对私人数据泄露情况进行研究。
graph LR
A[密码暴露问题] --> B[现有应对措施]
B --> C[客户端加密]
B --> D[CDN绕过]
B --> E[PAKE]
B --> F[OAuth]
B --> G[双因素认证]
C --> H[抵御被动攻击]
D --> I[暴露源服务器IP]
E --> J[适用于特定服务]
F --> K[存在单点故障风险]
G --> L[防止账户被盗用]
以上是关于用户密码暴露给第三方CDN的详细分析,包括不同CDN提供商和网站类别的密码暴露情况,以及现有应对措施的效果和局限性。后续将继续探讨如何进一步解决这些问题,提升网络安全。
4. 总结与建议
4.1 现存问题总结
当前的网络生态中,用户密码暴露给第三方CDN的情况较为普遍,33.0%的启用CDN的网站在登录过程中会将用户密码暴露给CDN。零售网站在从CDN中获得显著益处的同时,也成为了密码暴露的重灾区。并且,客户端密码加密这一相对简单有效的防护手段,采用率却低于17%,这反映出当前网站对CDN过度信任,在面对攻击者利用CDN漏洞时,存在潜在的安全隐患。
4.2 各方建议
- 研究方向 :现有的CDN绕过和客户端加密等初步策略虽易部署,但存在漏洞;Keyless SSL、证书委托和mcTLS等技术在保护用户隐私方面效果不佳;基于SGX的解决方案虽能提供全面保护,但在CDN上部署困难;InviCloak虽能兼顾DDoS防御、隐私保护和即时部署,但会禁用CDN的Web应用防火墙(WAF)。因此,需要进一步研究更安全有效的解决方案,以构建更安全的互联网环境。
- 用户层面 :建议用户采用双因素认证,为账户提供额外保护,即使密码被盗取,也能降低账户被攻破的风险。而采用OAuth登录存在争议,虽然它能防止密码暴露,但可能导致单点故障。
- 网站层面 :网站应采取初步的防御措施,尽管这些措施存在一定漏洞,但能为用户隐私提供基本保护。在大多数情况下,可假设CDN为被动状态,此时客户端加密通常能提供足够的保护。
- CDN提供商层面 :CDN提供商应积极参与先进解决方案的开发和部署。例如,Cloudflare广泛使用Keyless SSL,表明CDN提供商在安全领域发挥着重要作用。CDN提供商可通过合作验证研究人员的想法,推动研究进展,还能引导客户部署防御机制。
4.3 未来研究方向
为了更深入地了解和解决用户密码及私人数据暴露给第三方CDN的问题,可从以下几个方向开展未来研究:
1.
改进CDN发现方法
:增强现有的CDN发现方法,以区分云服务提供商的托管服务和CDN服务。
2.
量化应对措施
:除客户端加密外,量化网站采用或可用的其他应对措施,如CDN绕过、OAuth、一次性密码、双因素认证等。
3.
测量私人数据泄漏
:测量网站中的私人数据泄漏情况,从用户角度理解TLS私钥共享的安全影响。
4.
用户和开发者调查
:对用户和网站开发者进行调查,了解他们对第三方CDN私人数据泄漏的认知情况,找出应对措施未广泛应用的原因。
5. 自动登录框架详情
为了进行相关研究,研究人员开发了自动登录框架,该框架对每个网页的HTML元素执行以下四个步骤:
5.1 过滤
框架到达页面后,首先过滤掉与登录无关的元素。具体操作如下:
- 选择包含“input”、“button”、“label”、“a”和“iframe”标签名的元素。
- 假设登录入口或登录表单应显示在网页顶部一个半视口高度的区域内,以减少元素候选数量,因为网站通常会将登录元素放置在用户容易访问的位置。
5.2 分类
为了将元素分类为登录入口、账户输入和密码输入三类,框架执行以下操作:
- 从HTML属性和元素的内部文本中提取字符串。
- 将字符串按驼峰大小写和非单词字符分割成单词。
- 计算一些关键词的频率,将其作为元素的特征。
- 根据这些特征和启发式规则对元素进行分类。研究人员在检查Alexa排名前100的网站后,手动选择了11个关键词并构建了分类规则。例如,登录入口应至少包含与“login”、“account”或“email”相关的一个关键词。为提高检测准确性,还应用了一些弃用关键词,如“user guide”和“policy”,若元素包含这些关键词则会被丢弃。
5.3 评分
由于一个网站通常只有一个登录入口,但框架可能会将多个元素分类为登录类,因此需要对元素进行评分。框架为每个元素提取除关键词外的其他特征,如内部文本的长度和元素的可见性,并根据手动构建的规则为每个元素分配分数。例如,在登录入口类中,可见且可交互的元素得分高于不可见或不可交互的元素。元素中关键词的频率也会影响分数。最后,框架根据分数对每个类中的元素进行排序。
5.4 提交凭证
如果框架在账户类或密码类中获取到任何输入元素,会用凭证填充每个输入元素,然后使用键盘信号“ENTER”提交伪造的凭证。如果未检测到输入字段,框架会点击得分最高的登录元素,并在新网页上重复上述步骤以检测输入字段。一旦框架认为发生了凭证提交,就会收集登录请求。
graph LR
A[网页HTML元素] --> B[过滤]
B --> C[分类]
C --> D[评分]
D --> E[提交凭证]
B -->|选择特定标签元素| F[减少候选元素]
C -->|关键词频率分类| G[分为三类元素]
D -->|多特征评分| H[元素排序]
E -->|有输入字段| I[填充并提交凭证]
E -->|无输入字段| J[点击登录元素重复流程]
该框架使用启发式规则检测登录入口和凭证输入字段,通过Selenium WebDriver控制Chrome实现。在对100个随机选择的网站进行测试时,其中52个网站启用了登录功能,框架成功向53个网站中的45个提交了凭证,召回率为84.9%;框架忽略了所有47个没有登录入口的网站,误报率为0%,整体检测准确率为(45 + 47) / 100 = 92.0%。与现有的自动登录框架相比,该框架能处理合法网站中常见但钓鱼网站中罕见的问题,如注册表单和弹出窗口造成的混淆,还具备在HTTP认证和reCAPTCHA存在的情况下操作的能力。
综上所述,用户密码暴露给第三方CDN是一个不容忽视的网络安全问题,需要各方共同努力,从研究、用户、网站和CDN提供商等多个层面采取措施,以提升网络安全性,保护用户的隐私和数据安全。
超级会员免费看
797

被折叠的 条评论
为什么被折叠?



