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:

  1. 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.
  2. MessageDestinationObjectFactory: Bei der Initialisierung des InitialContext ermöglicht die Verwendung des java.naming.factory.object-Attributes, dass die Methode getObjectInstance 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.