---
id: "CVE-2026-85248"
kind: "vulnerability"
aliases: ["CVE-2026-85248"]
title: "Apache Camel PQC: shared Signature instance lets verification pass unchecked"
severity: "medium"
cvss: 5.9
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["apache-camel", "camel-pqc", "java", "package"]
not_affected_if: ["no-pqc-component", "unaffected-version"]
published_at: "2026-10-19T11:17:22+00:00"
first_seen_at: "2026-10-23T21:57:18+00:00"
updated_at: "2026-10-25T04:08:46+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-85248", "first_seen_at": "2026-10-23T21:57:18+00:00"}]
---

# Apache Camel PQC: shared Signature instance lets verification pass unchecked

The Apache Camel PQC component shares one java.security.Signature object across concurrent exchanges, so update and verify calls from different messages interleave. A message can be reported as verified when its signature was never actually checked.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the Apache Camel version in the project build file (pom.xml or build.gradle) and confirm whether camel-pqc is on the classpath
- Look for routes that use the PQC component (`pqc:` endpoints) with concurrent consumers
- Run `mvn dependency:tree | grep camel-pqc` to confirm the component version

## Fix

- Upgrade Apache Camel to `4.23.0`
- On the 4.18.x LTS stream, upgrade to `4.18.5`
- On the 4.22.x LTS stream, upgrade to `4.22.1`
- If you cannot upgrade yet, restrict the affected route to a single concurrent consumer

## Timeline

- 2026-10-23T21:57:18+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-85248

## From the sources

Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition') vulnerability in Apache Camel PQC component.

This issue affects Apache Camel: from 4.12.0 before 4.18.5, from 4.19.0 before 4.22.1.




The producer held a single java.security.Signature instance and used it for every exchange without synchronizing access. Signature is stateful and is not thread safe: update() accumulates the data to be signed or verified, and verify() consumes that accumulated state. With concurrent exchanges sharing one instance the update and verify calls of different messages interleave, so a verification can complete against data that belongs to another exchange, or against a partially accumulated buffer. The outcome is non-deterministic and includes a verification reporting success for a message whose signature was never actually checked, which defeats the guarantee the component exists to provide. Reaching it requires concurrent traffic through the same endpoint, which is the ordinary condition for a Camel route under load.

Upgrade to Apache Camel 4.23.0, which fixes the issue. Users on the 4.18.x LTS releases stream should upgrade to 4.18.5. Users on the 4.22.x LTS releases stream should upgrade to 4.22.1. The Signature instance is no longer shared across concurrent exchanges. For deployments that cannot upgrade immediately, restrict the affected route to a single concurrent consumer so that no two exchanges use the instance at once.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
