HTTP请求走私是利用CDN、负载均衡器与后端服务器对HTTP协议解析不一致(如CL/TE头部优先级差异)实施的协议层攻击,可导致会话劫持、缓存污染等;防御需统一解析逻辑、禁用歧义头部组合、强化代理链路清洗与行为感知。

负载均衡本身不是攻击入口,但当它与CDN、WAF或后端服务器之间存在协议解析不一致、配置松散或信任过度时,就可能被利用来实施请求劫持——尤其是HTTP请求走私(HTTP Request Smuggling)。这类攻击不依赖应用层漏洞,而是钻基础设施链路的“缝隙”,让恶意请求绕过安全控制、混淆后端处理逻辑,最终达成会话劫持、缓存污染甚至内网探测等目的。
识别请求走私的典型信号
这不是传统意义上的流量洪泛,而是一种隐蔽性强、日志难追踪的协议级攻击。关键迹象包括:
- 后端日志中出现路径异常(如
/admin/../login、重复路径段、乱码前缀); - 同一客户端IP在极短时间内触发大量不同Host头或User-Agent的请求;
- WAF未告警,但部分用户反馈跳转错乱、登录态丢失或访问到非预期页面;
- CDN缓存命中率异常下降,或出现本不该被缓存的敏感接口被缓存。
堵住协议解析差异这个源头
CDN与负载均衡器对Content-Length和Transfer-Encoding头部的优先级判断不一致,是走私发生的温床。必须统一并强制规范处理逻辑:
- 在负载均衡器(如Nginx、HAProxy或云LB)上禁用
Transfer-Encoding: chunked的自动识别,改用显式白名单控制; - 配置严格头部校验:若同时存在
Content-Length和Transfer-Encoding,直接拒绝该请求(RFC 7230明确要求此类请求非法); - 关闭CDN或LB的“宽松解析”模式(如Nginx的
underscores_in_headers off、ignore_invalid_headers on需设为off); - 所有代理组件统一启用
http2并禁用HTTP/1.0回退,减少协议歧义空间。
强化代理链路的信任边界
不能默认信任上游(CDN)或下游(后端)发来的任何字段。要在负载均衡层做“清洗+加固”:
- 剥离或重写高风险头部:
Connection、Keep-Alive、Upgrade、TE,避免被用于构造走私链; - 强制标准化
Host头:只允许预设域名列表,其余一律拒收或重写为默认值; - 对
Cookie和Authorization等敏感头做格式校验(如Base64合法性、JWT结构检查),异常则丢弃整条请求; - 启用
X-Forwarded-For真实性校验,仅接受来自可信CDN IP段的转发头,防止伪造源IP配合走私绕过限流。
引入行为感知型防护机制
静态规则防不住动态走私,需叠加运行时行为分析:
- 监控单个连接生命周期内的请求数量与间隔:正常HTTP/1.1复用连接通常每秒1–5次请求,走私常伴随超长空闲+突发多请求;
- 建立TLS指纹与HTTP行为关联模型:同一TLS Client Hello若频繁切换
User-Agent或Accept头,标记为可疑; - 对高频
POST请求且Content-Length极小(如1–10字节)的连接,主动插入探针请求验证后端解析一致性; - 结合ZTNA策略,在负载均衡层完成设备健康度校验(如JARM指纹匹配、证书有效期验证),非合规终端禁止建立长连接。

















