# CVE-2026-69197: Umbraco: Delivery API leaks protected (Public Access) content through Content Picker / Multi-Node Tree Picker expansion

> Attackers can bypass Public Access restrictions to read protected content metadata and values via Content Picker expansion in Umbraco Delivery API.

- **Severity:** High 8.7 (`CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 17 Sep 2026
- **Updated:** 17 Sep 2026
- **Also known as:** GHSA-wr57-hqmp-fgvh

## What is CVE-2026-69197?

CVE-2026-69197 is a high-severity missing authorization vulnerability in Umbraco-CMS, published on 17 Sep 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

Umbraco is an ASP.NET CMS. Prior to 13.15.1, 17.5.3, and 18.0.2, the Content Delivery API applies member and Public Access checks to the directly requested node but not to referenced nodes serialized through Content Picker or Multi-Node Tree Picker properties, including pickers nested in Block List, Block Grid, or Rich Text Editor blocks. When DeliveryApi:PublicAccess is enabled, an anonymous caller can retrieve a protected node's name, route, and id through an unprotected referencing node and use ?expand to retrieve full property values. When the Delivery API is instead gated by the organization-wide API key, a key holder can still bypass per-node Public Access through the same expansion path. The same RequestContextOutputExpansionStrategyV2 and ElementOnlyOutputExpansionStrategy path also bypasses allowed or disallowed content-type alias restrictions for referenced content. Direct requests for the protected node still return 401, and no integrity or availability impact is established. This issue is fixed in versions 13.15.1, 17.5.3, and 18.0.2.

Weakness: CWE-862 (Missing Authorization), CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor)

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

6 open source packages ship an affected version, including Umbraco.Cms.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `Umbraco.Cms` | NuGet | From 12.0.0 | 13.15.1 |
| `Umbraco.Cms` | NuGet | From 12.0.0 | 13.15.1 |
| `Umbraco.Cms` | NuGet | From 14.0.0-rc1 | 17.5.3 |
| `Umbraco.Cms` | NuGet | From 14.0.0-rc1 | 17.5.3 |
| `Umbraco.Cms` | NuGet | From 18.0.0 | 18.0.2 |
| `Umbraco.Cms` | NuGet | From 18.0.0 | 18.0.2 |

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

Upgrade Umbraco.Cms to a fixed version for your release line: 13.15.1, 17.5.3 or 18.0.2.

## Is CVE-2026-69197 being exploited?

There is no known exploitation of CVE-2026-69197 in the wild and no public exploit code.

## Fix prompt for AI coding agents

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

What it is: CVE-2026-69197 is a high-severity missing authorization vulnerability in Umbraco-CMS, published on 17 Sep 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2026-69197 in the wild and no public exploit code.

Affected packages and fixed versions:
- Umbraco.Cms (NuGet): affected from 12.0.0; fixed in 13.15.1
- Umbraco.Cms (NuGet): affected from 12.0.0; fixed in 13.15.1
- Umbraco.Cms (NuGet): affected from 14.0.0-rc1; fixed in 17.5.3
- Umbraco.Cms (NuGet): affected from 14.0.0-rc1; fixed in 17.5.3
- Umbraco.Cms (NuGet): affected from 18.0.0; fixed in 18.0.2
- Umbraco.Cms (NuGet): affected from 18.0.0; fixed in 18.0.2

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-69197/ (Markdown: https://insights.sbomify.com/CVE-2026-69197/index.md)
```

## Sources

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

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