Skip to content

release-1.26: Backport #5827 and #5850#5851

Merged
sunjayBhatia merged 2 commits intoprojectcontour:release-1.26from
sunjayBhatia:1.26-req-io-cycle
Oct 16, 2023
Merged

release-1.26: Backport #5827 and #5850#5851
sunjayBhatia merged 2 commits intoprojectcontour:release-1.26from
sunjayBhatia:1.26-req-io-cycle

Conversation

@sunjayBhatia
Copy link
Member

@sunjayBhatia sunjayBhatia commented Oct 13, 2023

Commit messages:

An additional mitigation to CVE-2023-44487 available in Envoy 1.27.1. This change allows configuring the http.max_requests_per_io_cycle Envoy runtime setting via Contour configuration to allow administrators of Contour to prevent abusive connections from starving resources from others. The default is left as the existing behavior, that is no limit, so as not to impact existing valid traffic.

See the Envoy release notes for more information:
https://www.envoyproxy.io/docs/envoy/v1.27.1/version_history/v1.27/v1.27.1


HTTP/2 max concurrent streams can be configured (#5850)

Adds a global Listener configuration field for admins to be able to
protect their installations of Contour/Envoy with a limit. Default is no
limit to ensure existing behavior is not impacted for valid traffic.
This field can be used for tuning resource usage or mitigated DOS
attacks like in CVE-2023-44487.

An additional mitigation to CVE-2023-44487 available in Envoy 1.27.1.
This change allows configuring the http.max_requests_per_io_cycle Envoy
runtime setting via Contour configuration to allow administrators of
Contour to prevent abusive connections from starving resources from
others. The default is left as the existing behavior, that is no limit,
so as not to impact existing valid traffic.

See the Envoy release notes for more information:
https://www.envoyproxy.io/docs/envoy/v1.27.1/version_history/v1.27/v1.27.1

Signed-off-by: Sunjay Bhatia <sunjayb@vmware.com>
@sunjayBhatia sunjayBhatia added the release-note/none-required Marks a PR as not requiring a release note. Should only be used for very small changes. label Oct 13, 2023
@sunjayBhatia sunjayBhatia requested a review from a team as a code owner October 13, 2023 16:22
@sunjayBhatia sunjayBhatia requested review from skriss, stevesloka and tsaarni and removed request for a team October 13, 2023 16:22
// I/O cycles. Can be used as a mitigation for CVE-2023-44487 when abusive traffic is
// detected. Configures the http.max_requests_per_io_cycle Envoy runtime setting. The default
// value when this is not set is no limit.
MaxRequestsPerIOCycle *uint32 `yaml:"max-requests-per-io-cycle"`
Copy link
Member Author

@sunjayBhatia sunjayBhatia Oct 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this ends up being a new configuration field available if we do backport this (and other following) change

worth a discussion whether this is desirable or we should only include this new mitigation/feature in the latest release

Copy link
Member

@tsaarni tsaarni Oct 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Envoy also ended up introducing this new configuration in backports, which is maybe bit unusual, but I do not have strong opinion. It sounds ok for me.

That said, the Envoy version needs to get bumped. I guess to each respective release tracks according to https://projectcontour.io/resources/compatibility-matrix/ vs GHSA-jhv4-f7mr-xx76. Edit: sorry I missed it was already done #5823 😄

@codecov
Copy link

codecov bot commented Oct 13, 2023

Codecov Report

Merging #5851 (304d5be) into release-1.26 (d9b2a55) will increase coverage by 0.02%.
The diff coverage is 90.69%.

Additional details and impacted files

Impacted file tree graph

@@               Coverage Diff                @@
##           release-1.26    #5851      +/-   ##
================================================
+ Coverage         78.56%   78.58%   +0.02%     
================================================
  Files               138      138              
  Lines             19163    19195      +32     
================================================
+ Hits              15056    15085      +29     
- Misses             3820     3823       +3     
  Partials            287      287              
Files Coverage Δ
cmd/contour/servecontext.go 83.63% <100.00%> (+0.07%) ⬆️
internal/envoy/v3/listener.go 98.50% <100.00%> (+0.01%) ⬆️
internal/envoy/v3/runtime.go 100.00% <100.00%> (ø)
internal/xdscache/v3/listener.go 92.11% <100.00%> (+0.06%) ⬆️
internal/xdscache/v3/runtime.go 100.00% <100.00%> (ø)
pkg/config/parameters.go 86.06% <100.00%> (+0.25%) ⬆️
cmd/contour/serve.go 20.06% <0.00%> (-0.07%) ⬇️

Adds a global Listener configuration field for admins to be able to
protect their installations of Contour/Envoy with a limit. Default is no
limit to ensure existing behavior is not impacted for valid traffic.
This field can be used for tuning resource usage or mitigated DOS
attacks like in CVE-2023-44487.

Also fixes omitempty tags on MaxRequestsPerIOCycle field.

Fixes: projectcontour#5846

Signed-off-by: Sunjay Bhatia <sunjayb@vmware.com>
@sunjayBhatia sunjayBhatia changed the title release-1.26: Backport #5827 release-1.26: Backport #5827 and #5850 Oct 16, 2023
@sunjayBhatia sunjayBhatia enabled auto-merge (squash) October 16, 2023 12:57
@sunjayBhatia sunjayBhatia merged commit d8b4ef8 into projectcontour:release-1.26 Oct 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-note/none-required Marks a PR as not requiring a release note. Should only be used for very small changes.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants