What changed in Crossplane from 1 to 2
10 releases numbered after v1.20.12 up to and including v2.4.0, stable releases only. v1.20.12 and v2.4.0 are the newest stable releases of 1 and 2 we track; this page follows them as new ones ship.
- 1 mentions breaking changes
- 1 removes or deprecates something
- Spans branches 2.4, 2.3, 2.2, 2.1 — the list is by date, and a branch's own patches sit between the other's.
69 changes across 10 releases · 1 landed on more than one version
- Watch required resources and reconcile XRs immediately when they change
- Scale to zero for safe-start capable providers
- Release artifacts that are vulnerability scannable
- Bump `crossplane-runtime` to v2.2.4 for additional security dependency updates
- Bump crossplane-runtime to v2.3.4 which carries security dependency updates
- Package revision names are now derived from both the package digest and the package's metadata.generation, so any change to a package's spec produces a new PackageRevision
- Package runtime objects are now applied with server-side apply under the pkg.crossplane.io/runtime field manager, replacing the previous merge patch applicator
- The RUNTIME printer column on ProviderRevision and FunctionRevision was renamed to RUNTIME-HEALTHY, and a new RUNTIME-ACTIVE column was added
- The type label on the engine_watches_started_total and engine_watches_stopped_total metrics changed from ComposedResource to Dependency
- Container images are now built with buildGoModule instead of gomod2nix to enable vulnerability scanning by standard tooling
- Container images are now built with buildGoModule instead of gomod2nix to support standard vulnerability scanning tools
- Bump Go toolchain to 1.25.11
- Bump golang.org/x/net and golang.org/x/sys dependencies in the apis module for CVE fixes
- Update crossplane-runtime to v2.3.3
- Update crossplane-runtime to v2.2.3
- Update crossplane-runtime to v2.1.7
- bump crossplane-runtime dependency to v2.3.2
- Correct `crank` checksums for `amd64` binaries by calculating checksums after Nix strips the binary and verifying them before uploading
- Use unambiguous `/` separator instead of `.` for `Usage` index key in deletion protection webhook to prevent distinct resources from collapsing to the same key
- Correct crank checksums for amd64 binaries by calculating checksums after Nix strips the binary and verifying them before uploading
- Use unambiguous separator for Usage index key to prevent distinct resources from collapsing to the same key in the deletion protection webhook
- Changing a package's runtimeConfigRef now produces a new PackageRevision instead of reusing the existing revision with stale runtime settings
- A field removed from a DeploymentRuntimeConfig is now removed from the live runtime object rather than lingering
- Additions that Crossplane doesn't declare in runtime objects are left alone rather than replaced
- Usage controller now checks all owner references instead of only the first one, preventing repeated owner updates for composed Usages that trigger unnecessary composition reconciliation
- crossplane render command no longer overwrites the input XR's UID when one is already set
- crossplane render command now validates observed resources before proceeding with the render
- Usage controller now checks all owner references instead of only the first one to prevent repeated owner updates for composed Usages
- Usage controller now checks all owner references instead of only the first one, preventing repeated owner updates for composed Usages and unnecessary composition reconciliation triggering
- Correct namespace on injected resource refs in crossplane render to set namespace only for cluster-scoped XRs, matching the real reconciler behavior
- render command now honors input XR schema
- render command returns requirements even on fatal errors
- add namespace to resourceref stable sort
- The Crossplane CLI is no longer published to releases.crossplane.io
- Update `cel-go` dependency to pick up upstream CVE fixes
- Update `golang.org/x/mod` dependency to pick up upstream CVE fixes
- Update `sigstore-go` dependency to v1.2.1 to pick up upstream CVE fixes
- Update `go-git` dependency to v5.19.2 to pick up upstream CVE fixes
- Update vulnerable dependencies to pick up upstream CVE fixesalso inv2.3.5
- Bump cel-go to pick up upstream CVE fixes
- Bump golang.org/x/mod to v0.40.0 to pick up upstream CVE fixes
- Bump sigstore-go to v1.2.1 to pick up upstream CVE fixes
- Security fixes in Crossplane's Go toolchain and dependencies
- Update grpc to fix upstream CVEs
- Update golang.org/x/net to v0.56.0 to fix upstream CVEs
- Update golang.org/x/text to v0.39.0 to fix upstream CVEs
- Update github.com/sigstore/cosign/v3 to v3.0.6 to fix upstream CVEs
- Update github.com/sigstore/rekor to v1.5.2 to fix upstream CVEs
- Update github.com/sigstore/timestamp-authority/v2 to v2.1.0 to fix upstream CVEs
- Update github.com/sigstore/sigstore-go to v1.2.0 to fix upstream CVEs
- Updated github.com/sigstore/rekor to v1.5.2 to pick up upstream CVE fixes
- Updated github.com/sigstore/cosign/v3 to v3.0.6 to pick up upstream CVE fixes
- Updated github.com/sigstore/timestamp-authority/v2 to v2.1.0 to pick up upstream CVE fixes
- Updated github.com/sigstore/sigstore-go to v1.2.0 to pick up upstream CVE fixes
- Updated grpc, golang.org/x/net, and golang.org/x/text to pick up upstream CVE fixes
- Bump Go toolchain to 1.25.12 to pick up upstream CVE fixes
- Update github.com/sigstore/rekor to v1.5.2 for security fixes
- Update github.com/sigstore/timestamp-authority to v2.1.0 for security fixes
- Update github.com/sigstore/cosign to v2.6.3 for security fixes
- Update github.com/sigstore/sigstore-go to v1.2.0 for security fixes
- Update grpc, golang.org/x/net, and golang.org/x/text for security fixes
- Update golang.org/x/text to v0.39.0 for security fixes
- Fix package signature verification TOCTOU flaw that could let a malicious OCI registry pass signature verification with a signed image and then serve unsigned content for installation
- Fix package signature verification time-of-check-to-time-of-use flaw that allowed a malicious OCI registry to serve a correctly signed image for verification and then an unsigned image for installation
- Bump Go toolchain to 1.25.11
- Bump golang.org/x/net to v0.55.0
- Update module github.com/quic-go/quic-go to v0.59.1
- Update module golang.org/x/net to v0.55.0
- Bump Go to 1.25.11
Original release notes, newest first
The list above is our reading of these notes; the originals from CNCF are here, one fold per release.
v2.2.5
v2.2.5 is a patch release scoped to fixing issues reported by users of Crossplane v2.2 and fixing security related issues in Crossplane's dependencies.
🎉 Highlights
- Correct
crankchecksums foramd64binaries (#7665, originally #7660): The published.sha256files forlinux_amd64binaries had not matched the binaries themselves sincev2.2.0, so any install script or Dockerfile that verified theamd64checksum failed. Checksums are now calculated after Nix strips the binary, and the release workflow verifies them before uploading. Fixes #7467. - Unambiguous
Usageindex key (#7629, originally #7508): The deletion protection webhook indexedUsageresources by joining API group, kind, name, and namespace with.. Since groups and names can contain.themselves, two distinct resources could collapse to the same key, causing the webhook to block a deletion that should have been allowed. The key now joins with/, which cannot appear in any of those fields. - Dependency security updates: Bumps
cel-go(#7760),golang.org/x/mod(#7742),sigstore-go(#7677), andgo-git(#7724), plus a combined set of vulnerable dependency updates (#7649), to pick up upstream CVE fixes.crossplane-runtimeis also bumped tov2.2.4(#7766), which carries its own set of security dependency updates.
What's Changed
- build: give every Go build its own writable HOME by @jbw976 in https://github.com/crossplane/crossplane/pull/7654
- chore(deps): update vulnerable dependencies [security] (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7649
- [Backport release-2.2] use unambiguous separator for usage index key by @github-actions[bot] in https://github.com/crossplane/crossplane/pull/7629
- Backport #7660 to release-2.2 by @adamwg in https://github.com/crossplane/crossplane/pull/7665
- chore(deps): update module github.com/sigstore/sigstore-go to v1.2.1 [security] (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7677
- build: point docker-client at docker_29 in the nix overlay [release-2.2] by @phisco in https://github.com/crossplane/crossplane/pull/7704
- chore(deps): lock file maintenance (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7699
- [Backport release-2.2] build: bump pinned nixpkgs channel from nixos-25.11 to nixos-26.05 by @jbw976 in https://github.com/crossplane/crossplane/pull/7719
- fix(deps): update module github.com/go-git/go-git/v5 to v5.19.2 [security] (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7724
- chore(deps): update module golang.org/x/mod to v0.40.0 [security] (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7742
- chore(deps): lock file maintenance (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7752
- chore(deps): update module github.com/google/cel-go to v0.30.0 [security] (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7760
- chore(deps): bump crossplane-runtime to v2.2.4 by @jbw976 in https://github.com/crossplane/crossplane/pull/7766
Full Changelog: https://github.com/crossplane/crossplane/compare/v2.2.4...v2.2.5
v2.3.5
v2.3.5 is a patch release scoped to fixing issues reported by users of Crossplane v2.3 and fixing security related issues in Crossplane's dependencies.
🎉 Highlights
- Correct
crankchecksums foramd64binaries (#7666, originally #7660): The published.sha256files forlinux_amd64binaries had not matched the binaries themselves sincev2.2.0, so any install script or Dockerfile that verified theamd64checksum failed. Checksums are now calculated after Nix strips the binary, and the release workflow verifies them before uploading. Fixes #7467. - Unambiguous
Usageindex key (#7630, originally #7508): The deletion protection webhook indexedUsageresources by joining API group, kind, name, and namespace with.. Since groups and names can contain.themselves, two distinct resources could collapse to the same key, causing the webhook to block a deletion that should have been allowed. The key now joins with/, which cannot appear in any of those fields. - Dependency security updates: Bumps
cel-go(#7761),golang.org/x/mod(#7743), andsigstore-go(#7678), plus a combined set of vulnerable dependency updates (#7650), to pick up upstream CVE fixes.crossplane-runtimeis also bumped tov2.3.4(#7765), which carries its own set of security dependency updates.
What's Changed
- build: give every Go build its own writable HOME by @jbw976 in https://github.com/crossplane/crossplane/pull/7653
- chore(deps): update vulnerable dependencies [security] (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7650
- [Backport release-2.3] use unambiguous separator for usage index key by @github-actions[bot] in https://github.com/crossplane/crossplane/pull/7630
- Backport #7660 to release-2.3 by @adamwg in https://github.com/crossplane/crossplane/pull/7666
- chore(deps): update module github.com/sigstore/sigstore-go to v1.2.1 [security] (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7678
- [Backport release-2.3] build: point docker-client at docker_29 in the nix overlay by @github-actions[bot] in https://github.com/crossplane/crossplane/pull/7706
- chore(deps): lock file maintenance (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7700
- [Backport release-2.3] build: bump pinned nixpkgs channel from nixos-25.11 to nixos-26.05 by @jbw976 in https://github.com/crossplane/crossplane/pull/7720
- chore(deps): update module golang.org/x/mod to v0.40.0 [security] (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7743
- [Backport release-2.3] fix(ci): pin create-tag to v2 so apis/ submodule tagging works again by @jbw976 in https://github.com/crossplane/crossplane/pull/7748
- chore(deps): lock file maintenance (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7753
- chore(deps): update module github.com/google/cel-go to v0.30.0 [security] (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7761
- chore(deps): bump crossplane-runtime to v2.3.4 by @jbw976 in https://github.com/crossplane/crossplane/pull/7765
Full Changelog: https://github.com/crossplane/crossplane/compare/v2.3.4...v2.3.5
v2.4.0
The v2.4.0 release is a regular quarterly Crossplane release that is focused on maturing a number of key areas of functionality across the project, as Crossplane continues to become more capable, more reliable, and more performant for your production workloads. This release includes the ability to watch required resources and reconcile XRs immediately when they change, scale to zero for safe-start capable providers, release artifacts that are vulnerability scannable, and a wide range of fixes and reliability improvements. It also includes security fixes in Crossplane's Go toolchain and dependencies.
🚨 v1.20 end-of-life (EOL) November 2026
This v2.4 release marks the final release cycle where v1.20 will be maintained.
When v2.5 is released in Nov 2026, v1.20 will reach its EOL and no longer receive any support or maintenance by the Crossplane project. Until that time, we will continue to provide critical fixes and security related dependency updates to v1.20.
[!IMPORTANT] This EOL notice applies only to the v1.20 release. v1 legacy workloads like Claims and cluster scoped resources remain supported in Crossplane v2 through extensive backwards compatibility support.
Is your control plane ready for v2?
Upgrading to Crossplane v2 does not require any migration as part of the upgrade process, with the exception of the minimal breaking changes explicitly called out in the v2 documentation. If your control plane is not affected by those changes, you can simply upgrade to v2 right away.
To better assist Crossplane users in determining if their control planes are affected by any of the breaking changes in v2, we have released a v2 readiness checker tool in the v1.20 Crossplane CLI that can be invoked via crossplane beta upgrade check. You can read all about this tool in the following resources:
- blog post: https://blog.crossplane.io/v2-upgrade-check/
- docs: https://docs.crossplane.io/v1.20/cli/command-reference/#beta-upgrade-check
- release notes: https://github.com/crossplane/crossplane/releases/tag/v1.20.9
Crossplane Downstream Distributions
Downstream distributions are eligible to continue their extended support and maintenance for their releases that are based on upstream Crossplane's v1.20. Check with your vendor for more details if you are using a downstream distribution of Crossplane.
🚨 v2.4 Notable and Breaking Changes
- ⚠️ The Crossplane CLI is no longer published to
releases.crossplane.io. New CLI releases go only tocli.crossplane.io, under the binary namecrossplanerather thancrank. This completes the CLI's move to https://github.com/crossplane/cli, which was announced in thev2.3.0release notes and dual published to both locations forv2.3.0to ease the transition.- f you are using custom installation scripts or CI steps that download the CLI directly from
releases.crossplane.io, update them to usecli.crossplane.io, and update any firewall or proxy rule that allowsreleases.crossplane.ioto now allowcli.crossplane.ioinstead.- Users of the
install.shscript as their installation procedure are unaffected.
- Users of the
- The CLI now follows its own release schedule, so a CLI release will not accompany every core Crossplane release and the two version numbers have diverged.
- Documentation and installation instructions for the Crossplane CLI can be found on https://docs.crossplane.io/cli/latest/.
- f you are using custom installation scripts or CI steps that download the CLI directly from
- Package revision names are now derived from both the package digest and the package's
metadata.generation, so any change to a package's spec produces a newPackageRevision. #7473- This fixes the long standing issue where changing a package's
runtimeConfigRefreused the existing revision, along with its stale runtime settings. #5068 - When upgrading to
v2.4, every installed package gets a new revision, with a new name, on its first reconcile. - ⚠️ The
PodsforProvidersandFunctionswill be restarted for this new revision.
- This fixes the long standing issue where changing a package's
- Package runtime objects (
Deployment,ServiceAccount,Service, and TLSSecrets) are now applied with server-side apply under thepkg.crossplane.io/runtimefield manager, replacing the previous merge patch applicator. #7563- A field you remove from a
DeploymentRuntimeConfigis now removed from the live runtime object, rather than lingering until that object is replaced. #4817 - Additions that Crossplane doesn't declare are left alone rather than replaced along with the array that held them, e.g. an injected sidecar container or an extra volume added out of band now survives a reconcile.
- A field you remove from a
- The
RUNTIMEprinter column onProviderRevisionandFunctionRevisionwas renamed toRUNTIME-HEALTHY, and a newRUNTIME-ACTIVEcolumn was added. #7586- Update any tooling that reads
kubectl get providerrevisionorkubectl get functionrevisionoutput by column position.
- Update any tooling that reads
- The
typelabel on theengine_watches_started_totalandengine_watches_stopped_totalmetrics changed fromComposedResourcetoDependency, now that a single watch mechanism covers both composed and required resources. #7572- Update any dashboards or alerts that filter on that label value.
🎉 Highlights
- Watching required resources: Composition functions can require resources they don't compose, but Crossplane didn't watch them, so a change to a required resource didn't reconcile the XRs that required it until their next poll. Crossplane now tracks the resources each XR depends on and drives watches from that. A change to a required resource now reconciles the XRs that required it the same way a change to a composed resource does. This works when realtime compositions are enabled, which is the default. See
design/one-pager-watching-required-resources.mdand #7572. - Safe-start provider runtimes scale to zero until activated: A provider with the safe-start capability runs no managed resource controllers while all of its
ManagedResourceDefinitionsare inactive, so there is no reason to run its pods. Crossplane now creates such a provider's runtimeDeploymentwith zero replicas and scales it up once its first MRD becomes active, such as through a matchingManagedResourceActivationPolicy. Installing a broad set of providers no longer costs you a running pod for each one that has nothing to reconcile yet. #7586- A new
RuntimeActivecondition onProviderRevisionandFunctionRevisionmakes this visible. It isFalsewith reasonAwaitingActivationwhile the runtime is intentionally scaled to zero andTrueonce it has been scaled up.RuntimeHealthystays healthy in both cases, and the package'sHealthycondition surfaces the awaiting state with the same reason. - Scaling to zero takes precedence over an explicit
spec.replicasin aDeploymentRuntimeConfig, which is now read as how many replicas to run while running, rather than a demand to always be running. #7639
- A new
- Vulnerability-scannable container images: Crossplane container images are now built with nixpkgs'
buildGoModule, which includes the full Go dependency list into the binary. Scanners such asgrypeandtrivypreviously were only able to discover the Crossplane main module and the Go standard library, so CVEs in our third-party dependencies were not visible to them. Now Crossplane and its complete set of dependencies are visible to security scanner tools. #7549 - More reliable package runtime management: Server-side apply for package runtime objects means a field you remove from a
DeploymentRuntimeConfigis now actually removed from the liveDeploymentinstead of lingering (#7563, fixing #4817). Deactivating a revision also no longer deletes a runtimeDeploymentthat another revision controls, which could happen when aDeploymentRuntimeConfigpins a stabledeploymentTemplate.metadata.name(#7561). - Hardening across composition and package paths: Several changes tighten paths where a caller could reach further than intended. The composed resource garbage collector now only deletes resources whose controller reference points back to the XR, so
spec.resourceRefscan no longer be used to make the composite controller delete arbitrary resources (#7627). The claim to XR syncers now strip XR machinery fields such asresourceRefsand thecrossplanestanza, which a claim could otherwise smuggle through an XRD schema that setsx-kubernetes-preserve-unknown-fields: true(#7626). - Version-aware docs search: Searching from an older version of the docs, such as
/v1.20/, used to return results from all versions, potentially returning features and APIs that don't exist in the version you're actually reading. Search is now scoped to the version you're on, results carry a clearly visible version badge, and pages from older versions show a banner explaining that, with a link to latest. Thanks to @haarchri for this one in crossplane/docs#1051, so give it a try at https://docs.crossplane.io. - Security fixes in dependencies: The Go version Crossplane builds/runs with was bumped to pick up standard library CVE fixes, alongside a steady stream of security updates to Crossplane's Go dependencies across this release cycle.
- Other notable improvements:
- Several fixes to the render engine that backs
crossplane render: an XRD schema can now be supplied tocrossplane internal render(#7452), requirements are returned even when a function returns a fatal result (#7455), a namespace is set on injected resource references only for cluster-scoped XRs, matching the real reconciler (#7523), and an input XR fetched from a real cluster keeps its own UID so its observed resources are read correctly, with clear errors when observed resources don't line up with the XR (#7544). - The
sha256files published with release binaries are now calculated after Nix strips the binary, so amd64 checksums match what you download. They didn't forv2.2.0throughv2.3.1, and CI now verifies checksums before uploading artifacts. #7660 - A composed
Usageno longer gets a redundant owner update on every reconcile, which could repeatedly trigger composition reconciliation and eventually open the XR circuit breaker. #7591 - The deletion protection field index now uses a separator that can't appear in a group, kind, name, or namespace, so two distinct resources can no longer collide and block a deletion that should be allowed. #7508
- Sorting of
spec.resourceRefsnow includes the namespace, so references stay stable when composed resources share a name across namespaces. #7341
- Several fixes to the render engine that backs
🏅 Release MVP
For the v2.4 release cycle, we'd like to recognize @rafal-jan as the release MVP!
They had an enormous impact in crossplane-runtime, first by diagnosing the root cause in https://github.com/crossplane/crossplane-runtime/issues/1056 of significant memory usage by providers that are safe-start capable when they essentially watch and cache every CRD in the control plane. Then @rafal-jan went a step further and submitted an elegant solution in https://github.com/crossplane/crossplane-runtime/pull/1058 to strip the cached CRDs down to just the fields needed to watch and respond appropriately to events, drastically reducing the memory consumption by these providers. Thank you @rafal-jan!
📖 Full Changelog
- chore(deps): bump crossplane-runtime to v2.4.0-rc.0 by @jbw976 in https://github.com/crossplane/crossplane/pull/7393
- build: add release-2.3 to renovate baseBranches by @jbw976 in https://github.com/crossplane/crossplane/pull/7395
- ci: Run checks on the apis module by @adamwg in https://github.com/crossplane/crossplane/pull/7396
- Make Renovate security updates bypass throttles by @phisco in https://github.com/crossplane/crossplane/pull/7391
- docs: add Stone Payments to ADOPTERS.md by @gadsilva in https://github.com/crossplane/crossplane/pull/7388
- build: Install Earthly in Renovate container via flake URL by @jbw976 in https://github.com/crossplane/crossplane/pull/7404
- build: put Nix profile bin on PATH in Renovate entrypoint by @jbw976 in https://github.com/crossplane/crossplane/pull/7405
- chore(deps): Bump Go to 1.25.10 to fix stdlib CVEs (main) by @jbw976 in https://github.com/crossplane/crossplane/pull/7414
- chore: bump releases table and renovate baseBranches after v2.3 release by @jbw976 in https://github.com/crossplane/crossplane/pull/7418
- chore(deps): update module golang.org/x/crypto to v0.52.0 [security] (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7423
- fix(ci): match release tags only when computing build version by @jbw976 in https://github.com/crossplane/crossplane/pull/7431
- build: tag the apis/ Go submodule on every release by @jbw976 in https://github.com/crossplane/crossplane/pull/7444
- Update install.sh to point at the new CLI release bucket by @adamwg in https://github.com/crossplane/crossplane/pull/7441
- fix(render): allow xrd schema to be supplied for
internal renderby @jcogilvie in https://github.com/crossplane/crossplane/pull/7452 - README: add sig-v2-migration to list of SIGs by @jbw976 in https://github.com/crossplane/crossplane/pull/7462
- Move error types from xerrors to relevant packages by @adamwg in https://github.com/crossplane/crossplane/pull/7465
- fix(render): return requirements even on fatal errors by @jcogilvie in https://github.com/crossplane/crossplane/pull/7455
- fix: add namespace to resourceref stable sort by @LorenzBischof in https://github.com/crossplane/crossplane/pull/7341
- redact secret stringData before emitting to pipeline inspector by @netliomax25-code in https://github.com/crossplane/crossplane/pull/7476
- chore(deps): update actions/stale digest to eb5cf3a (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7379
- chore(deps): update actions/create-github-app-token digest to fee1f7d (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7310
- chore(deps): update gomod2nix digest to 1201ddd (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7128
- chore(deps): update module golang.org/x/sys to v0.44.0 [security] (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7435
- chore(deps): update module golang.org/x/net to v0.55.0 [security] (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7434
- chore(deps): update bufbuild/buf-action digest to fd21066 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7380
- ci(renovate): disable the per-hour PR creation throttle by @jbw976 in https://github.com/crossplane/crossplane/pull/7482
- chore(deps): update actions/checkout digest to df4cb1c (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7483
- chore(deps): update mheap/require-checklist-action digest to 9c8100a (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7487
- chore(deps): update github/codeql-action digest to 8aad20d (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7486
- chore(deps): update codecov/codecov-action digest to 0fb7174 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7485
- chore(deps): update cachix/install-nix-action digest to 8aa0397 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7484
- chore(deps): update korthout/backport-action action to v4.5.2 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7491
- fix(deps): update module github.com/google/go-containerregistry to v0.21.6 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7490
- chore(deps): update actions/checkout action to v6.0.3 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7489
- chore(deps): update negz/create-tag digest to 39bae1e (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7488
- chore(deps): update renovatebot/github-action action to v46.1.15 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7492
- fix(deps): update module github.com/alecthomas/kong to v1.15.0 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7493
- fix(deps): update module github.com/crossplane/crossplane/apis/v2 to v2.3.2 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7495
- fix(deps): update module github.com/aws/smithy-go to v1.27.2 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7494
- fix(deps): update module golang.org/x/sync to v0.21.0 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7497
- chore(deps): update actions/create-github-app-token action to v3 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7499
- fix(deps): update module google.golang.org/grpc to v1.81.1 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7498
- chore(deps): update cachix/cachix-action action to v17 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7501
- fix(deps): update module github.com/masterminds/semver/v3 to v3.5.0 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7496
- chore(deps): update docker/login-action action to v4 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7504
- chore(deps): update dependency renovate to v43 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7503
- chore(deps): update codecov/codecov-action action to v7 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7502
- chore(deps): update nick-fields/retry action to v4 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7507
- chore(deps): update github artifact actions to v7 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7506
- chore(deps): update dependency renovate to v43.222.0 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7505
- render: Set namespace on injected resource refs only for cluster-scoped XRs by @adamwg in https://github.com/crossplane/crossplane/pull/7523
- chore(deps): update dependency renovate to v43.230.0 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7509
- pkg: include package generation in revision ID by @RonaldLePape in https://github.com/crossplane/crossplane/pull/7473
- chore(deps): update module github.com/sigstore/cosign/v3 to v3.0.6 [security] (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7551
- Update ADOPTERS.md by @cazeaux in https://github.com/crossplane/crossplane/pull/7533
- chore(deps): update module github.com/sigstore/rekor to v1.5.2 [security] (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7552
- chore(deps): update module github.com/sigstore/timestamp-authority/v2 to v2.1.0 [security] (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7567
- build(nix): build with buildGoModule so images are vulnerability-scannable by @phisco in https://github.com/crossplane/crossplane/pull/7549
- docs: fix duplicated word in crossplane-v2 proposal by @s3onghyun in https://github.com/crossplane/crossplane/pull/7526
- chore(deps): update module github.com/sigstore/sigstore-go to v1.2.0 [security] (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7580
- chore(deps): update dependency renovate to v43.272.1 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7593
- fix: avoid repeated owner updates for composed Usages by @youssefcamao in https://github.com/crossplane/crossplane/pull/7591
- chore(deps): update dependency renovate to v43.272.8 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7595
- render: Don't overwrite the input XR's UID if it has one and validate observed resources by @adamwg in https://github.com/crossplane/crossplane/pull/7544
- Watch required resources to reconcile the XRs that require them by @negz in https://github.com/crossplane/crossplane/pull/7572
- fix(deps): combined security bumps (grpc, x/net, x/text) (main) by @lsviben in https://github.com/crossplane/crossplane/pull/7617
- chore(deps): update module golang.org/x/net to v0.56.0 [security] (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7602
- Do not delete package runtime deployments owned by another revision by @truongnht in https://github.com/crossplane/crossplane/pull/7561
- chore(deps): update module golang.org/x/text to v0.39.0 [security] (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7603
- Make check-diff CI verify generated files are committed by @phisco in https://github.com/crossplane/crossplane/pull/7213
- fix(ci): serialize Nix builds in Renovate entrypoint by @alliasgher in https://github.com/crossplane/crossplane/pull/7564
- use unambiguous separator for usage index key by @netliomax25-code in https://github.com/crossplane/crossplane/pull/7508
- test(e2e): use DefaultPollInterval in remaining wait.For calls by @amarkdotdev in https://github.com/crossplane/crossplane/pull/7547
- feat(pkg): scale safe-start provider runtimes to zero until their first MRD is activated by @haarchri in https://github.com/crossplane/crossplane/pull/7586
- chore(renovate): group security-fix PRs into one per branch by @phisco in https://github.com/crossplane/crossplane/pull/7641
- Scale safe-start runtimes to zero even when a DRC sets replicas by @negz in https://github.com/crossplane/crossplane/pull/7639
- build: give every Go build its own writable HOME by @jbw976 in https://github.com/crossplane/crossplane/pull/7652
- chore(deps): update vulnerable dependencies [security] (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7645
- fix(composite): only garbage collect resources we control by @phisco in https://github.com/crossplane/crossplane/pull/7627
- pkg: Use the real DAG in dependency resolver tests by @adamwg in https://github.com/crossplane/crossplane/pull/7655
- chore(deps): update dependency renovate to v43.287.0 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7625
- fix(ci): make the flake.lock schedule reachable and cover release branches by @jbw976 in https://github.com/crossplane/crossplane/pull/7661
- build: Calculate checksums after the nix fixup phase by @adamwg in https://github.com/crossplane/crossplane/pull/7660
- chore(deps): update dependency renovate to v43.288.0 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7664
- adopters: add Julius Baer by @erost in https://github.com/crossplane/crossplane/pull/7657
- chore(deps): update actions/stale digest to 1e223db (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7663
- chore(deps): update actions/checkout digest to d23441a (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7662
- lint: Tell the goconst linter to ignore tests by @adamwg in https://github.com/crossplane/crossplane/pull/7669
- chore(deps): update buildpulse/buildpulse-action action to v3 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7500
- chore(deps): update module github.com/sigstore/sigstore-go to v1.2.1 [security] (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7670
- chore(deps): update cachix/install-nix-action digest to 630ae54 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7672
- fix(deps): update module github.com/crossplane/crossplane/apis/v2 to v2.3.4 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7681
- chore(deps): update bufbuild/buf-action digest to 8c6a16e (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7671
- chore(deps): update docker/login-action digest to dbcb813 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7673
- chore(deps): update github/codeql-action digest to f205ea1 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7674
- fix(deps): update module github.com/google/go-containerregistry to v0.21.8 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7682
- fix(deps): update module github.com/aws/smithy-go to v1.27.6 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7680
- chore(deps): update korthout/backport-action action to v4.6.0 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7686
- Fix 4817 runtime ssa deployment by @RonaldLePape in https://github.com/crossplane/crossplane/pull/7563
- ci: skip BuildPulse flake publishing when credentials are absent by @phisco in https://github.com/crossplane/crossplane/pull/7691
- fix(ci): prioritize flake.lock maintenance updates by @jbw976 in https://github.com/crossplane/crossplane/pull/7695
- chore(deps): update renovatebot/github-action action to v46.2.1 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7694
- chore(deps): update github/codeql-action digest to d1ba80a (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7693
- chore(deps): update actions/checkout action to v7 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7690
- fix(claim): don't propagate XR machinery fields from claims by @phisco in https://github.com/crossplane/crossplane/pull/7626
- build: point docker-client at docker_29 in the nix overlay by @jbw976 in https://github.com/crossplane/crossplane/pull/7701
- chore(deps): lock file maintenance (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7696
- fix(ci): pin which Nix Renovate's post-upgrade tasks use by @jbw976 in https://github.com/crossplane/crossplane/pull/7709
- fix(deps): update module github.com/alecthomas/kong to v1.16.0 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7687
- build: bump pinned nixpkgs channel from nixos-25.11 to nixos-26.05 by @jbw976 in https://github.com/crossplane/crossplane/pull/7715
- Update the Netclab adopter entry by @mbakalarski in https://github.com/crossplane/crossplane/pull/7718
- pkg: Make deactivated revisions relinquish control of runtime resources by @adamwg in https://github.com/crossplane/crossplane/pull/7714
- chore(deps): update dependency renovate to v44 (main) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7698
- drop secret last-applied annotation from pipeline inspector output by @phisco in https://github.com/crossplane/crossplane/pull/7726
- chore(deps): bump crossplane-runtime to v2.4.0-rc.1 by @jbw976 in https://github.com/crossplane/crossplane/pull/7735
- chore(deps): update module golang.org/x/mod to v0.40.0 [security] (release-2.4) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7744
- [Backport release-2.4] fix(ci): pin negz/create-tag to v2 so apis/ submodule tagging works again by @github-actions[bot] in https://github.com/crossplane/crossplane/pull/7747
- chore(deps): lock file maintenance (release-2.4) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7754
- chore(deps): bump crossplane-runtime to v2.4.0 by @jbw976 in https://github.com/crossplane/crossplane/pull/7762
New Contributors
- @gadsilva made their first contribution in https://github.com/crossplane/crossplane/pull/7388
- @LorenzBischof made their first contribution in https://github.com/crossplane/crossplane/pull/7341
- @netliomax25-code made their first contribution in https://github.com/crossplane/crossplane/pull/7476
- @RonaldLePape made their first contribution in https://github.com/crossplane/crossplane/pull/7473
- @cazeaux made their first contribution in https://github.com/crossplane/crossplane/pull/7533
- @s3onghyun made their first contribution in https://github.com/crossplane/crossplane/pull/7526
- @youssefcamao made their first contribution in https://github.com/crossplane/crossplane/pull/7591
- @truongnht made their first contribution in https://github.com/crossplane/crossplane/pull/7561
- @alliasgher made their first contribution in https://github.com/crossplane/crossplane/pull/7564
- @amarkdotdev made their first contribution in https://github.com/crossplane/crossplane/pull/7547
- @erost made their first contribution in https://github.com/crossplane/crossplane/pull/7657
Full Changelog: https://github.com/crossplane/crossplane/compare/v2.3.0...v2.4.0
v2.3.4
v2.3.4 is a patch release scoped to fixing issues reported by users of Crossplane v2.3 and fixing security related issues in Crossplane and its dependencies.
🎉 Highlights
- Fixed repeated owner updates for composed Usages (#7597, originally #7591): The Usage controller only checked the first
ownerReferencewhen deciding whether thespec.byresource already owned the Usage. A Usage created by a Composition already has the composite as its first owner, sospec.byended up as a later owner and the controller issued an unnecessary update on every reconciliation — repeatedly re-triggering composition reconciliation and eventually opening the XR circuit breaker. It now checks all owner references. crossplane renderfixes (#7599, originally #7544):renderno longer overwrites the input XR's UID when one is already set, and now validates observed resources before proceeding with the render.- Vulnerability-scannable images (#7574): Container images are now built with
buildGoModule(replacinggomod2nix), so published images can be scanned by standard vulnerability tooling. - Dependency security updates: Bumps
grpc/golang.org/x/net/golang.org/x/text(#7618, #7614, #7615) and the sigstore stack —cosign(#7559),rekor(#7560),timestamp-authority(#7570),sigstore-go(#7583) — to pick up upstream CVE fixes. See## What's Changedfor the full list.
What's Changed
- chore(deps): update module github.com/sigstore/rekor to v1.5.2 [security] (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7560
- chore(deps): update module github.com/sigstore/cosign/v3 to v3.0.6 [security] (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7559
- chore(deps): update module github.com/sigstore/timestamp-authority/v2 to v2.1.0 [security] (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7570
- [Backport release-2.3] build(nix): build with buildGoModule so images are vulnerability-scannable by @phisco in https://github.com/crossplane/crossplane/pull/7574
- chore(deps): update module github.com/sigstore/sigstore-go to v1.2.0 [security] (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7583
- fix(deps): combined security bumps (grpc, x/net, x/text) (release-2.3) by @lsviben in https://github.com/crossplane/crossplane/pull/7618
- [Backport release-2.3] fix: avoid repeated owner updates for composed Usages by @github-actions[bot] in https://github.com/crossplane/crossplane/pull/7597
- [Backport release-2.3] render: Don't overwrite the input XR's UID if it has one and validate observed resources by @github-actions[bot] in https://github.com/crossplane/crossplane/pull/7599
- chore(deps): update module golang.org/x/text to v0.39.0 [security] (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7615
- chore(deps): update module golang.org/x/net to v0.56.0 [security] (release-2.3) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7614
Full Changelog: https://github.com/crossplane/crossplane/compare/v2.3.3...v2.3.4
v2.2.4
v2.2.4 is a patch release scoped to fixing issues reported by users of Crossplane v2.2 and fixing security related issues in Crossplane and its dependencies.
🎉 Highlights
- Fixed repeated owner updates for composed Usages (#7596, originally #7591): The Usage controller only checked the first
ownerReferencewhen deciding whether thespec.byresource already owned the Usage. A Usage created by a Composition already has the composite as its first owner, sospec.byended up as a later owner and the controller issued an unnecessary update on every reconciliation — repeatedly re-triggering composition reconciliation and eventually opening the XR circuit breaker. It now checks all owner references. - Vulnerability-scannable images (#7575): Container images are now built with
buildGoModule(replacinggomod2nix), so published images can be scanned by standard vulnerability tooling. - Dependency security updates: Bumps
grpc/golang.org/x/net/golang.org/x/text(#7619) and the sigstore stack —cosign(#7558),rekor(#7557),timestamp-authority(#7569),sigstore-go(#7582) — to pick up upstream CVE fixes. See## What's Changedfor the full list.
What's Changed
- chore(deps): update module github.com/sigstore/rekor to v1.5.2 [security] (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7557
- fix(deps): update module github.com/sigstore/cosign/v3 to v3.0.6 [security] (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7558
- chore(deps): update module github.com/sigstore/timestamp-authority/v2 to v2.1.0 [security] (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7569
- [Backport release-2.2] build(nix): build with buildGoModule so images are vulnerability-scannable by @phisco in https://github.com/crossplane/crossplane/pull/7575
- chore(deps): update module github.com/sigstore/sigstore-go to v1.2.0 [security] (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7582
- fix(deps): combined security bumps (grpc, x/net, x/text) (release-2.2) by @lsviben in https://github.com/crossplane/crossplane/pull/7619
- [Backport release-2.2] fix: avoid repeated owner updates for composed Usages by @github-actions[bot] in https://github.com/crossplane/crossplane/pull/7596
Full Changelog: https://github.com/crossplane/crossplane/compare/v2.2.3...v2.2.4
v2.1.8
v2.1.8 is a patch release scoped to fixing issues reported by users of Crossplane v2.1 and fixing security related issues in Crossplane's dependencies.
🎉 Highlights
- Fixed repeated owner updates for composed Usages (#7622, originally #7591): The Usage controller only checked the first
ownerReferencewhen deciding whether thespec.byresource already owned the Usage. A Usage created by a Composition already has the composite as its first owner, sospec.byended up as a later owner and the controller issued an unnecessary update on every reconciliation — repeatedly re-triggering composition reconciliation and eventually opening the XR circuit breaker. It now checks all owner references. - Dependency security updates: Bumps the Go toolchain to
1.25.12(#7577),grpc/golang.org/x/net/golang.org/x/text(#7620, #7609), and the sigstore stack —cosign(#7556),rekor(#7555),timestamp-authority(#7568),sigstore-go(#7581) — to pick up upstream CVE fixes. See## What's Changedfor the full list.
What's Changed
- chore(deps): update module github.com/sigstore/rekor to v1.5.2 [security] (release-2.1) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7555
- chore(deps): update module github.com/sigstore/timestamp-authority/v2 to v2.1.0 [security] (release-2.1) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7568
- fix(deps): update module github.com/sigstore/cosign/v2 to v2.6.3 [security] (release-2.1) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7556
- build(deps): bump Go to 1.25.12 [security] [release-2.1] by @phisco in https://github.com/crossplane/crossplane/pull/7577
- chore(deps): update module github.com/sigstore/sigstore-go to v1.2.0 [security] (release-2.1) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7581
- fix(deps): combined security bumps (grpc, x/net, x/text) (release-2.1) by @lsviben in https://github.com/crossplane/crossplane/pull/7620
- chore(deps): update module golang.org/x/text to v0.39.0 [security] (release-2.1) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7609
- [Backport release-2.1] fix: avoid repeated owner updates for composed Usages by @phisco in https://github.com/crossplane/crossplane/pull/7622
Full Changelog: https://github.com/crossplane/crossplane/compare/v2.1.7...v2.1.8
v2.3.3
v2.3.3 is a patch release scoped to fixing issues reported by users of Crossplane v2.3 and fixing security related issues in Crossplane's dependencies.
🎉 Highlights
- Fixed package signature verification TOCTOU (
GHSA-mf7q-r4rv-jv94): A time-of-check-to-time-of-use flaw could let a malicious OCI registry pass signature verification with a signed image and then serve unsigned content for installation. Forv2.3this fix ships via the crossplane-runtimev2.3.3bump in #7541, since the affected code moved fromcrossplanetocrossplane-runtimeduring thev2.3milestone. See the crossplane-runtimev2.3.3release notes for the full details. - Correct namespace on injected resource refs in
crossplane render:crossplane renderpreviously set a namespace on every injected resource reference, which is inaccurate for namespaced XRs (whose resource refs are local and carry no namespace) and broke composition functions with strict schemas, such as the generated KCL bindings used in control plane projects. Render now matches the real reconciler and sets the namespace only for cluster-scoped XRs. Backported in #7525, originally fixed in #7523. - Dependency security updates: This release also bumps the Go toolchain to
1.25.11andgolang.org/x/netandgolang.org/x/sysin theapismodule to pick up CVE fixes (#7530). See## What's Changedbelow for the full list.
What's Changed
- [Backport release-2.3] render: Set namespace on injected resource refs only for cluster-scoped XRs by @github-actions[bot] in https://github.com/crossplane/crossplane/pull/7525
- [release-2.3] bump Go to 1.25.11 and apis golang.org/x/net, x/sys for CVEs [security] by @phisco in https://github.com/crossplane/crossplane/pull/7530
- Update crossplane-runtime to v2.3.3 by @lsviben in https://github.com/crossplane/crossplane/pull/7541
Full Changelog: https://github.com/crossplane/crossplane/compare/v2.3.2...v2.3.3
v2.2.3
v2.2.3 is a patch release scoped to fixing issues reported by users of Crossplane v2.2 and fixing security related issues in Crossplane and its dependencies.
🎉 Highlights
- Fixed package signature verification TOCTOU (
GHSA-wfqx-gjrf-g28r): A time-of-check-to-time-of-use flaw would let a malicious OCI registry serve a correctly signed image for verification and then an unsigned image for installation, because Crossplane resolved tag references separately for each step. Crossplane now resolves a tag to a digest once and uses that same digest for both signature verification and the image pull, so the content that is verified is exactly the content that is installed. This affected only users who enable package signature verification, install packages by tag, and pull from registries they don't control. Installing by digest would avoid this issue. Backported in #7520, and reported independently by @bugbunny-research and @tonghuaroot.- Note this fix appears in
crossplanefor v2.2 andcrossplane-runtimefor v2.3 because the affected code was moved fromcrossplanetocrossplane-runtimeduring the v2.3 milestone.
- Note this fix appears in
- Dependency security updates: This release also bumps the Go toolchain to
1.25.11(#7529),golang.org/x/nettov0.55.0(#7438), and crossplane-runtime tov2.2.3(#7540), picking up security fixes in those upstream dependencies.
What's Changed
- chore(deps): update module golang.org/x/net to v0.55.0 [security] (release-2.2) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7438
- Backport xpkg signature verification fix to release-2.2 by @adamwg in https://github.com/crossplane/crossplane/pull/7520
- [release-2.2] bump Go to 1.25.11 [security] by @phisco in https://github.com/crossplane/crossplane/pull/7529
- Update crossplane-runtime to v2.2.3 by @lsviben in https://github.com/crossplane/crossplane/pull/7540
Full Changelog: https://github.com/crossplane/crossplane/compare/v2.2.2...v2.2.3
v2.1.7
v2.1.7 is a patch release scoped to fixing issues reported by users of Crossplane v2.1 and fixing security related issues in Crossplane's dependencies.
What's Changed
- chore(deps): update module github.com/quic-go/quic-go to v0.59.1 [security] (release-2.1) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7460
- chore(deps): update module golang.org/x/net to v0.55.0 [security] (release-2.1) by @crossplane-renovate[bot] in https://github.com/crossplane/crossplane/pull/7437
- [release-2.1] bump Go to 1.25.11 [security] by @phisco in https://github.com/crossplane/crossplane/pull/7528
- Update crossplane-runtime to v2.1.7 by @lsviben in https://github.com/crossplane/crossplane/pull/7539
Full Changelog: https://github.com/crossplane/crossplane/compare/v2.1.6...v2.1.7
v2.3.2
v2.3.2 is a patch release scoped to fixing issues reported by users of Crossplane v2.3 and fixing security related issues in Crossplane's dependencies. The primary goal of this release is to fix regressions in the Crossplane CLI's render commands.
What's Changed
- [Backport release-2.3] build: tag the apis/ Go submodule on every release by @github-actions[bot] in https://github.com/crossplane/crossplane/pull/7445
- Backport #7452 to release-2.3: render honors input XR schema by @jcogilvie in https://github.com/crossplane/crossplane/pull/7459
- Backport #7455 to release-2.3: return requirements even on fatal errors by @jcogilvie in https://github.com/crossplane/crossplane/pull/7466
- Bump crossplane-runtime dependency to v2.3.2 (release-2.3) by @adamwg in https://github.com/crossplane/crossplane/pull/7474
- [Backport release-2.3] fix: add namespace to resourceref stable sort by @github-actions[bot] in https://github.com/crossplane/crossplane/pull/7475
Full Changelog: https://github.com/crossplane/crossplane/compare/v2.3.1...v2.3.2