Ein kürzlich entdeckter JNDI-Injektionsfehler in der aktuellen Version des Oracle WebLogic Servers ermöglicht es Angreifern, durch eine sekundäre JNDI-Injektion während eines Lookup-Prozesses Remote Code Execution (RCE) im Zielsystem durchzuführen. Obwohl die Schwachstelle nicht in früheren Versionen vorhanden war, wurde sie im offiziellen Oracle-Update für das zweite Quartal behoben.
Die Angreifer können die JNDI-Funktionalität von WebLogic auf zwei Hauptarten ausnutzen:
- OpaqueReference: Wird das OpaqueReference-Interface implementiert und WebLogic verwendet die ForeignOpaqueReference-Klasse, kann ein schädlicher Lookup-Prozess JNDI-Injektionen durch die Methode
getReferent
auslösen. - MessageDestinationObjectFactory: Bei der Initialisierung des InitialContext ermöglicht die Verwendung des
java.naming.factory.object
-Attributes, dass die MethodegetObjectInstance
anfällig für JNDI-Injektionen wird.
Die beiden neuen Schwachstellen CVE-2024-20931 und CVE-2024-21006 umgehen normale Einschränkungen bei JNDI-Attributen und können so beliebigen Code auf dem WebLogic-Server ausführen. CVE-2024-20931 wird bei der Initialisierung des InitialContext ausgenutzt, während CVE-2024-21006 ein schädliches ObjectFactory einführt, das beim Lookup-Prozess aktiviert wird.
WebLogic hat Patches gegen die Schwachstellen CVE-2023-21839 und CVE-2024-20931 veröffentlicht, die unautorisierte JNDI-Lookups verhindern. Dabei wurde die Methode weblogic.jndi.internal.ForeignOpaqueReference#getReferent
modifiziert. Wenn getReferent
aufgerufen wird, setzt InitialContext
automatisch die Eigenschaften java.naming.factory.initial
und java.naming.provider.url
.
Ein Sicherheitsforscher namens pwnull betont, dass der Code trotz fehlender Standard-JNDI-Einstellungen für JNDI-Injektionen anfällig bleibt, indem die java.naming.factory.object
-Eigenschaft in neueren JDK-Versionen ausgenutzt wird.
Die Schwachstelle nutzt die Methode BeanFactory#getObjectInstance
in Tomcat, um MessageDestinationObjectFactory#getObjectInstance
in WebLogic aufzurufen, was schließlich JNDI-Injektionen durch MessageDestinationReference#lookupMessageDestination
auslöst.
Zusammengefasst könnten Angreifer durch diese Schwachstelle die Sicherheitsmaßnahmen von WebLogic umgehen, indem sie eine sekundäre JNDI-Injektion ermöglichen. Patches und angemessene Sicherheitsvorkehrungen sollten daher dringend umgesetzt werden.