# CVE-2026-32694: Insecure Direct Object Reference attack via predictable secret ID in Juju

> A malicious grantee can predict secret IDs to access resources from past secrets granted by the same owner in Juju.

- **Severity:** Medium 6.6 (`CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H`)
- **Exploited in the wild:** Not known
- **Login needed:** An administrator
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 18 Mar 2026
- **Updated:** 18 Mar 2026
- **Also known as:** GHSA-5cj2-rqqf-hx9p, GO-2026-4778

## What is CVE-2026-32694?

CVE-2026-32694 is a medium-severity vulnerability in Canonical Juju, published on 18 Mar 2026. An attacker needs administrator access to exploit it, with no action from the victim.

### Official description

In Juju from version 3.0.0 through 3.6.18, when a secret owner grants permissions to a secret to a grantee, the secret owner relies exclusively on a predictable XID of the secret to verify ownership. This allows a malicious grantee which can request secrets to predict past secrets granted by the same secret owner to different grantees, allowing them to use the resources granted by those past secrets. Successful exploitation relies on a very specific configuration, specific data semantic, and the administrator having the need to deploy at least two different applications, one of them controlled by the attacker.

Weakness: CWE-639 (Authorization Bypass Through User-Controlled Key), CWE-343 (Predictable Value Range from Previous Values)

## Which versions are affected by CVE-2026-32694?

3 open source packages ship an affected version, including github.com/juju/juju. It affects 1 product.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `github.com/juju/juju` | Go | From 0.0.0-20221021155847-35c560704ee2 | 0.0.0-20260319091847-d06919eb03ec |
| `github.com/juju/juju` | Go | From 0.0.0-20221021155847-35c560704ee2 | 0.0.0-20260319091847-d06919eb03ec |
| `github.com/juju/juju` | Go | From 0.0.0-20221021155847-35c560704ee2 | 0.0.0-20260319091847-d06919eb03ec |

Products: Canonical Juju.

## How do I fix CVE-2026-32694?

Upgrade github.com/juju/juju to 0.0.0-20260319091847-d06919eb03ec or later.

## Is CVE-2026-32694 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-32694 exists.

## Other vulnerabilities in Canonical Juju

- [CVE-2026-4370](https://insights.sbomify.com/CVE-2026-4370/): Improper TLS Client/Server authentication and certificate verification on Database Cluster (critical 10.0)
- [CVE-2026-5412](https://insights.sbomify.com/CVE-2026-5412/): Juju CloudSpec API could leak senstive information (critical 9.9)
- [CVE-2017-9232](https://insights.sbomify.com/CVE-2017-9232/): Juju uses a UNIX domain socket without setting appropriate permissions (critical 9.8)
- [CVE-2026-32693](https://insights.sbomify.com/CVE-2026-32693/): Unauthorized access to Kubernetes secrets in Juju (high 8.8)
- [CVE-2025-0928](https://insights.sbomify.com/CVE-2025-0928/): Arbitrary executable upload via authenticated endpoint (high 8.8)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-32694 and fix it if it is affected.

What it is: CVE-2026-32694 is a medium-severity vulnerability in Canonical Juju, published on 18 Mar 2026. An attacker needs administrator access to exploit it, with no action from the victim.
Exploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-32694 exists.

Affected packages and fixed versions:
- github.com/juju/juju (Go): affected from 0.0.0-20221021155847-35c560704ee2; fixed in 0.0.0-20260319091847-d06919eb03ec
- github.com/juju/juju (Go): affected from 0.0.0-20221021155847-35c560704ee2; fixed in 0.0.0-20260319091847-d06919eb03ec
- github.com/juju/juju (Go): affected from 0.0.0-20221021155847-35c560704ee2; fixed in 0.0.0-20260319091847-d06919eb03ec

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-32694/ (Markdown: https://insights.sbomify.com/CVE-2026-32694/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-32694
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-32694
- OSV: https://osv.dev/vulnerability/CVE-2026-32694

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-32694/
Summaries are generated and may contain mistakes; the official description above is the record.
