In affected releases of gRPC-Go, it is possible for an attacker to send HTTP/2 requests, cancel them, and send subsequent requests, which is valid by the HTTP/2 protocol, but would cause the gRPC-Go server to launch more concurrent method handlers than the configured maximum stream limit.
Patches
This vulnerability was addressed by #6703 and has been included in patch releases: 1.56.3, 1.57.1, 1.58.3. It is also included in the latest release, 1.59.0.
Along with applying the patch, users should also ensure they are using the grpc.MaxConcurrentStreams server option to apply a limit to the server's resources used for any single connection.
swift-nio-http2 is vulnerable to a denial-of-service vulnerability in which a malicious client can create and then reset a large number of HTTP/2 streams in a short period of time. This causes swift-nio-http2 to commit to a large amount of expensive work which it then throws away, including creating entirely new Channels to serve the traffic. This can easily overwhelm an EventLoop and prevent it from making forward progress.
swift-nio-http2 1.28 contains a remediation for this issue that applies reset counter using a sliding window. This constrains the number of stream resets that may occur in a given window of time. Clients violating this limit will have their connections torn down. This allows clients to continue to cancel streams for legitimate reasons, while constraining malicious actors.
Release Notes
grpc/grpc-go (google.golang.org/grpc)
### [`v1.56.3`](https://togithub.com/grpc/grpc-go/releases/tag/v1.56.3): Release 1.56.3
[Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.56.2...v1.56.3)
### Security
- server: prohibit more than MaxConcurrentStreams handlers from running at once (CVE-2023-44487)
In addition to this change, applications should ensure they do not leave running tasks behind related to the RPC before returning from method handlers, or should enforce appropriate limits on any such work.
### [`v1.56.2`](https://togithub.com/grpc/grpc-go/releases/tag/v1.56.2): Release 1.56.2
[Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.56.1...v1.56.2)
- status: To fix a panic, `status.FromError` now returns an error with `codes.Unknown` when the error implements the `GRPCStatus()` method, and calling `GRPCStatus()` returns `nil`. ([#6374](https://togithub.com/grpc/grpc-go/issues/6374))
### [`v1.56.1`](https://togithub.com/grpc/grpc-go/releases/tag/v1.56.1): Release 1.56.1
[Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.56.0...v1.56.1)
- client: handle empty address lists correctly in addrConn.updateAddrs
### [`v1.56.0`](https://togithub.com/grpc/grpc-go/releases/tag/v1.56.0): Release 1.56.0
[Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.55.1...v1.56.0)
### New Features
- client: support channel idleness using `WithIdleTimeout` dial option ([#6263](https://togithub.com/grpc/grpc-go/issues/6263))
- This feature is currently disabled by default, but will be enabled with a 30 minute default in the future.
- client: when using pickfirst, keep channel state in TRANSIENT_FAILURE until it becomes READY ([gRFC A62](https://togithub.com/grpc/proposal/blob/master/A62-pick-first.md)) ([#6306](https://togithub.com/grpc/grpc-go/issues/6306))
- xds: Add support for Custom LB Policies ([gRFC A52](https://togithub.com/grpc/proposal/blob/master/A52-xds-custom-lb-policies.md)) ([#6224](https://togithub.com/grpc/grpc-go/issues/6224))
- xds: support pick_first Custom LB policy ([gRFC A62](https://togithub.com/grpc/proposal/blob/master/A62-pick-first.md)) ([#6314](https://togithub.com/grpc/grpc-go/issues/6314)) ([#6317](https://togithub.com/grpc/grpc-go/issues/6317))
- client: add support for pickfirst address shuffling ([gRFC A62](https://togithub.com/grpc/proposal/blob/master/A62-pick-first.md)) ([#6311](https://togithub.com/grpc/grpc-go/issues/6311))
- xds: Add support for String Matcher Header Matcher in RDS ([#6313](https://togithub.com/grpc/grpc-go/issues/6313))
- xds/outlierdetection: Add Channelz Logger to Outlier Detection LB ([#6145](https://togithub.com/grpc/grpc-go/issues/6145))
- Special Thanks: [@s-matyukevich](https://togithub.com/s-matyukevich)
- xds: enable RLS in xDS by default ([#6343](https://togithub.com/grpc/grpc-go/issues/6343))
- orca: add support for application_utilization field and missing range checks on several metrics setters
- balancer/weightedroundrobin: add new LB policy for balancing between backends based on their load reports ([gRFC A58](https://togithub.com/grpc/proposal/blob/master/A58-client-side-weighted-round-robin-lb-policy.md)) ([#6241](https://togithub.com/grpc/grpc-go/issues/6241))
- authz: add conversion of json to RBAC Audit Logging config ([#6192](https://togithub.com/grpc/grpc-go/issues/6192))
- authz: add support for stdout logger ([#6230](https://togithub.com/grpc/grpc-go/issues/6230) and [#6298](https://togithub.com/grpc/grpc-go/issues/6298))
- authz: support customizable audit functionality for authorization policy ([#6192](https://togithub.com/grpc/grpc-go/issues/6192) [#6230](https://togithub.com/grpc/grpc-go/issues/6230) [#6298](https://togithub.com/grpc/grpc-go/issues/6298) [#6158](https://togithub.com/grpc/grpc-go/issues/6158) [#6304](https://togithub.com/grpc/grpc-go/issues/6304) and [#6225](https://togithub.com/grpc/grpc-go/issues/6225))
### Bug Fixes
- orca: fix a race at startup of out-of-band metric subscriptions that would cause the report interval to request 0 ([#6245](https://togithub.com/grpc/grpc-go/issues/6245))
- xds/xdsresource: Fix Outlier Detection Config Handling and correctly set xDS Defaults ([#6361](https://togithub.com/grpc/grpc-go/issues/6361))
- xds/outlierdetection: Fix Outlier Detection Config Handling by setting defaults in ParseConfig() ([#6361](https://togithub.com/grpc/grpc-go/issues/6361))
### API Changes
- orca: allow a ServerMetricsProvider to be passed to the ORCA service and ServerOption ([#6223](https://togithub.com/grpc/grpc-go/issues/6223))
### [`v1.55.1`](https://togithub.com/grpc/grpc-go/releases/tag/v1.55.1): Release 1.55.1
[Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.55.0...v1.55.1)
- status: To fix a panic, `status.FromError` now returns an error with `codes.Unknown` when the error implements the `GRPCStatus()` method, and calling `GRPCStatus()` returns `nil`. ([#6374](https://togithub.com/grpc/grpc-go/issues/6374))
Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
v1.55.0
->v1.56.3
GitHub Vulnerability Alerts
GHSA-m425-mq94-257g
Impact
In affected releases of gRPC-Go, it is possible for an attacker to send HTTP/2 requests, cancel them, and send subsequent requests, which is valid by the HTTP/2 protocol, but would cause the gRPC-Go server to launch more concurrent method handlers than the configured maximum stream limit.
Patches
This vulnerability was addressed by #6703 and has been included in patch releases: 1.56.3, 1.57.1, 1.58.3. It is also included in the latest release, 1.59.0.
Along with applying the patch, users should also ensure they are using the
grpc.MaxConcurrentStreams
server option to apply a limit to the server's resources used for any single connection.Workarounds
None.
References
6703
CVE-2023-44487
swift-nio-http2 is vulnerable to a denial-of-service vulnerability in which a malicious client can create and then reset a large number of HTTP/2 streams in a short period of time. This causes swift-nio-http2 to commit to a large amount of expensive work which it then throws away, including creating entirely new
Channel
s to serve the traffic. This can easily overwhelm anEventLoop
and prevent it from making forward progress.swift-nio-http2 1.28 contains a remediation for this issue that applies reset counter using a sliding window. This constrains the number of stream resets that may occur in a given window of time. Clients violating this limit will have their connections torn down. This allows clients to continue to cancel streams for legitimate reasons, while constraining malicious actors.
Release Notes
grpc/grpc-go (google.golang.org/grpc)
### [`v1.56.3`](https://togithub.com/grpc/grpc-go/releases/tag/v1.56.3): Release 1.56.3 [Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.56.2...v1.56.3) ### Security - server: prohibit more than MaxConcurrentStreams handlers from running at once (CVE-2023-44487) In addition to this change, applications should ensure they do not leave running tasks behind related to the RPC before returning from method handlers, or should enforce appropriate limits on any such work. ### [`v1.56.2`](https://togithub.com/grpc/grpc-go/releases/tag/v1.56.2): Release 1.56.2 [Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.56.1...v1.56.2) - status: To fix a panic, `status.FromError` now returns an error with `codes.Unknown` when the error implements the `GRPCStatus()` method, and calling `GRPCStatus()` returns `nil`. ([#6374](https://togithub.com/grpc/grpc-go/issues/6374)) ### [`v1.56.1`](https://togithub.com/grpc/grpc-go/releases/tag/v1.56.1): Release 1.56.1 [Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.56.0...v1.56.1) - client: handle empty address lists correctly in addrConn.updateAddrs ### [`v1.56.0`](https://togithub.com/grpc/grpc-go/releases/tag/v1.56.0): Release 1.56.0 [Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.55.1...v1.56.0) ### New Features - client: support channel idleness using `WithIdleTimeout` dial option ([#6263](https://togithub.com/grpc/grpc-go/issues/6263)) - This feature is currently disabled by default, but will be enabled with a 30 minute default in the future. - client: when using pickfirst, keep channel state in TRANSIENT_FAILURE until it becomes READY ([gRFC A62](https://togithub.com/grpc/proposal/blob/master/A62-pick-first.md)) ([#6306](https://togithub.com/grpc/grpc-go/issues/6306)) - xds: Add support for Custom LB Policies ([gRFC A52](https://togithub.com/grpc/proposal/blob/master/A52-xds-custom-lb-policies.md)) ([#6224](https://togithub.com/grpc/grpc-go/issues/6224)) - xds: support pick_first Custom LB policy ([gRFC A62](https://togithub.com/grpc/proposal/blob/master/A62-pick-first.md)) ([#6314](https://togithub.com/grpc/grpc-go/issues/6314)) ([#6317](https://togithub.com/grpc/grpc-go/issues/6317)) - client: add support for pickfirst address shuffling ([gRFC A62](https://togithub.com/grpc/proposal/blob/master/A62-pick-first.md)) ([#6311](https://togithub.com/grpc/grpc-go/issues/6311)) - xds: Add support for String Matcher Header Matcher in RDS ([#6313](https://togithub.com/grpc/grpc-go/issues/6313)) - xds/outlierdetection: Add Channelz Logger to Outlier Detection LB ([#6145](https://togithub.com/grpc/grpc-go/issues/6145)) - Special Thanks: [@s-matyukevich](https://togithub.com/s-matyukevich) - xds: enable RLS in xDS by default ([#6343](https://togithub.com/grpc/grpc-go/issues/6343)) - orca: add support for application_utilization field and missing range checks on several metrics setters - balancer/weightedroundrobin: add new LB policy for balancing between backends based on their load reports ([gRFC A58](https://togithub.com/grpc/proposal/blob/master/A58-client-side-weighted-round-robin-lb-policy.md)) ([#6241](https://togithub.com/grpc/grpc-go/issues/6241)) - authz: add conversion of json to RBAC Audit Logging config ([#6192](https://togithub.com/grpc/grpc-go/issues/6192)) - authz: add support for stdout logger ([#6230](https://togithub.com/grpc/grpc-go/issues/6230) and [#6298](https://togithub.com/grpc/grpc-go/issues/6298)) - authz: support customizable audit functionality for authorization policy ([#6192](https://togithub.com/grpc/grpc-go/issues/6192) [#6230](https://togithub.com/grpc/grpc-go/issues/6230) [#6298](https://togithub.com/grpc/grpc-go/issues/6298) [#6158](https://togithub.com/grpc/grpc-go/issues/6158) [#6304](https://togithub.com/grpc/grpc-go/issues/6304) and [#6225](https://togithub.com/grpc/grpc-go/issues/6225)) ### Bug Fixes - orca: fix a race at startup of out-of-band metric subscriptions that would cause the report interval to request 0 ([#6245](https://togithub.com/grpc/grpc-go/issues/6245)) - xds/xdsresource: Fix Outlier Detection Config Handling and correctly set xDS Defaults ([#6361](https://togithub.com/grpc/grpc-go/issues/6361)) - xds/outlierdetection: Fix Outlier Detection Config Handling by setting defaults in ParseConfig() ([#6361](https://togithub.com/grpc/grpc-go/issues/6361)) ### API Changes - orca: allow a ServerMetricsProvider to be passed to the ORCA service and ServerOption ([#6223](https://togithub.com/grpc/grpc-go/issues/6223)) ### [`v1.55.1`](https://togithub.com/grpc/grpc-go/releases/tag/v1.55.1): Release 1.55.1 [Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.55.0...v1.55.1) - status: To fix a panic, `status.FromError` now returns an error with `codes.Unknown` when the error implements the `GRPCStatus()` method, and calling `GRPCStatus()` returns `nil`. ([#6374](https://togithub.com/grpc/grpc-go/issues/6374))Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.