深度剖析gRPC-Swift拒绝服务漏洞:可达断言引发的崩溃

本文详细分析了CVE-2022-24777漏洞,该漏洞影响gRPC-Swift服务端,攻击者可通过发送特制GOAWAY帧触发可达断言,导致服务崩溃,造成拒绝服务攻击。漏洞由模糊测试发现,已在1.7.2版本修复。

漏洞概述

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日
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计