CVE-2025-53513

8.8 HIGH

📋 TL;DR

This vulnerability allows any authenticated user on a Juju controller to upload malicious charms via the /charms endpoint due to insufficient authorization checks. Combined with a Zip Slip vulnerability in the uploaded charm, attackers could gain access to machines running affected units. All Juju deployments with the vulnerable endpoint exposed are affected.

💻 Affected Systems

Products:
  • Juju
Versions: All versions prior to the fix
Operating Systems: All platforms running Juju
Default Config Vulnerable: ⚠️ Yes
Notes: Affects Juju controllers with the /charms endpoint accessible. The vulnerability requires an attacker to have a valid account on the controller.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Full compromise of machines running Juju units through arbitrary file write leading to remote code execution, potentially allowing lateral movement within the infrastructure.

🟠

Likely Case

Unauthorized charm upload leading to file system manipulation on target machines, potentially enabling data theft, service disruption, or further exploitation.

🟢

If Mitigated

Limited to authenticated users only, with proper network segmentation reducing attack surface to internal trusted users.

🌐 Internet-Facing: HIGH if the Juju controller API is exposed to the internet, as authenticated users can exploit this vulnerability remotely.
🏢 Internal Only: HIGH for internal networks, as any user with controller access can exploit this vulnerability to compromise other systems.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires authentication to the Juju controller and creation of a malicious charm with Zip Slip payload. The vulnerability chain (auth bypass + Zip Slip) makes exploitation feasible for attackers with basic Juju knowledge.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Check the GitHub security advisory for specific fixed versions

Vendor Advisory: https://github.com/juju/juju/security/advisories/GHSA-24ch-w38v-xmh8

Restart Required: Yes

Instructions:

1. Update Juju to the latest patched version. 2. Restart Juju controller services. 3. Verify the fix by testing charm upload authorization.

🔧 Temporary Workarounds

Restrict access to /charms endpoint

linux

Implement network access controls to limit which users/systems can reach the Juju controller API endpoint.

# Use firewall rules to restrict access to Juju controller port
sudo ufw deny from any to <juju_ip> port <api_port> except trusted_networks

Implement API gateway authentication

all

Add additional authentication layer in front of Juju controller API to validate user permissions.

# Configure reverse proxy with additional auth (example for nginx)
location /charms {
  auth_basic "Restricted";
  auth_basic_user_file /etc/nginx/.htpasswd;
  proxy_pass http://juju-controller:port;
}

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate Juju controllers from untrusted networks.
  • Review and restrict user accounts on Juju controllers to only necessary personnel with minimal privileges.

🔍 How to Verify

Check if Vulnerable:

Attempt to upload a charm via the /charms endpoint with a user account that should not have upload permissions. If successful, the system is vulnerable.

Check Version:

juju version

Verify Fix Applied:

After patching, attempt the same charm upload with unauthorized user - it should be rejected with proper authorization error.

📡 Detection & Monitoring

Log Indicators:

  • Unauthorized charm upload attempts in Juju controller logs
  • Failed authorization checks for /charms endpoint
  • Unexpected charm uploads from non-admin users

Network Indicators:

  • Unusual POST requests to /charms endpoint from unexpected sources
  • Large file uploads to charm endpoint followed by unit deployment

SIEM Query:

source="juju-controller.log" AND ("charm upload" OR "/charms") AND NOT user="admin"

🔗 References

📤 Share & Export