漏洞概述
CVE-2022-24777 是一个影响 gRPC-Swift 服务端的高危漏洞,可导致**拒绝服务(Denial of Service)**攻击。攻击者能够通过触发一个“可达断言(reachable assertion)”使服务器崩溃,从而中断所有正在进行的连接和请求。
技术细节
- 漏洞组件:
github.com/grpc/grpc-swift(Swift语言实现) - 影响版本:所有低于 1.7.2 的版本
- 已修复版本:1.7.2 及更高版本
漏洞根源
漏洞源于处理 GOAWAY 帧 时的逻辑错误。GOAWAY 帧是 HTTP/2 协议中用于优雅关闭连接或通知错误的一种帧类型。gRPC-Swift 服务端在特定状态下处理此帧时,会触发一个本不应被触发的断言(assertion),导致进程立即终止。
攻击特征
- 攻击成本低:构造和发送触发漏洞所需的帧序列所需的资源极少。
- 影响严重性高:服务器会直接崩溃,丢弃所有飞行中的连接和请求,对服务可用性造成严重影响。
发现与修复
- 发现方式:该漏洞通过自动化模糊测试(fuzzing) 被发现。
- 修复措施:通过修正相关的状态处理代码解决了此问题。修复提交记录为 grpc/grpc-swift@858f977。
相关引用
- GitHub 安全公告:GHSA-r6ww-5963-7r95
- NVD 条目:https://nvd.nist.gov/vuln/detail/CVE-2022-24777
安全评分与分类
- CVSS v3.1 总体评分:7.5(高危)
- CVSS 向量:
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H- 攻击向量:网络
- 攻击复杂度:低
- 所需权限:无
- 用户交互:无
- 影响范围:未改变
- 机密性影响:无
- 完整性影响:无
- 可用性影响:高
- CWE 分类:CWE-617: 可达断言
- 产品包含一个可以被攻击者触发的
assert()或类似语句,导致应用程序退出或其他比必要情况更严重的行为。
- 产品包含一个可以被攻击者触发的
时间线
- 由 glbrntt 发布至 grpc/grpc-swift:2022年3月23日
- 由国家漏洞数据库发布:2022年3月25日
- 发布至 GitHub 咨询数据库:2023年6月9日
- GitHub 已审核:2023年6月9日
- 最后更新:2024年2月9日