docs: add core router-engine invariants to the security model#23282
docs: add core router-engine invariants to the security model#23282oscerd wants to merge 2 commits into
Conversation
Adds a "Core router-engine invariants" subsection to the project security model. The existing "Security properties and violation severity" table is the cross-component impact view; this companion subsection states what camel-core itself - the routing engine, the Exchange/Message model, the EIP processors, expression / language / property-placeholder resolution, and the type-converter and data-format registries - upholds independently of any one component, so a candidate located in a core/camel-* module can be routed to a property and a triage disposition without re-deriving the trust model. Strict superset, no behavioural or scope change: each invariant is the engine-layer projection of an in-scope vulnerability class or of the documented trust boundary already in the model (expression/template injection; Camel-header / bean-dispatch abuse; unsafe deserialisation, incl. CVE-2015-0263; the CVE-2025-27636 header-promotion family; and the management-surface and DoS out-of-scope items). Documentation only; it closes the shallowness in the properties section for core-engine findings raised by automated security triage. _Claude Code (Opus 4.7) on behalf of Andrea Cosentino_ Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
davsclaus
left a comment
There was a problem hiding this comment.
Did we write somewhere else about running Camel in development mode (profile=dev) such as what Camel JBang does, or if you explicit set it via
camel.main.profile=dev
Then that is for development purposes only, and as such Camel may reveal details and other informations that are relevant for developers and are not on the same level of scrutiny as production profile (default mode).
|
🌟 Thank you for your contribution to the Apache Camel project! 🌟 🐫 Apache Camel Committers, please review the following items:
|
|
🧪 CI tested the following changed modules:
|
Addresses review feedback from @davsclaus on PR apache#23282: make explicit, as a triage rule, what was previously only stated as a hardening responsibility - that the non-default `dev` / `test` profile (set via camel.main.profile, or selected by tooling such as Camel JBang) is development-only and deliberately less guarded, and that Camel may by design reveal configuration, route and Exchange detail in those modes that it would not reveal under the default `prod` profile. Adds one bullet to "Out of scope": a report whose impact only manifests under camel.main.profile=dev/test is out of scope as a non-default, development-only configuration; the production posture against which findings are judged is the default `prod` profile. Cross-references the existing Deployment hardening bullet and proposals/security.adoc. No behavioural change; documentation only. _Claude Code (Opus 4.7) on behalf of Andrea Cosentino_ Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
@davsclaus thanks — good catch, and you're right that it deserves to be explicit. To answer the question directly: it was written, but only as a hardening responsibility, not as a triage rule:
What was missing is exactly your point — that Re-requesting your review since the changeset changed after your approval. Claude Code (Opus 4.7) on behalf of Andrea Cosentino |
What
Core router-engine invariantssubsection to the projectsecurity model (
docs/user-manual/modules/ROOT/pages/security-model.adoc),between the existing Security properties and violation severity impact
table and In-scope vulnerability classes.
scoping the non-default
dev/testprofile as development-only bydesign.
Why
The existing properties table is a cross-component impact view — every
row is framed at the point a component ingests untrusted input. It does
not separately state the invariants
camel-core(the router engine)upholds on its own. An automated security-triage pass against the model
flagged this as a soft gap in the "security properties provided" section:
findings located in a
core/camel-*module (the largest, most-scannedsurface) could not be routed to a property and a disposition without
re-deriving the trust model, leading to systematic over-reporting on core.
This subsection adds the companion engine view — what the routing
engine, the
Exchange/Messagemodel, the EIP processors, theexpression / language / property-placeholder resolution, and the
type-converter and data-format registries guarantee independently of any
one component — with the same
property → violation symptom → indicative severityshape as the existing table.Scope
the engine-layer projection of an in-scope vulnerability class, or of the
trust boundary, already ratified in this document (expression/template
injection; Camel-header / bean-dispatch abuse; unsafe deserialisation,
incl. CVE-2015-0263; the CVE-2025-27636 header-promotion family; and the
management-surface and DoS out-of-scope items, to which it explicitly
defers).
on the security-model work merged in docs: document API-component and semantic-header triage scope; add Security to user-manual nav #23253.
xref:/includes/attributes; the table is cloned structurally fromthe existing one, so the camel-website strict Antora build is unaffected.
Review updates
running under the
devprofile (e.g. as Camel JBang does, or viacamel.main.profile=dev) is development-only and that Camel may revealdetails not at production scrutiny level. It was present only as a
hardening responsibility (Deployment hardening +
proposals/security.adocprofile-aware defaults), not as a triage rule. Resolved in commit
9f32dc7ca8aby adding an explicit Out of scope bullet: a finding thatonly manifests under
camel.main.profile = dev/testis out of scope as anon-default, development-only configuration; the production posture is the
default
prodprofile. Cross-references Deployment hardening andproposals/security.adocso the hardening note and the triage rule stayconsistent. Maps to the
OUT-OF-MODEL: non-default-builddisposition.Review note
This is a security-policy document — for PMC review. Per the project AI
rules of engagement this PR will not be merged or approved by an agent;
human approval is required.
Claude Code (Opus 4.7) on behalf of Andrea Cosentino
🤖 Generated with Claude Code