Zusammenfassung
# Deserialisierung nicht vertrauenswürdiger Daten – Schwachstelle in der Apache-Camel-Hazelcast-Komponente
Die Komponente camel-hazelcast weist eine Schwachstelle durch Deserialisierung nicht vertrauenswürdiger Daten auf. Die Komponente camel-hazelcast erstellt und verwaltet Hazelcast-Instanzen mithilfe einer Standardkonfiguration, die keinen Java-Deserialisierungsfilter anwendet. Wenn Camel die Hazelcast-Konfiguration selbst erstellt – das heißt, wenn keine vom Benutzer bereitgestellte HazelcastInstance, hazelcastConfigUri oder referenzierte Config-Bean bereitgestellt wird –, wird weder Hazelcasts JavaSerializationFilterConfig noch ein camel-seitiger ObjectInputFilter konfiguriert. Daher werden Objekte, die über das Hazelcast-Clusterprotokoll empfangen werden, in Hazelcasts eigener Serialisierungsschicht (ObjectInputStream.readObject) deserialisiert, bevor Camel sie überhaupt verarbeitet. Ein Angreifer, der dem Hazelcast-Cluster beitreten oder ihn anderweitig erreichen kann, kann ein präpariertes serialisiertes Java-Objekt veröffentlichen, das anschließend auf jedem Camel-Knoten deserialisiert wird, was zu Remote-Code-Ausführung führt. Die Gefährdung ist standardmäßig vorhanden und erfordert keine optionale Endpunktkonfiguration: Jede Route, die einen Hazelcast-Consumer verwendet (hazelcast-topic, hazelcast-queue, hazelcast-seda, hazelcast-map, hazelcast-multimap, hazelcast-replicatedmap, hazelcast-list, hazelcast-set), sowie das HazelcastAggregationRepository und das HazelcastIdempotentRepository sind betroffen, sobald die verwaltete Instanz aus Camels Standardkonfiguration erstellt wird. Dieses Problem betrifft Apache Camel: von 4.0.0 vor 4.14.8, von 4.15.0 vor 4.18.3, von 4.19.0 vor 4.21.0. Benutzern wird empfohlen, auf Version 4.21.0 zu aktualisieren, die das Problem behebt. Wenn Benutzer den 4.14.x-LTS-Release-Stream verwenden, wird empfohlen, auf 4.14.8 zu aktualisieren. Wenn Benutzer den 4.18.x-Release-Stream verwenden, wird empfohlen, auf 4.18.3 zu aktualisieren. Der Fix bewirkt, dass Camel eine standardmäßige Hazelcast-JavaSerializationFilterConfig anwendet (Whitelisting der Klassenname-Präfixe java., javax. und org.apache.camel. sowie Blacklisting von java.net.) auf Instanzen, die es aus seiner eigenen Standardkonfiguration erstellt, während jede vom Benutzer bereitgestellte Config oder HazelcastInstance unverändert bleibt. Für Bereitstellungen, die nicht sofort aktualisieren können, konfigurieren Sie einen Deserialisierungsfilter auf der Hazelcast-Instanz (Hazelcast-JavaSerializationFilterConfig oder die JVM-weite Systemeigenschaft -Djdk.serialFilter=!java.net.**;java.**;javax.**;org.apache.camel.**;!*) und aktivieren Sie die Hazelcast-Clusterauthentifizierung und TLS, um einzuschränken, wer das Cluster erreichen kann.