oscerd opened a new pull request, #26267:
URL: https://github.com/apache/camel/pull/26267

   # CAMEL-24676: camel-jgroups deserialization filter + serialization 
hardening docs
   
   ## What
   
   The `jgroups` consumer maps an incoming cluster message to the exchange body 
via
   `org.jgroups.Message.getObject()`, which Java-deserializes the payload. 
Unlike the
   other components that can receive Java-serialized payloads (the camel-netty 
and
   camel-mina object codecs, camel-jms `objectMessageEnabled`, 
camel-spring-redis),
   camel-jgroups had no way to constrain the accepted types and no 
documentation of
   the cluster serialization trust boundary.
   
   This change brings camel-jgroups in line with the shared 
deserialization-filter work:
   
   - Adds a `deserializationFilter` consumer/component option, resolved through 
the
     shared `DeserializationFilterHelper` (CAMEL-23815 / CAMEL-24296). When 
set, the
     type of the message body is checked against the JEP-290 `ObjectInputFilter`
     pattern before the exchange is routed, and a rejected type is refused.
   - Adds a **Security** section to the component documentation explaining that
     message bodies are Java-deserialized, that the default UDP stack does not
     authenticate peers, and recommending the primary hardening levers: a 
JVM-wide
     `jdk.serialFilter` and a `JChannel` secured with `AUTH` + encryption via
     `channelProperties`.
   
   ## Defense-in-depth note
   
   JGroups performs object deserialization inside its own receive path, so the
   JVM-wide `jdk.serialFilter` together with channel authentication and 
encryption
   are the primary mitigations. The component-level `deserializationFilter` is a
   defense-in-depth allow-list for the message body type and is documented as 
such.
   
   ## Tests
   
   `JGroupsDeserializationFilterTest` sends an allowed type (routed) and a 
denied
   type (refused, proven via per-sender FIFO ordering against a sentinel).
   
   ## Docs
   
   Component documentation gains a Security section. No upgrade-guide entry 
(this
   adds a new option; it does not change behavior for existing routes).
   
   _Claude Code on behalf of oscerd_
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
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]

Reply via email to