CVE-2022-39272 is a medium-severity (CVSS 5) CWE-1284 vulnerability in github.com/fluxcd/flux2. A fix is available for github.com/fluxcd/flux2 — see the affected versions and patch details below.
Flux2 vulnerable to Denial of Service due to Improper use of metav1.Duration
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
github.com/fluxcd/flux2🐹github.com/fluxcd/source-controller🐹github.com/fluxcd/kustomize-controller🐹github.com/fluxcd/helm-controller🐹github.com/fluxcd/notification-controller🐹github.com/fluxcd/image-automation-controller🐹github.com/fluxcd/image-reflector-controller🐹github.com/fluxcd/helm-controller/api+5 moreReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
Flux controllers within the affected versions range are vulnerable to a denial of service attack. Users that have permissions to change Flux’s objects, either through a Flux source or directly within a cluster, can provide invalid data to fields .spec.interval or .spec.timeout (and structured variations of these fields), causing the entire object type to stop being processed.
The issue has two root causes: a) the Kubernetes type metav1.Duration not being fully compatible with the Go type time.Duration as explained on upstream report; b) lack of validation within Flux to restrict allowed values.
Workarounds
Admission controllers can be employed to restrict the values that can be used for fields .spec.interval and .spec.timeout, however upgrading to the latest versions is still the recommended mitigation.
Credits
This issue was reported by Alexander Block (@codablock) through the Flux security mailing list (as recommended).
For more information
If you have any questions or comments about this advisory:
- Open an issue in any of the affected repositories.
- Contact us at the CNCF Flux channel.
References
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/fluxcd/flux2 | ≥ 0.1.0&&< 0.35.0 | 0.35.0go get github.com/fluxcd/flux2@v0.35.0 |
| 🐹Go | github.com/fluxcd/source-controller | ≥ 0.0.1-alpha-1&&< 0.30.0 | 0.30.0go get github.com/fluxcd/source-controller@v0.30.0 |
| 🐹Go | github.com/fluxcd/kustomize-controller | ≥ 0.0.1-alpha-1&&< 0.29.0 | 0.29.0go get github.com/fluxcd/kustomize-controller@v0.29.0 |
| 🐹Go | github.com/fluxcd/helm-controller | ≥ 0.0.1-alpha-1&&< 0.24.0 | 0.24.0go get github.com/fluxcd/helm-controller@v0.24.0 |
| 🐹Go | github.com/fluxcd/notification-controller | ≥ 0.0.1-alpha-1&&< 0.27.0 | 0.27.0go get github.com/fluxcd/notification-controller@v0.27.0 |
| 🐹Go | github.com/fluxcd/image-automation-controller | ≥ 0.1.0&&< 0.26.0 | 0.26.0go get github.com/fluxcd/image-automation-controller@v0.26.0 |
Affected Products
flux2fluxcdhelm-controllerfluxcdimage-automation-controllerfluxcdimage-reflector-controllerfluxcdkustomize-controllerfluxcdnotification-controllerfluxcdDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/fluxcd/flux2, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update github.com/fluxcd/flux2 to 0.35.0 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2022-39272 is resolved across your whole dependency graph.
Workarounds
Cap what an attacker can consume: apply request size, rate and timeout limits in front of the affected component, and run it with memory and CPU limits so exhaustion degrades one worker rather than the whole service.
Frequently Asked Questions
Is CVE-2022-39272 in your dependencies?
Find it across Go, including transitive dependencies.