Schwachstelle in Log4J und OpenEMS

Hallo,

ich habe eine Frage bezüglich der von OpenEMS verwendeten Log4J-Version und der gefundenen kritischen Schwachstelle.

Im Bericht steht “Die Log4J Versionen 1.x sind von der aktuellen Schwachstelle nach aktueller Kenntnis nicht betroffen”. Verstehe ich es richtig, dass in OpenEMS “pax-logging-log4j1” und somit Log4J-1.x verwendet wird?

Wir haben die Abhängigkeit zu “pax-logging-log4j1” natürlich aktualisiert, aber wenn “nur” Log4J-1.x verwendet wird, besteht vermutlich nur eine geringe Wahrscheinlichkeit, dass das System angreifbar war.

Viele Grüße und vielen Dank

Olaf Seng

Hallo Olaf,

richtig, in OpenEMS wird pax-logging-log4j1 verwendet. Diese Version ist nur unter ganz bestimmten Voraussetzungen von dem Problem betroffen - die aber in OpenEMS standardmäßig nicht verwendet werden:

Die Pax-Logging Versionen wurden in diesem Commit aktualisiert:

Um übrigens auf die Version 2 von Log4j upzudaten, müssten die Logging Appender angepasst werden (siehe z. B. hier: openems/WebsocketApi.java at develop · OpenEMS/openems · GitHub). Das wäre sicher trotzdem ein sinnvoller Schritt; dass diese Version obsolet ist, war mir bisher nicht bewusst.

Viele Grüße,
Stefan Feilmeier

1 Like

Hallo Stefan,

vielen Dank für die schnelle Antwort und die Bestätigung.

Auf Version 2 von Log4j upzudaten klingt sinnvoll. Ich hab mir das gerade mal angeschaut und habe testweise in den Dependencies '‘pax-logging-log4j2’ statt “pax-logging-log4j1” eingetragen. Auf der Konsole sehe ich damit weiterhin Log-Ausgaben, die Logs werden aber dann aber z.B. nicht mehr per WebSocket an das Frontend geschickt.

Hast Du für mich vielleicht zusätzlich zum Link auf den Beispiel-Appender aus der letzten Antwort ein Beispiel-Code-Fragment, an dem ich mir abschauen kann, wie die Umstellung grob aussieht? Das würde mir sehr helfen.

Viele Grüße

Olaf

Kurzer Nachtrag. Mittlerweile werden die Logs auch wieder per WebSocket an das UI geschickt. Dazu musste ich zusätzlich zum Versionsumstieg noch die Konfiguration des Loggers an zwei Stellen in OpenEMS anpassen. Es gibt einen Appender namens paxosgi, der die Weiterleitung der PaxEvents übernimmt.

Hier der entsprechende Ausschnitt aus der Konfiguration:

log4j.put("log4j2.appender.osgi.type", "PaxOsgi");
log4j.put("log4j2.appender.osgi.name", "paxosgi");

log4j.put("log4j2.rootLogger.level", "info");
log4j.put("log4j2.rootLogger.appenderRefs", "console, osgi");
log4j.put("log4j2.rootLogger.appenderRef.console.ref", "console");
log4j.put("log4j2.rootLogger.appenderRef.paxosgi.ref", "paxosgi");

Damit scheint das Logging bisher auch mit Log4J2 in der neusten Version zu funktionieren.

Hallo Olaf,

das klingt super. Ich hatte bisher gedacht, dass ich mit OSGi Fragmenten arbeiten muss (z. B. Getting Log4j2 to work in an OSGi context - Craftsmen)

Kannst du für dieses Update einen Pull-Request starten?

Danke & Gruß,
Stefan

Hallo Stefan,

ja, ich habe einen Pull-Request gestartet:

Alles Weitere können wir ja dort diskutieren.

Viele Grüße

Olaf