CVE-2023-33953

Aliases:GHSA-496j-2rq6-j6cc
Modified
Published: 09 Aug 2023, 12:54
Last modified:27 Sept 2024, 18:40

Vulnerability Summary

Overall Risk (default)
medium
30/100
CVSS Score
7.5 HIGH
v3.1 (cve.org)
EPSS Score
0.12% LOW
0% probability 0.00%
KEV
Not listed
Ransomware
No reports
Public exploits
None found
Dark Web
Not detected

Timeline

09 Aug 2023, 12:54
Published
Vulnerability first disclosed
27 Sept 2024, 18:40
Last Modified
Vulnerability information updated

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…

CVSS Metrics

  • v3.1HIGHScore: 7.5CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

EPSS Trends

Current EPSS score: 0.12% Percentile: 30%

Techniques & Countermeasures

  • CWE-789Memory Allocation with Excessive Size Value

    The product allocates memory based on an untrusted, large size value, but it does not ensure that the size is within expected limits, allowing arbitrary amounts of memory to be allocated.

  • CWE-834Excessive Iteration

    The product performs an iteration or loop without sufficiently limiting the number of times that the loop is executed.

  • CWE-770Allocation of Resources Without Limits or Throttling

    The product allocates a reusable resource or group of resources on behalf of an actor without imposing any intended restrictions on the size or number of resources that can be allocated.

Affected Systems

  • RubyGemsgrpc

    < 1.53.2 | ≥ 1.54.0, < 1.54.3 | ≥ 1.55.0, < 1.55.2 | ≥ 1.56.0, < 1.56.2

  • googlegrpc

    < 1.56.1

  • grpcgrpc

    < 1.53.2 | ≥ 1.54.0, < 1.54.3 | ≥ 1.55.0, < 1.55.2 | ≥ 1.56.0, < 1.56.2

  • PyPIgrpcio

    < 1.53.2 | ≥ 1.54.0, < 1.54.3 | ≥ 1.55.0, < 1.55.2 | ≥ 1.56.0, < 1.56.2

References (5)