CVE-2025-0928 Overview
CVE-2025-0928 is a high-severity authorization flaw in Canonical Juju, the open-source application orchestration tool used to deploy and manage workloads across clouds and Kubernetes. In versions prior to 3.6.8 and 2.9.52, any authenticated controller user could upload arbitrary agent binaries to any model or to the controller itself. Juju did not verify model membership or require explicit permissions before accepting the upload. Attackers can distribute poisoned binaries to new or upgraded machines, leading to remote code execution on managed nodes. The issue is tracked under CWE-285 (Improper Authorization) and CWE-434 (Unrestricted Upload of File with Dangerous Type).
Critical Impact
Any authenticated Juju user can poison agent binaries and achieve remote code execution on controllers and managed machines across all models.
Affected Products
- Canonical Juju versions prior to 3.6.8
- Canonical Juju versions prior to 2.9.52
- Juju controllers and managed models running affected releases
Discovery Timeline
- 2025-07-08 - CVE-2025-0928 published to NVD
- 2026-06-17 - Last updated in NVD database
Technical Details for CVE-2025-0928
Vulnerability Analysis
Juju controllers expose an API endpoint for uploading agent binaries, which are the executables distributed to machines and units that Juju manages. Affected releases accept uploads from any authenticated controller user without checking whether the user belongs to the target model or holds an administrative role. The server stores the uploaded binary in the controller's blob store and serves it to agents during machine provisioning or upgrade operations.
Because Juju agents trust binaries delivered by the controller, a poisoned upload is executed with the privileges of the agent process on every recipient machine. This produces remote code execution across the controller and all managed nodes that pull the tampered binary.
Root Cause
The root cause is missing authorization on the agent-binary upload path. The controller authenticates the caller but does not enforce model membership or a permission check tied to the model or controller. Combined with unrestricted file upload semantics, the API treats any authenticated user as trusted to publish agent code.
Attack Vector
Exploitation requires network access to the Juju controller API and valid credentials for any controller user, including low-privileged accounts. The attacker authenticates, calls the agent-binary upload API, and supplies a malicious binary for an arbitrary series, arch, and version tuple. When a machine is added, upgraded, or otherwise fetches the matching agent, the controller serves the poisoned binary, which then executes on the target. No user interaction is required at the victim end.
No public proof-of-concept code is referenced in the advisory. Technical details are documented in the GitHub Security Advisory GHSA-4vc8-wvhw-m5gv.
Detection Methods for CVE-2025-0928
Indicators of Compromise
- Unexpected entries in the Juju controller's tools or agent-binary storage that do not correspond to a known release published by Canonical.
- Agent binary hashes on managed machines that do not match the official upstream checksums for the deployed Juju version.
- API audit log entries showing tools or agent binary uploads from non-administrative user accounts.
Detection Strategies
- Review Juju controller logs for POST requests to the agent binary upload endpoint and correlate them with the uploading user and source IP.
- Compare deployed agent binaries on machines and units against vendor-published SHA-256 checksums for the controller's Juju version.
- Inspect model and controller permission grants for users who issued recent binary uploads to confirm they had legitimate administrative roles.
Monitoring Recommendations
- Forward Juju controller API and audit logs to a centralized logging platform and alert on any agent binary upload activity.
- Track machine and unit upgrade events and flag installations of agent versions or hashes that were not approved through change management.
- Monitor outbound connections from Juju-managed machines for unusual command-and-control traffic that could indicate execution of a poisoned agent.
How to Mitigate CVE-2025-0928
Immediate Actions Required
- Upgrade Juju controllers to version 3.6.8 or 2.9.52 and ensure all managed agents are upgraded to a fixed release.
- Audit controller user accounts and revoke access for any user who does not require it; rotate credentials and API macaroons for remaining users.
- Review the controller's agent binary store and remove any unexpected uploads, then redeploy or re-provision machines that may have received a poisoned binary.
Patch Information
Canonical addressed the issue in Juju 3.6.8 and 2.9.52. The fix enforces authorization on the agent binary upload API so that only users with appropriate model or controller permissions can publish binaries. See the Juju GitHub Security Advisory GHSA-4vc8-wvhw-m5gv for the official patch references and release notes.
Workarounds
- Restrict network access to the Juju controller API to trusted administrative networks until patches are applied.
- Limit controller user creation and remove any accounts that do not require interactive access to the controller.
- Monitor and gate agent upgrades through change control so that unexpected binary versions are caught before being deployed to machines.
# Verify the Juju controller version and upgrade to a fixed release
juju show-controller | grep agent-version
juju upgrade-controller --agent-version=3.6.8
juju upgrade-model --agent-version=3.6.8
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

