Safeguard
Supply Chain Security•

Adobe APSB26-163: 30 CVEs in the C2PA Content Credentials SDKs

Adobe's October 2026 bulletin for c2pa-rs, c2patool and @contentauth/c2pa-web lists 30 CVEs, most of them ways to make provenance checks pass when they should fail.

Safeguard Security Team
5 min read

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

ProductAffected (per Adobe)Fixed
Content Credentials Rust SDK, crate c2pac2pa-v0.90.15 and earlierc2pa-v0.91.1
C2PA Tool, crate c2patoolc2patool-v0.27.15 and earlierc2patool-v0.28.1
Content Credentials JS SDK, npm @contentauth/c2pa-web0.13.4 and earlier0.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

  1. Upgrade the Rust SDK to c2pa 0.91.1 or later (cargo update -p c2pa, or raise the version in Cargo.toml if it is pinned), then rebuild.
  2. Upgrade c2patool to 0.28.1 or later on every machine and container that runs it.
  3. Upgrade @contentauth/c2pa-web to 0.15.3 or later and redeploy front ends that validate manifests in the browser.
  4. 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.
  5. 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.

Sources

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.