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

[SECURITY] Update module github.com/cert-manager/cert-manager to v1.15.4 #352

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Nov 20, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
github.com/cert-manager/cert-manager v1.14.5 -> v1.15.4 age adoption passing confidence

GitHub Vulnerability Alerts

GHSA-r4pg-vg54-wxx4

Impact

cert-manager packages which call the standard library pem.Decode() function can take a long time to process specially crafted invalid PEM data.

If an attacker is able to modify PEM data which cert-manager reads (e.g. in a Secret resource), they may be able to use large amounts of CPU in the cert-manager controller pod to effectively create a denial-of-service (DoS) vector for cert-manager in the cluster.

Secrets are limited in size to 1MiB, which reduces the impact of this issue; it was discovered through an ~856kB fuzz test input which causes pem.Decode to take roughly 750ms to reject the input on an M2 Max Macbook Pro. By way of comparison, a valid PEM-encoded 4096-bit RSA key takes roughly 70µs to parse on the same machine.

Given the required size of PEM data needed to present a realistic DoS vector, an attacker would need to create or insert many different large sized resources in the cluster, and so the best secondary defense is to ensure that sensible limits are placed via RBAC.

This issue affects all versions of cert-manager to have been released since at least v0.1.0 (since pem.Decode is core functionality for cert-manager). All supported releases are patched.

Patches

The fixed versions are v1.16.2, v1.15.4 and v1.12.14.

Workarounds

Ensure that RBAC is scoped correctly in your cluster. If a user is able to modify resources containing PEM data to be able to exploit this, it's like that those permissions are a bigger security threat than this issue - especially for Secret resources.

References


Release Notes

cert-manager/cert-manager (github.com/cert-manager/cert-manager)

v1.15.4

Compare Source

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

This patch release of cert-manager 1.15 makes several changes to how PEM input is validated, adding maximum sizes appropriate to the type of PEM data which is being parsed.

This is to prevent an unacceptable slow-down in parsing specially crafted PEM data. The issue was found by Google's OSS-Fuzz project.

The issue is low severity; to exploit the PEM issue would require privileged access which would likely allow Denial-of-Service through other methods.

In addition, since most PEM data parsed by cert-manager comes from ConfigMap or Secret resources which have
a max size limit of approximately 1MB, it's difficult to force cert-manager to parse large amounts of PEM data.

Further information will be published in a security advisory when all supported cert-manager releases have been patched.

In addition, the version of Go used to build cert-manager 1.15 was updated along with the base images, and a Route53 bug fix was backported.

Changes by Kind

