通过HTTP/2 HEADERS帧填充实现拒绝服务攻击
漏洞详情
使用swift-nio-http2的程序容易受到拒绝服务攻击,攻击者通过发送特制的HTTP/2帧实现。此攻击影响从1.0.0到1.19.2的所有swift-nio-http2版本,已在1.20.0及后续版本中修复。
漏洞成因
该漏洞由解析HTTP/2 HEADERS帧或HTTP/2 PUSH_PROMISE帧时的逻辑错误引起。当帧包含填充信息但没有任何其他数据时,此逻辑错误会导致帧大小计算混乱,进而引发解析错误。解析错误会立即导致整个进程崩溃。
攻击影响
- 攻击权限:发送带有HTTP/2填充信息的HEADERS帧或PUSH_PROMISE帧不需要特殊权限,任何HTTP/2连接对等方都可以发送此类帧
- 攻击范围:对于客户端,任何连接的服务器都可能发起此攻击;对于服务器,任何允许连接的客户端都可能发起此类攻击
- 攻击成本:攻击成本极低,发送特制帧所需资源很少
- 可用性影响:接收帧会立即导致服务器崩溃,丢弃所有进行中的连接,需要重启服务
风险分析
- 机密性与完整性:漏洞本身不存在机密性或完整性风险,因为swift-nio-http2在内存安全代码中解析帧,崩溃是安全的
- 潜在风险:突然的进程崩溃可能导致服务中的不变量违规,可能触发具有机密性或完整性风险的错误条件
缓解措施
如果能够阻止不受信任的对等方与服务通信,可以缓解此风险,但此缓解措施对许多服务不可用。
修复方案
通过重写解析代码来正确处理该条件已修复此问题。该问题由oss-fuzz的自动化模糊测试发现。
参考信息
- GHSA-q36x-r5x4-h4q6
- https://nvd.nist.gov/vuln/detail/CVE-2022-0618
- apple/swift-nio-http2@ac2a5af
技术指标
CVSS v3.1评分: 7.5(高危)
攻击向量: 网络
攻击复杂度: 低
所需权限: 无
用户交互: 无
影响范围: 未改变
机密性影响: 无
完整性影响: 无
可用性影响: 高
受影响版本: >=1.0.0, <1.20
修复版本: 1.20.0及以上
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码
