oscerd commented on code in PR #28088:
URL: https://github.com/apache/camel/pull/28088#discussion_r4312052134
##########
docs/user-manual/modules/ROOT/pages/security-model.adoc:
##########
@@ -318,47 +346,65 @@ which protective property it breaks.
| Untrusted data is never turned into executed code or OS commands
| A crafted message, header or attachment causes a deserialisation gadget
chain, a bean / method / command dispatch, an expression/template evaluation
the route author never requested, or is spliced into the argument vector of an
external process the component launches
-| Critical (CVSS 9.0-10.0)
+| Medium to High
| Untrusted data cannot redirect the route to a different endpoint, bean,
method or command
-| A control header injected from the wire changes where the exchange is
dispatched, which operation runs, or which transport and credentials are used -
whether it is spelled inside the internal namespace (`CamelBeanMethodName`,
`CamelExecCommandExecutable`, `CamelHttpUri`, `CamelJmsDestinationName`, ...)
or outside it (`websocket.connectionKey`, `+gridfs.*+`, `irc.sendTo`,
`operationName`, `+mail.smtp.*+`, ...)
-| Critical (CVSS 9.0-9.8)
+| A control header injected from the wire changes where the exchange is
dispatched, which operation runs, which saga it joins, or which transport and
credentials are used - whether it is spelled inside the internal namespace
(`CamelBeanMethodName`, `CamelExecCommandExecutable`, `CamelHttpUri`,
`CamelJmsDestinationName`, ...) or outside it (`websocket.connectionKey`,
`+gridfs.*+`, `irc.sendTo`, `operationName`, `+mail.smtp.*+`,
`Long-Running-Action`, ...)
+| Medium to High
| Untrusted data is never deserialised into arbitrary Java types
| A consumer, type converter or persisted-state repository instantiates
attacker-chosen classes through `ObjectInputStream` / XStream / Hessian /
polymorphic Jackson without an effective filter
-| Critical when gadget-reachable (9.0-9.8); High otherwise (7.0-8.6)
+| Medium to High
| Untrusted parsing does not resolve external or remote resources
| An XML / XSLT / XSD / XPath parse of attacker input reads a local file,
performs SSRF, or fetches a remote DTD or stylesheet by default
-| High (CVSS 7.5-8.6); Critical if it yields RCE or credential theft
+| Medium to High
+
+| Untrusted input does not choose the host Camel connects to or the file it
reads, and the endpoint's credentials go only to the hosts the route configured
+| A message body is read as a URL to fetch or a path to read, an address the
peer supplies becomes the destination of an outbound request, or a redirect
carries the endpoint's credentials to a host the remote server chose
+| Medium to High
| Untrusted file names or URI components cannot escape the configured root
-| A file / mail / FTP / object-store consumer or producer reads or writes a
path outside the configured directory via `../` or an absolute path, whether
that name arrived in a header or was reported back by the remote store
-| High (CVSS 7.5-8.8)
+| A file / mail / FTP / object-store consumer or producer reads or writes a
path outside the configured directory via `../` or an absolute path, whether
that name arrived in a header or was reported back by the remote store -
including a remote-file consumer that retrieves, deletes or renames a file on
the server outside the polled directory because of a name in the server's
listing
+| Medium to High
| Components that advertise authentication or authorization actually enforce it
-| A request is served without a valid token, with an unvalidated issuer /
audience / signature, on a sub-path the auth handler was assumed to cover,
because a check was silently skipped when its option was left unconfigured, or
because the authorization decision was computed from a differently-normalized
value than the dispatch decision
-| Critical (CVSS 9.0-9.8)
+| A request is served without a valid token, with an unvalidated issuer /
audience / signature, or on a sub-path the auth handler was assumed to cover.
Typical causes: a check was silently skipped because its option was left
unconfigured or the claim it checks was absent; a failed check did not stop the
exchange; an authentication that an earlier exchange left on the thread was
reused; or the authorization decision was computed from a
differently-normalized value than the dispatch decision
+| Medium to High
+
+| Components that verify an integrity code, or a signature the receiver
requires, fail closed
+| A message is accepted as unmodified, or as signed when a signature is
required, although the check was skipped because the sender chose a format
without it, or was computed over another exchange's data
+| Medium
+
+| One exchange's data, keys and authority do not reach another
+| A body, a signing key, a token or a thread-bound authentication left by one
exchange is observed or used while another sender's, tenant's or partner's
exchange is processed
+| Medium
| Secrets and internal Exchange state are not disclosed
-| Credentials, message bodies or configuration values reach a log, an event, a
world-readable file, or an HTTP response visible to a lower-privileged party
-| Medium to High (CVSS 5.3-8.2), depending on what leaks
+| Credentials, message bodies or configuration values reach a log, an event, a
file that other local accounts can read, or a response visible to a
lower-privileged party
+| Low to Medium
| Untrusted input is not spliced into a back-end query language Camel builds
| Camel constructs a Cypher / XSLT-extension / similar query and the attacker
alters its structure rather than only its data
-| High to Critical (CVSS 8.1-9.8)
+| Medium
| All of the above hold with zero security configuration
| Any of the above is reachable simply by adding the component to a route and
sending a message, with no risky option explicitly set
| Severity of the underlying class; always in scope
|===
-The tiers above are *indicative*, reflecting how the Camel PMC has historically
-scored these classes. The PMC assigns the definitive CVSS vector per report
-based on attack vector, the configuration required to reach the code path, and
-the concrete impact demonstrated. A finding that needs an unusual non-default
-configuration, or whose impact is limited, may score lower than the tier
-suggests; one that chains into full host compromise may score higher.
+The tiers above are *indicative*: for each class they give the range of
+severities the Camel PMC has published at link:/security/[] since 2015 for the
+artifacts this page covers. The three Critical ratings in that record date
+from 2013 and 2014 (CVE-2013-4330, CVE-2014-0002, CVE-2014-0003), and
+CVE-2026-56140 was published as Low, as hardening alongside a sibling finding.
Review Comment:
Applied as suggested in fd3d9918b946: the note under the severity table now
names CVE-2026-80351 and CVE-2026-80352 and says they are triaged against Camel
K's own scope, so the count a reader sees on the index matches the page. Thanks!
_Claude Code on behalf of oscerd_
##########
docs/user-manual/modules/ROOT/attachments/security-model.yaml:
##########
@@ -124,39 +138,69 @@ config_variants:
- option: hostnameVerificationEnabled
insecure_value: false
default: component-dependent
+ - option: requireIntegrityProtection # camel-crypto-pgp
+ insecure_value: false
+ default: true # CVE-2026-85243
+ - option: allowPredicateFromMessage # dynamic-router-control
+ insecure_value: true
+ default: false # CVE-2026-83531; security = insecure:dev
+ - option: allowUrlSource # camel-docling
+ insecure_value: true
+ default: false # CVE-2026-78163; security = insecure:dev
+ - option: allowFilePathSource # camel-docling
+ insecure_value: true
+ default: false # CVE-2026-78163; security =
insecure:dev; inputBaseDirectory (unset by default) confines paths when set
+ - option: allowExternalEntities # camel-smooks
+ insecure_value: true
+ default: false # CVE-2026-88901; security = insecure:dev
on the smooks: endpoint
+ - option: logPhi # camel-mllp
+ insecure_value: true
+ default: false # CVE-2026-85260
properties_provided:
- # id, violation symptom, indicative severity tier
+ # id, violation symptom, indicative severity tier (the range published at
the advisory index since 2015)
- id: no_untrusted_code_execution
symptom: "deserialization gadget / bean-method-command dispatch /
expression eval not requested by route / splice into external-process argv"
- severity: critical
+ severity: medium_to_high
- id: no_untrusted_endpoint_redirect
- symptom: "wire-injected control header changes dispatch target, operation,
or transport+credentials - inside the namespace (CamelBeanMethodName,
CamelHttpUri, ...) or outside it (websocket.connectionKey, gridfs.*,
irc.sendTo, operationName, mail.smtp.*)"
- severity: critical
+ symptom: "wire-injected control header changes dispatch target, operation,
saga, or transport+credentials - inside the namespace (CamelBeanMethodName,
CamelHttpUri, ...) or outside it (websocket.connectionKey, gridfs.*,
irc.sendTo, operationName, mail.smtp.*, Long-Running-Action)"
+ severity: medium_to_high
- id: no_arbitrary_deserialization
symptom: "attacker-chosen types instantiated via
ObjectInputStream/XStream/Hessian/polymorphic-Jackson without filter"
- severity: critical_when_gadget_reachable
+ severity: medium_to_high
- id: no_external_resource_resolution_on_parse
symptom: "XML/XSLT/XSD/XPath parse of attacker input reads file / SSRF /
fetches remote DTD/stylesheet"
- severity: high
+ severity: medium_to_high
+ - id: no_untrusted_destination_or_credential_forwarding
+ symptom: "message body read as URL/path; peer-supplied address used as
outbound destination; redirect carries the endpoint's credentials to a host the
server chose"
+ severity: medium_to_high
- id: no_path_escape
- symptom: "file/mail/ftp/object-store path escapes configured root via ../
or absolute name, whether supplied in a header or reported back by the remote
store"
- severity: high
+ symptom: "file/mail/ftp/object-store path escapes configured root via ../
or absolute name, whether supplied in a header or reported back by the remote
store - incl. remote retrieve/delete/rename outside the polled directory from a
listing name"
+ severity: medium_to_high
- id: auth_components_enforce
- symptom: "request served without valid token / unvalidated
issuer-audience-signature / uncovered subpath / check silently skipped because
its option was unset / authorization computed from a differently-normalized
value than dispatch"
- severity: critical
- - id: no_secret_or_state_disclosure
- symptom: "secrets/bodies/config reach a log (INFO/WARN/ERROR), event,
world-readable file, or HTTP response"
+ symptom: "request served without valid token / unvalidated
issuer-audience-signature / uncovered subpath / check skipped because its
option was unset or its claim absent / failed check did not stop the exchange /
authentication an earlier exchange left on the thread reused / authorization
computed from a differently-normalized value than dispatch"
severity: medium_to_high
+ - id: integrity_and_required_signature_verification_fail_closed
+ symptom: "message accepted as unmodified, or as signed when a signature is
required, though the check was skipped (sender-chosen format) or ran over
another exchange's data"
+ severity: medium
+ - id: no_cross_exchange_data_or_authority
+ symptom: "body, signing key, token or thread-bound authentication left by
one exchange observed or used while another party's exchange is processed"
+ severity: medium
+ - id: no_secret_or_state_disclosure
+ symptom: "secrets/bodies/config reach a log (INFO/WARN/ERROR), event, file
other local accounts can read, or a response"
+ severity: low_to_medium
- id: no_backend_query_injection
symptom: "attacker alters the structure of a Cypher/XSLT-extension/etc
query Camel builds"
- severity: high_to_critical
+ severity: medium
+
+severity_calibration:
+ note: "tiers are the ranges published at the advisory index since 2015 for
the artifacts this model covers; the three Critical ratings date from 2013-2014
(CVE-2013-4330, CVE-2014-0002, CVE-2014-0003); CVE-2026-56140 was published Low
as hardening; Critical remains available for code execution or full compromise
with no precondition"
Review Comment:
Done in fd3d9918b946: the `severity_calibration` note now says the Critical
Camel K advisories on the index (CVE-2026-80351, CVE-2026-80352) are out of
this model's scope, matching the prose.
_Claude Code on behalf of oscerd_
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]