You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Andrea Cosentino (Jira)" <ji...@apache.org> on 2026/05/25 18:37:00 UTC
[jira] [Created] (CAMEL-23609) Tighten in-code ObjectInputFilter defaults with JEP-290 graph-shape limits
Andrea Cosentino created CAMEL-23609:
----------------------------------------
Summary: Tighten in-code ObjectInputFilter defaults with JEP-290 graph-shape limits
Key: CAMEL-23609
URL: https://issues.apache.org/jira/browse/CAMEL-23609
Project: Camel
Issue Type: Improvement
Components: camel-infinispan, camel-mina, camel-netty, camel-leveldb, camel-jms, camel-netty-http, camel-vertx-http, camel-sjms, camel-cassandraql, camel-consul, camel-sql
Reporter: Andrea Cosentino
Assignee: Andrea Cosentino
Fix For: 4.21.0
Follow-up to the CAMEL-23297 / CAMEL-23319 / CAMEL-23321 / CAMEL-23322 / CAMEL-23324 / CAMEL-23372 series, which introduced an in-code default {{ObjectInputFilter}} across components that perform Java deserialization (aggregation repositories, on-the-wire converters, exchange holders).
The current in-code default is a class-pattern allowlist:
{noformat}
!java.net.**;java.**;javax.**;org.apache.camel.**;!*
{noformat}
{{ObjectInputFilter}} (JEP 290) supports additional structural clauses that the current defaults do not use: {{maxdepth}}, {{maxrefs}}, {{maxbytes}}, {{maxarray}}, {{maxinternalrefs}}. Adding conservative values for these to the in-code defaults provides defense in depth so that operators who have not set {{-Djdk.serialFilter}} still get sensible graph-shape limits out of the box.
Operators retain the existing override path:
* JVM-wide {{-Djdk.serialFilter}} takes precedence over the Camel default in every site that ships one.
* The configurable repositories and endpoint configurations ({{LevelDBAggregationRepository}}, {{JdbcAggregationRepository}}, {{CassandraAggregationRepository}}, {{ConsulRegistry}}, {{JmsConfiguration}}, {{SjmsComponent}}, {{NettyHttp}} / {{VertxHttp}} configuration, etc.) already expose a {{deserializationFilter}} {{@UriParam}} that lets a route author pass a fully custom filter string including the structural clauses.
Affected default-filter sites:
* {{components/camel-infinispan/camel-infinispan/.../DefaultExchangeHolderUtils.java}}
* {{components/camel-jms/.../JmsBinding.java}}
* {{components/camel-sjms/.../jms/JmsBinding.java}}
* {{components/camel-mina/.../MinaConverter.java}}
* {{components/camel-netty/.../NettyConverter.java}}
* {{components/camel-netty-http/.../NettyHttpHelper.java}}
* {{components/camel-vertx/camel-vertx-http/.../VertxHttpHelper.java}}
* {{components/camel-leveldb/.../LevelDBAggregationRepository.java}}
* {{components/camel-cassandraql/.../CassandraAggregationRepository.java}}
* {{components/camel-consul/.../ConsulRegistry.java}}
* {{components/camel-sql/.../JdbcAggregationRepository.java}}
Proposed defaults (subject to review):
{noformat}
!java.net.**;java.**;javax.**;org.apache.camel.**;maxdepth=20;maxrefs=10000;maxbytes=10485760;!*
{noformat}
Tests should confirm:
* Legitimate aggregation payloads continue to deserialize.
* The new structural clauses are present in the resolved filter.
* The JVM-wide {{-Djdk.serialFilter}} still takes precedence when set.
An upgrade-guide entry on {{main}} is required because the tightened defaults may reject extremely deep / very-large legitimate payloads on first upgrade. The entry should explain the new defaults, list the override options, and note that operators can restore the previous behaviour per endpoint via the {{deserializationFilter}} option or JVM-wide via {{-Djdk.serialFilter}}.
h3. Acceptance criteria
* New defaults applied consistently across all sites above.
* Tests added at each site asserting that the resolved {{ObjectInputFilter}} contains the structural clauses.
* JVM-wide {{-Djdk.serialFilter}} precedence preserved.
* Upgrade-guide entry on {{main}} (and the matching {{camel-4x-upgrade-guide-4_XX.adoc}} for any backport line that picks this up).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)