Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged

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 stevesloka, skriss 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
16 checks passed
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