Apache Camel-Vertx-Http and Camel-Netty-Http: Unsafe Java deserialization of HTTP response bodies via a raw ObjectInputStream when transferException is enabled
Beschreibung
Deserialisierung der Sicherheitslücke für nicht vertrauenswürdige Daten in Apache Camel. Die Kamel-vertx-http-Komponente deserialisiert HTTP-Response-Körper, die das Content-Type-Application/x-java-serialized-Objekt mit einem rohen java.io tragen. ObjectInputStream, ohne Anwendung von ObjectInputFilter (VertxHttpHelper.deserializeJavaObjectFromStream) Dieser Deserialisierungspfad wird nur erreicht, wenn der Producer-Endpunkt mit transferException=true (oder der Komponentenebene allowJavaSerializedObject=true) und throwException konfiguriert ist. OnFailure wird bei seinem Standardwert von true belassen; in diesem Fall hat eine Backend-HTTP-Antwort mit einem 5xx-Status und dem Inhaltstyp Anwendung / x-java-serialisiertes Objekt seinen Körper ohne Klassenbeschränkungen deserialisiert. Ein Angreifer, der das Backend kontrolliert, mit dem der Camel-Produzent spricht - über eine Man-in-the-Middle-Position auf einer unverschlüsselten (einfachen HTTP-) Verbindung oder durch Kompromittierung des Backend-Dienstes - kann ein erstelltes serialisiertes Java-Objekt zurückgeben und, wenn eine geeignete Gadget-Kette auf dem Classpath vorhanden ist, eine Remote-Codeausführung auf dem Camel-Anwendungshost erreichen. Der Pfad ist in der Standardkonfiguration nicht erreichbar, wobei transferException falsch ist. 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.20.0. Benutzern wird empfohlen, auf Version 4.20.0 zu aktualisieren, wodurch das Problem behoben wird. Wenn Benutzer auf dem 4.14.x LTS-Releases-Stream sind, wird empfohlen, auf 4.14.8 zu aktualisieren. Wenn Benutzer auf dem 4.18.x-Releases-Stream sind, wird empfohlen, auf 4.18.3 zu aktualisieren. Nach dem Upgrade wird die von beiden Hilfsprogrammen durchgeführte Deserialisierung durch einen standardmäßigen ObjectInputFilter (Allow-list java.**; javax.**;org.apache.camel.**;!*) eingeschränkt, der durch die neue Deserialisierung angepasst werden kann. Filterendpunktoption oder die JVM-weite Systemeigenschaft -Djdk.serialFilter. Für Bereitstellungen, die nicht sofort aktualisiert werden können: Nicht aktivieren transferException=true (oder allowJavaSerializedObject=true) auf Produzenten, die mit nicht vertrauenswürdigen oder netzwerkerreichbaren Backends sprechen; sicherstellen, dass Produzentenverbindungen TLS (https) verwenden, so dass eine Antwort nicht durch einen Man-in-the-Middle ersetzt werden kann; und, wenn die Option erforderlich ist, eine explizite -Djdk.serialFilter-Zulassungsliste (z. B. java.**;org.apache.camel.**;!*) festlegen, um die Deserialisierung einzuschränken.
Quellen & weiterführende Informationen
Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.
Was ist zur Behebung zu tun?
Auf eine behobene Version aktualisieren: 4.14.8, 4.18.3, 4.20.0.
Empfohlene Schritte
- Betroffene Systeme identifizieren: Apache Software Foundation org.apache.camel:camel-vertx-http, org.apache.camel:camel-netty-http.
- Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
- Update/Rollout auf behobene Version vorbereiten und priorisiert einspielen.
- Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.
Übergangsmaßnahmen
- Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
- WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
- Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.
- Administrative Zugänge besonders absichern: MFA, Passwortrotation, Session-Invalidierung.