Bug or Regression
  • Bugfix: Prevent aggressive Route53 retries caused by STS authentication failures by removing the Amazon Request ID from STS errors. (#​7261, @​cert-manager-bot)
  • Set a maximum size for PEM inputs which cert-manager will accept to remove possibility of taking a long time to process an input (#​7402, @​SgtCoDFish)
Other (Cleanup or Flake)

v1.15.3

Compare Source

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

🔗 See v1.15.0 for more information about cert-manager 1.15 and read-before-upgrade info.

📜 Changes since v1.15.2
Bug or Regression
  • BUGFIX: the dynamic certificate source used by the webhook TLS server failed to detect a root CA approaching expiration, due to a calculation error. This will cause the webhook TLS server to fail renewing its CA certificate. Please upgrade before the expiration of this CA certificate is reached. (#​7232, @​cert-manager-bot)

v1.15.2

Compare Source

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

🔗 See v1.15.0 for more information about cert-manager 1.15 and read-before-upgrade info.

📜 Changes since v1.15.1
Bug or Regression

v1.15.1

Compare Source

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

🔗 See v1.15.0 for more information about cert-manager 1.15 and read-before-upgrade info.

📜 Changes since v1.15.0

Bug or Regression
  • BUGFIX: fix issue that caused Vault issuer to not retry signing when an error was encountered. (#​7111, @​inteon)
Other (Cleanup or Flake)

v1.15.0

Compare Source

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

cert-manager 1.15 promotes several features to beta, including GatewayAPI support (ExperimentalGatewayAPISupport), the ability to provide a subject in the Certificate that will be used literally in the CertificateSigningRequest (LiteralCertificateSubject) and the outputting of additional certificate formats (AdditionalCertificateOutputFormats).

[!NOTE]

The cmctl binary have been moved to https://github.com/cert-manager/cmctl/releases.
For the startupapicheck Job you should update references to point at quay.io/jetstack/cert-manager-startupapicheck

[!NOTE]

From this release, the Helm chart will no longer uninstall the CRDs when the chart is uninstalled. If you want the CRDs to be removed on uninstall use crds.keep=false when installing the Helm chart.

Community

Thanks again to all open-source contributors with commits in this release, including: @​Pionerd, @​SgtCoDFish, @​ThatsMrTalbot, @​andrey-dubnik, @​bwaldrep, @​eplightning, @​erikgb, @​findnature, @​gplessis, @​import-shiburin, @​inteon, @​jkroepke, @​lunarwhite, @​mangeshhambarde, @​pwhitehead-splunk & @​rodrigorfk, @​wallrj.

Thanks also to the following cert-manager maintainers for their contributions during this release: @​SgtCoDFish, @​SpectralHiss, @​ThatsMrTalbot, @​hawksight, @​inteon, @​maelvls & @​wallrj.

Equally thanks to everyone who provided feedback, helped users and raised issues on GitHub and Slack and joined our meetings!

Thanks also to the CNCF, which provides resources and support, and to the AWS open source team for being good community members and for their maintenance of the PrivateCA Issuer.

In addition, massive thanks to Venafi for contributing developer time and resources towards the continued maintenance of cert-manager projects.

Changes by Kind
Feature
  • GatewayAPI support has graduated to Beta. Add the --enable-gateway-api flag to enable the integration. (#​6961, @​ThatsMrTalbot)
  • Add support to specify a custom key alias in a JKS Keystore (#​6807, @​bwaldrep)
  • Add the ability to communicate with Vault via mTLS when strict client certificates is enabled at Vault server side (#​6614, @​rodrigorfk)
  • Added option to provide additional audiences in the service account auth section for vault (#​6718, @​andrey-dubnik)
  • Venafi Issuer now sends a cert-manager HTTP User-Agent header in all Venafi Rest API requests.
    For example: cert-manager-certificaterequests-issuer-venafi/v1.15.0+(linux/amd64)+cert-manager/ef068a59008f6ed919b98a7177921ddc9e297200. (#​6865, @​wallrj)
  • Add hint to validation error message to help users of external issuers more easily fix the issue if they specify a Kind but forget the Group (#​6913, @​SgtCoDFish)
  • Add support for numeric OID types in LiteralSubject. Eg. "1.2.3.4=String Value" (#​6775, @​inteon)
  • Promote the LiteralCertificateSubject feature to Beta. (#​7030, @​inteon)
  • Promoted the AdditionalCertificateOutputFormats feature gate to Beta (enabled by default). (#​6970, @​erikgb)
  • The Helm chart now allows you to supply extraObjects; a list of yaml manifests which will helm will install and uninstall with the cert-manager manifests. (#​6424, @​gplessis)
  • Update the Route53 provider to support fetching credentials using AssumeRoleWithWebIdentity (#​6878, @​pwhitehead-splunk)
  • Helm can now add optional hostAliases to cert-manager Pod to allow the DNS self-check to pass in custom scenarios. (#​6456, @​Pionerd)
  • Added a new Ingress annotation for copying specific Ingress annotations to Certificate's secretTemplate (#​6839, @​mangeshhambarde)
  • Added option to define additional token audiences for the Vault Kubernetes auth (#​6744, @​andrey-dubnik)
  • Allow cert-manager.io/allow-direct-injection in annotations (#​6801, @​jkroepke)
Design
Bug or Regression
  • BUGFIX: Fixes issue with JSON-logging, where only a subset of the log messages were output as JSON. (#​6779, @​inteon)
  • BUGFIX: JKS and PKCS12 stores now contain the full set of CAs specified by an issuer (#​6806, @​bwaldrep)
  • BUGFIX: cainjector leaderelection flag/config option defaults are missing (#​6816, @​inteon)
  • BUGFIX: cert-manager issuers incorrectly copied the critical flag from the CSR instead of re-calculating that field themselves. (#​6724, @​inteon)
  • Breaking Change: Fixed unintended certificate chain is used if preferredChain is configured. (#​6755, @​import-shiburin)
  • Bugfix: LiteralSubjects with a #= value can result in memory issues due to faulty BER parser (github.com/go-asn1-ber/asn1-ber). (#​6770, @​inteon)
  • DigitalOcean: Ensure that only TXT records are considered for deletion when cleaning up after an ACME challenge (#​6875, @​SgtCoDFish)
  • Fix backwards incompatible removal of default prometheus Service resource. (#​6699, @​inteon)
  • Fix broken cainjector image value in Helm chart (#​6692, @​SgtCoDFish)
  • Helm: Fix a bug in the logic that differentiates between 0 and an empty value. (#​6713, @​inteon)
  • Make sure the Azure SDK error messages are stable. (#​6676, @​inteon)
  • When using the literalSubject on a Certificate, the webhook validation for the common name now also points to the literalSubject. (#​6767, @​lunarwhite)
  • Bump golang.org/x/net to fix CVE-2023-45288 (#​6929, @​SgtCoDFish)
  • Fix ACME issuer being stuck waiting for DNS propagation when using Azure DNS with multiple instances issuing for the same FQDN (#​6351, @​eplightning)
  • Fix cainjector ConfigMap not mounted in the cainjector deployment. (#​7055, @​inteon)
  • Added disableAutoApproval and approveSignerNames Helm chart options. (#​7054, @​inteon)
Other (Cleanup or Flake)

v1.14.7

Compare Source

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

📜 Changes since v1.14.6
Bugfixes
Other (Cleanup or Flake)

v1.14.6

Compare Source

cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters.

📜 Changes since v1.14.5
Other (Cleanup or Flake)

Configuration

📅 Schedule: Branch creation - "" in timezone America/New_York, 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 was generated by Mend Renovate. View the repository job log.

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Copy link
Contributor Author

renovate bot commented Nov 20, 2024

ℹ Artifact update notice

File name: go.mod

In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):

  • 35 additional dependencies were updated

Details:

Package Change
github.com/aws/aws-sdk-go-v2 v1.26.1 -> v1.27.0
github.com/aws/aws-sdk-go-v2/config v1.27.13 -> v1.27.15
github.com/aws/aws-sdk-go-v2/credentials v1.17.13 -> v1.17.15
github.com/aws/aws-sdk-go-v2/service/sts v1.28.7 -> v1.28.9
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 -> v1.16.3
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 -> v1.3.7
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 -> v2.6.7
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 -> v1.11.9
github.com/aws/aws-sdk-go-v2/service/sso v1.20.6 -> v1.20.8
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.0 -> v1.24.2
github.com/cespare/xxhash/v2 v2.2.0 -> v2.3.0
github.com/emicklei/go-restful/v3 v3.11.0 -> v3.12.0
github.com/evanphx/json-patch v5.7.0+incompatible -> v5.9.0+incompatible
github.com/go-asn1-ber/asn1-ber v1.5.5 -> v1.5.6
github.com/go-ldap/ldap/v3 v3.4.6 -> v3.4.8
github.com/go-openapi/jsonpointer v0.20.2 -> v0.21.0
github.com/go-openapi/jsonreference v0.20.4 -> v0.21.0
github.com/go-openapi/swag v0.22.7 -> v0.23.0
github.com/google/uuid v1.5.0 -> v1.6.0
github.com/prometheus/client_model v0.5.0 -> v0.6.1
github.com/prometheus/common v0.45.0 -> v0.46.0
github.com/prometheus/procfs v0.12.0 -> v0.15.0
go.uber.org/zap v1.26.0 -> v1.27.0
golang.org/x/crypto v0.22.0 -> v0.24.0
golang.org/x/exp v0.0.0-20231226003508-02704c960a9b -> v0.0.0-20240506185415-9bf2ced13842
golang.org/x/net v0.24.0 -> v0.26.0
golang.org/x/oauth2 v0.15.0 -> v0.20.0
golang.org/x/sys v0.19.0 -> v0.21.0
golang.org/x/term v0.19.0 -> v0.21.0
golang.org/x/text v0.14.0 -> v0.16.0
google.golang.org/protobuf v1.33.0 -> v1.34.1
k8s.io/apiextensions-apiserver v0.30.0 -> v0.30.1
k8s.io/component-base v0.30.0 -> v0.30.1
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 -> v0.0.0-20240430033511-f0e62f92d13f
sigs.k8s.io/gateway-api v1.0.0 -> v1.1.0

@cert-manager-prow
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign maelvls for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants