This is an automated email from the ASF dual-hosted git repository.

oscerd pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new c13cee4ed7db docs: document API-component and semantic-header triage 
scope; add Security to user-manual nav (#23253)
c13cee4ed7db is described below

commit c13cee4ed7dbc373469e6bf08487d46939bf0054
Author: Andrea Cosentino <[email protected]>
AuthorDate: Fri May 15 18:01:08 2026 +0200

    docs: document API-component and semantic-header triage scope; add Security 
to user-manual nav (#23253)
    
    * docs: document API-component and semantic-header triage scope in security 
model
    
    Clarifies two recurring security-triage questions in the project security
    model so the PMC and reporters apply a consistent position:
    
    - Camel-prefixed API-component headers (CamelFhir.*, CamelBox.*, ...) 
reaching
      an API producer from an untrusted source: in scope is conditional on the
      inbound consumer's case-insensitive Camel* HeaderFilterStrategy, not the 
API
      producer; it is not always out of scope.
    - Non-prefixed semantic headers a component reads (To, Cc in camel-mail, 
...):
      one uniform rule (framework auto-filtering covers only the internal
      Camel*/org.apache.camel.* namespace; the rest is route-author 
responsibility
      and a per-component documented contract), with the inbound-filter and
      path-traversal classes still applying independently.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
    
    * docs: add Security section to user-manual navigation
    
    The Security and Security Model pages were reachable only by direct link.
    Add a top-level Security group to the user-manual left navigation so both
    are discoverable from the docs site.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
    
    ---------
    
    Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
---
 docs/user-manual/modules/ROOT/nav.adoc             |  3 ++
 .../modules/ROOT/pages/security-model.adoc         | 36 ++++++++++++++++++++++
 2 files changed, 39 insertions(+)

diff --git a/docs/user-manual/modules/ROOT/nav.adoc 
b/docs/user-manual/modules/ROOT/nav.adoc
index fe52dc760287..1d8dd9deb0b0 100644
--- a/docs/user-manual/modules/ROOT/nav.adoc
+++ b/docs/user-manual/modules/ROOT/nav.adoc
@@ -42,6 +42,9 @@
 ** xref:camel-3x-upgrade-guide.adoc[Camel 3.x Upgrade Guide]
 ** xref:camel-4-migration-guide.adoc[Camel 3.x to 4.0 Migration Guide]
 ** xref:camel-4x-upgrade-guide.adoc[Camel 4.x Upgrade Guide]
+* Security
+** xref:security.adoc[Security]
+** xref:security-model.adoc[Security Model]
 * xref:architecture.adoc[Architecture]
 ** xref:backlog-debugger.adoc[Backlog debugger]
 ** xref:backlog-tracer.adoc[Backlog Tracer]
diff --git a/docs/user-manual/modules/ROOT/pages/security-model.adoc 
b/docs/user-manual/modules/ROOT/pages/security-model.adoc
index bd26f25008ed..eedbb5a564c0 100644
--- a/docs/user-manual/modules/ROOT/pages/security-model.adoc
+++ b/docs/user-manual/modules/ROOT/pages/security-model.adoc
@@ -248,6 +248,23 @@ filter), CVE-2026-33453 (`camel-coap`), CVE-2026-33454 
(`camel-mail`),
 CVE-2026-40453 (`camel-jms`, `camel-sjms`, `camel-coap`, `camel-google-pubsub`
 case-variant follow-on).
 
+The prefixed headers of the API-based components - `CamelFhir.*`,
+`CamelBox.*`, `CamelOlingo4.*`, `CamelAs2.*` and the other
+`camel-api-component` generated producers, which select the API method and its
+arguments - sit inside the `Camel*` namespace, so they are governed by exactly
+this rule. The project's position on a `Camel<Api>.*` header reaching an API
+producer from an untrusted source is therefore *conditional, and the condition
+is at the inbound consumer, not at the API producer*; it is not "always out of
+scope". A consumer that admits a `Camel<Api>.*` header from an untrusted source
+without an effective case-insensitive `Camel*` `HeaderFilterStrategy` is in
+scope regardless of which producer ultimately consumes the header - this is the
+same class as the CVE-2025-27636 family. The API producer honouring a
+`Camel<Api>.*` header that reached it only because a route author wired an
+untrusted source straight to the producer without `removeHeaders("Camel*")`,
+while the inbound filter was in place and effective, is the documented
+bean-dispatch contract (see _Known limitations_), not a framework
+vulnerability.
+
 ==== Authentication or authorization bypass in security-providing components
 
 Components that explicitly provide authentication, authorization, or tenant
@@ -390,6 +407,25 @@ they are, the change is announced through the normal 
upgrade-guide channel.
   component behaviour. Route authors must filter Camel-internal headers from
   untrusted producers (see _Deployment hardening_ below); component authors
   must apply a strict `HeaderFilterStrategy` on the inbound path.
+* *The framework's automatic header filtering is scoped to the internal
+  `Camel*` / `org.apache.camel.*` namespace.* `DefaultHeaderFilterStrategy`
+  filters that namespace case-insensitively; it does not, and cannot, filter
+  the non-prefixed application-level headers a component reads as semantic
+  input - `To`, `Cc`, `Bcc`, `Subject`, `From` in `camel-mail`; HTTP header
+  names; JMS properties; and so on. Those headers are part of each component's
+  documented header contract and are intentionally passed through. There is one
+  uniform rule rather than a per-component policy: protecting a producer's
+  semantic headers from an untrusted upstream is route-author responsibility -
+  strip or normalise them at the trust boundary, exactly as for a query string
+  built from untrusted input - while the *specific* set of semantic headers a
+  component honours is necessarily component-by-component and is documented on
+  each component page. The framework itself is in scope only when a *consumer*
+  maps untrusted wire input into those headers as part of its own default
+  behaviour without an effective inbound `HeaderFilterStrategy` (the same
+  inbound-filter class as the Camel-header item under _In-scope vulnerability
+  classes_, e.g. CVE-2026-33454 in `camel-mail`); the path-traversal class
+  applies independently where such a header navigates outside a configured root
+  (e.g. CVE-2018-8041).
 * *Aggregation repositories that persist Java objects assume the backing store
   is trusted.* JDBC, Cassandra, Infinispan, LevelDB, Consul and similar
   repositories are state stores for routes the operator wrote; the operator is

Reply via email to