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

CVE-2022-3172: Aggregated API server can cause clients to be redirected (SSRF) #112513

Closed
enj opened this issue Sep 16, 2022 · 4 comments · Fixed by networkservicemesh/sdk-k8s#405
Labels
area/apiserver area/security committee/security-response Denotes an issue or PR intended to be handled by the product security committee. kind/bug Categorizes issue or PR as related to a bug. official-cve-feed Issues or PRs related to CVEs officially announced by Security Response Committee (SRC) sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. triage/accepted Indicates an issue or PR is ready to be actively worked on.

Comments

@enj
Copy link
Member

enj commented Sep 16, 2022

CVSS Rating: CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:C/C:L/I:L/A:L (5.1, medium)

A security issue was discovered in kube-apiserver that allows an aggregated API server to redirect client traffic to any URL. This could lead to the client performing unexpected actions as well as forwarding the client's API server credentials to third parties.

This issue has been rated medium and assigned CVE-2022-3172

Am I vulnerable?

All Kubernetes clusters with the following versions that are running aggregated API servers are impacted. To identify if you have aggregated API servers configured, run the following command:

kubectl get apiservices.apiregistration.k8s.io -o=jsonpath='{range .items[?(@.spec.service)]}{.metadata.name}{"\n"}{end}'

Affected Versions

  • kube-apiserver v1.25.0
  • kube-apiserver v1.24.0 - v1.24.4
  • kube-apiserver v1.23.0 - v1.23.10
  • kube-apiserver v1.22.0 - v1.22.13
  • kube-apiserver <= v1.21.14

How do I mitigate this vulnerability?

Aside from upgrading, no direct mitigation is available.

Aggregated API servers are a trusted part of the Kubernetes control plane, and configuring them is a privileged administrative operation. Ensure that only trusted cluster administrators are allowed to create or modify APIService configuration, and follow security best practices with any aggregated API servers that may be in use.

Fixed Versions

Fix impact: The fix blocks all 3XX responses from aggregated API servers by default. This may disrupt an aggregated API server that relies on redirects as part of its normal function. If all current and future aggregated API servers are considered trustworthy and redirect functionality is required, set the --aggregator-reject-forwarding-redirect Kubernetes API server flag to false to restore the previous behavior.

To upgrade, refer to the documentation: https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade

Detection

Kubernetes audit log events indicate the HTTP status code sent to the client via the responseStatus.code field. This can be used to detect if an aggregated API server is redirecting clients.

If you find evidence that this vulnerability has been exploited, please contact security@kubernetes.io

Acknowledgements

This vulnerability was reported by Nicolas Joly & Weinong Wang @weinong from Microsoft.

The issue was fixed and coordinated by Di Jin @jindijamie @enj @liggitt @lavalamp @deads2k and @puerco.

/area security
/kind bug
/committee security-response
/label official-cve-feed
/sig api-machinery
/area apiserver
/triage accepted

@k8s-ci-robot k8s-ci-robot added needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. labels Sep 16, 2022
@enj enj changed the title placeholder do not close CVE-2022-3172: Aggregated API server can cause clients to be redirected (SSRF) Sep 16, 2022
@k8s-ci-robot k8s-ci-robot added area/security kind/bug Categorizes issue or PR as related to a bug. committee/security-response Denotes an issue or PR intended to be handled by the product security committee. sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. area/apiserver triage/accepted Indicates an issue or PR is ready to be actively worked on. official-cve-feed Issues or PRs related to CVEs officially announced by Security Response Committee (SRC) and removed needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. labels Sep 16, 2022
@enj
Copy link
Member Author

enj commented Sep 16, 2022

Closing as all fixes have been released.

@moonek
Copy link
Contributor

moonek commented Oct 26, 2022

@enj
We are going to do our own patch for the old version below k8s 1.22.
Only need rebuild for kube-apiserver?

@srisubra-uber
Copy link

srisubra-uber commented Nov 9, 2022

To identify if you have aggregated API servers configured, run the following command

What is the expected output on running the provided command, to identify if we are vulnerable? Thank you.

@enj
Copy link
Member Author

enj commented Nov 9, 2022

To identify if you have aggregated API servers configured, run the following command

What is the expected output on running the provided command, to identify if we are vulnerable? Thank you.

Having any output simply means that you are running aggregated API servers. Determining if they are malicious is up to you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/apiserver area/security committee/security-response Denotes an issue or PR intended to be handled by the product security committee. kind/bug Categorizes issue or PR as related to a bug. official-cve-feed Issues or PRs related to CVEs officially announced by Security Response Committee (SRC) sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. triage/accepted Indicates an issue or PR is ready to be actively worked on.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants