On 13 October 2026 Adobe published security bulletin APSB26-163 for its Content Credentials SDKs, the open source libraries that read, sign and validate C2PA provenance manifests. The bulletin lists 30 CVEs across the Rust SDK (c2pa-rs), the command line tool c2patool and the JavaScript SDK @contentauth/c2pa-web.
Adobe rates the update priority 3 and says it is not aware of exploits in the wild. The volume and the type of bugs are what stand out. Most of the 30 are security feature bypasses: certificate validation, signature verification and input validation flaws in a library whose entire job is to tell you whether a piece of media's provenance can be trusted.
What's affected
| Product | Affected (per Adobe) | Fixed |
|---|---|---|
Content Credentials Rust SDK, crate c2pa | c2pa-v0.90.15 and earlier | c2pa-v0.91.1 |
C2PA Tool, crate c2patool | c2patool-v0.27.15 and earlier | c2patool-v0.28.1 |
Content Credentials JS SDK, npm @contentauth/c2pa-web | 0.13.4 and earlier | 0.15.3 |
Adobe classes 20 of the CVEs as High and 10 as Medium. The breakdown by impact:
- Security feature bypass: certificate validation (CWE-295, for example CVE-2026-100121, CVE-2026-100122 and CVE-2026-100123), signature verification (CWE-347, CVE-2026-95632 and others), input validation and access control issues. Most score 7.5 with network attack vector and integrity impact.
- SSRF: CVE-2026-95634, CVSS 8.6 with changed scope, the highest score in the bulletin.
- Denial of service: resource consumption and an integer overflow (for example CVE-2026-100136 through CVE-2026-100139 and CVE-2026-106627), all 7.5.
- Arbitrary file system write: CVE-2026-103820, a path traversal rated 5.5 that requires local access and user interaction.
The CVE record for CVE-2026-95632 describes the effect of the signature verification flaw as letting an attacker "bypass security measures and gain unauthorized write access."
One detail to plan around: Adobe names only the endpoints of each range. crates.io shows c2pa releases 0.90.16 through 0.90.22 between the last listed affected version and the fix, and npm shows @contentauth/c2pa-web 0.14.0 through 0.15.2 between 0.13.4 and 0.15.3. The bulletin does not say whether those are affected. The safe reading is that only the listed fixed versions and later are known good. The fixes were already on the registries before the bulletin: crates.io shows c2pa 0.91.1 on 27 September and npm shows c2pa-web 0.15.3 on 30 September.
How to check if you're exposed
For Rust projects, ask Cargo who pulls the crate in, since it is often a transitive dependency of media tooling:
cargo tree -i c2pa
cargo tree -i c2patool 2>/dev/null
For JavaScript projects:
npm ls @contentauth/c2pa-web
# or
pnpm why @contentauth/c2pa-web
For the CLI on build agents and media pipelines:
c2patool --version
Other language bindings are not named in the bulletin. If you use one, check which c2pa-rs version it bundles before assuming it is unaffected.
What to do now
- Upgrade the Rust SDK to
c2pa0.91.1 or later (cargo update -p c2pa, or raise the version inCargo.tomlif it is pinned), then rebuild. - Upgrade
c2patoolto 0.28.1 or later on every machine and container that runs it. - Upgrade
@contentauth/c2pa-webto 0.15.3 or later and redeploy front ends that validate manifests in the browser. - Re-validate content you accepted on the strength of a C2PA check if your workflow made trust decisions automatically, such as labeling uploads as verified. A validation bypass means an earlier "valid" result may not have been earned.
- Isolate validation of untrusted files. Given the SSRF and the resource exhaustion bugs, run manifest validation of user uploads in a sandbox with memory limits and restricted network egress.
Why it matters
Provenance libraries are security components, even when they arrive in a media team's dependency list rather than the security team's. When a signature or certificate check can be bypassed, the failure is silent: the library returns a confident answer that is wrong, and nothing downstream knows to doubt it.
Thirty CVEs in one bulletin also tells you the code has had a lot of new eyes on it. Expect more. Treat C2PA libraries the way you treat TLS or JWT libraries: pin them, watch their advisories, and update quickly.
Try it yourself
If you ship a web front end that uses @contentauth/c2pa-web, drop its package.json into https://gold.safeguard.sh/scan. It runs in your browser, the file never leaves your machine, and it handles up to 100 dependencies per scan. Then run cargo tree -i c2pa in any Rust service that processes images and see whether you knew it was there.
Click through it at your own pace, or open it full screen.
Quick check
Which versions does Adobe list as fixed in APSB26-163?
c2pa-v0.91.1 for the Rust SDK, c2patool-v0.28.1 for the CLI, and 0.15.3 for @contentauth/c2pa-web.
What kind of flaw dominates the bulletin?
Security feature bypasses, mostly in certificate validation, signature verification and input validation. Those can make a provenance check report success when it should fail.
Is c2pa 0.90.20 safe because Adobe only lists 0.90.15 and earlier?
The bulletin does not say. It names 0.90.15 and earlier as affected and 0.91.1 as fixed, so the versions in between have no stated status. Upgrade to 0.91.1 or later.