GitHub Advisoryadvisory · PyPI, RubyGems

GHSA-496j-2rq6-j6cc Excessive Iteration in gRPC

HIGH Published 2023-08-09 Modified 2024-07-30 Official page ↗
Aliases
CVE-2023-33953
Ecosystem
PyPI, RubyGems
Packages
grpcio, grpc
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weaknesses
CWE-770, CWE-789
Reviewed
2024-07-30

Affected packages

• PyPI grpcio: < 1.53.2 → fixed in 1.53.2 • PyPI grpcio: >= 1.54.0, < 1.54.3 → fixed in 1.54.3 • PyPI grpcio: >= 1.55.0, < 1.55.2 → fixed in 1.55.2 • PyPI grpcio: >= 1.56.0, < 1.56.2 → fixed in 1.56.2 • RubyGems grpc: < 1.53.2 → fixed in 1.53.2 • RubyGems grpc: >= 1.54.0, < 1.54.3 → fixed in 1.54.3 • RubyGems grpc: >= 1.55.0, < 1.55.2 → fixed in 1.55.2 • RubyGems grpc: >= 1.56.0, < 1.56.2 → fixed in 1.56.2

Description

gRPC contains a vulnerability that allows hpack table accounting errors could lead to unwanted disconnects between clients and servers in exceptional cases/ Three vectors were found that allow the following DOS attacks: • Unbounded memory buffering in the HPACK parser • Unbounded CPU consumption in the HPACK parser The unbounded CPU consumption is down to a copy that occurred per-input-block in the parser, and because that could be unbounded due to the memory copy bug we end up with an O(n^2) parsing loop, with n selected by the client. The unbounded memory buffering bugs: • The header size limit check was behind the string reading code, so we needed to first buffer up to a 4 gigabyte string before rejecting it as longer than 8 or 16kb. • HPACK varints have an encoding quirk whereby an infinite number of 0’s can be added at the start of an integer. gRPC’s hpack parser needed to read all of them before concluding a parse. • gRPC’s metadata overflow check was performed per frame, so that the following sequence of frames could cause infinite buffering: HEADERS: containing a: 1 CONTINUATION: containing a: 2 CONTINUATION: containing a: 3 etc…

Related

Alias · CVE (1)

  • CVE-2023-33953 gRPC contains a vulnerability that allows hpack table accounting errors could lead to unwanted disconnects between clients and servers in… vulnerability

Weakness · CWE (2)

  • CWE-770 Allocation of Resources Without Limits or Throttling weakness
  • CWE-789 Memory Allocation with Excessive Size Value weakness

References