HackerNews 编译,转载请注明出处:
数百万网站表面采用现代安全协议,实则仍在代理链中降级至陈旧的HTTP/1.1协议。安全研究人员警告,黑客可利用该协议固有缺陷完全接管这些网站。
当用户访问网站时,其HTTP请求需经过反向代理、负载均衡器等组件转发至目标服务器。应用安全软件商PortSwigger发现,逾2400万网站在请求路径中仍使用“古老”的HTTP/1.1协议。黑客可通过请求走私(request smuggling)手段,将恶意代码植入合法用户请求以完全控制网站。
“HTTP/1.1存在致命且极易利用的缺陷——请求间边界极度脆弱。所有请求在底层TCP/TLS套接字上直接串联,既无分隔符又存在多种长度定义方式。攻击者可借此制造请求起始位置的严重歧义。”最新研究报告指出。更令人担忧的是,多数主流云服务商内部仍默认使用HTTP/1.1。即便Google或Cloudflare的管理员也需手动配置才能实现全链路HTTP/2。Nginx、Akamai、CloudFront和Fastly等软件尚未支持HTTP/2上游连接。
PortSwigger研究总监詹姆斯·凯特尔指出,该漏洞波及多数成熟且注重安全的机构。他在黑帽大会和DEF CON披露的协议缺陷已为其赢得超35万美元漏洞赏金。“若想建立安全网络,HTTP/1.1必须淘汰,”其强调,“单个恶意请求即可导致网站混淆响应归属,引发大规模敏感数据泄露,通常表现为用户被随机登录至他人账户。”
攻击者还可通过恶意JavaScript污染网站缓存,持久控制用户访问的每个页面,实现流量劫持、密码窃取或信用卡信息盗用等操作。研究人员曾两度利用请求走私技术攻破PayPal,窃取用户明文密码,仅此漏洞就获3.9万美元赏金。
攻击原理剖析
凯特尔解释,反向代理通常将不同用户请求通过共享连接池路由至后端服务器。只要攻击者在服务器链中发现“最微小的解析逻辑偏差”,即可引发去同步化(desync),将恶意载荷附加至其他用户请求中。“这导致攻击者请求与合法用户请求相互混杂。”
请求分隔缺陷是该协议的“致命伤”。HTTP/1.1作为古老的文本协议,具有宽松规范与数千种实现方式,寻找解析差异点并非难事。“此类攻击利用两个服务器(通常为前端代理与后端服务器)对同一请求的解析差异,使攻击者能将恶意请求’走私’至后端服务器,进而危害其他应用用户。”
例如,HTTP请求可同时包含定义字节总量的”Content-Length”标头,以及指示分块传输的“Transfer-Encoding: chunked”标头。不同服务器对同一请求的解析结果可能截然不同。攻击者通过构造含矛盾标头的畸形请求,使一台服务器认为请求已结束,而另一台仍等待更多数据,从而将恶意代码预置到合法用户请求前。
凯特尔认为该协议缺陷无法简单修补:“时间证明我们无法通过补丁拯救HTTP/1.1——更多漏洞正在路上。”虽然无代理环节时HTTP/1.1仍可安全使用,但现实场景极少满足此条件。其敦促企业升级至HTTP/2上游连接,该协议通过明确请求边界使去同步漏洞大幅减少。若无法升级,管理员需严格配置服务器以验证并拒绝歧义请求,同时定期扫描漏洞。研究人员已开源自动化检测工具HTTP Request Smuggler v3.0,可探测多种高级去同步攻击技术。
消息来源: cybernews;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文
