# Schwachstelle in Log4J und OpenEMS

**URL:** <https://community.openems.io/t/schwachstelle-in-log4j-und-openems/707>\
**Category:** Uncategorized\
**Created:** [December 13, 2021, 11:26am UTC](https://community.openems.io/t/schwachstelle-in-log4j-und-openems/707 "2021-12-13T11:26:10Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![oseng](https://community.openems.io/letter_avatar_proxy/v4/letter/o/ba8739/32.png) [@oseng](https://community.openems.io/u/oseng)\
**Post date:** [December 13, 2021, 11:26am UTC](https://community.openems.io/t/schwachstelle-in-log4j-und-openems/707/1 "2021-12-13T11:26:10Z")

</div>

Hallo,

ich habe eine Frage bezüglich der von OpenEMS verwendeten Log4J-Version und [der gefundenen kritischen Schwachstelle](https://www.bsi.bund.de/SharedDocs/Cybersicherheitswarnungen/DE/2021/2021-549032-10F2.pdf?__blob=publicationFile&v=3).

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

---

<div class="post-metadata">

**Author:** ![stefan.feilmeier](https://community.openems.io/user_avatar/community.openems.io/stefan.feilmeier/32/2585_2.png) [@stefan.feilmeier](https://community.openems.io/u/stefan.feilmeier)\
**Post date:** [December 13, 2021, 8:36pm UTC](https://community.openems.io/t/schwachstelle-in-log4j-und-openems/707/2 "2021-12-13T20:36:36Z")

</div>

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:

> <https://github.com/apache/logging-log4j2/pull/608#issuecomment-990494126>
>
> Restricts access to LDAP via JNDI.

Die Pax-Logging Versionen wurden in diesem Commit aktualisiert:

> <https://github.com/OpenEMS/openems/commit/f26f93be4401f99593ff04d2c044bc3c3cf520c8>

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](https://github.com/OpenEMS/openems/blob/develop/io.openems.edge.controller.api.websocket/src/io/openems/edge/controller/api/websocket/WebsocketApi.java#L55)). Das wäre sicher trotzdem ein sinnvoller Schritt; dass diese Version obsolet ist, war mir bisher nicht bewusst.

Viele Grüße,  
Stefan Feilmeier

---

<div class="post-metadata">

**Author:** ![oseng](https://community.openems.io/letter_avatar_proxy/v4/letter/o/ba8739/32.png) [@oseng](https://community.openems.io/u/oseng)\
**Post date:** [December 14, 2021, 3:38pm UTC](https://community.openems.io/t/schwachstelle-in-log4j-und-openems/707/3 "2021-12-14T15:38:28Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![oseng](https://community.openems.io/letter_avatar_proxy/v4/letter/o/ba8739/32.png) [@oseng](https://community.openems.io/u/oseng)\
**Post date:** [December 17, 2021, 7:17am UTC](https://community.openems.io/t/schwachstelle-in-log4j-und-openems/707/4 "2021-12-17T07:17:04Z")

</div>

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:

```auto
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.

---

<div class="post-metadata">

**Author:** ![stefan.feilmeier](https://community.openems.io/user_avatar/community.openems.io/stefan.feilmeier/32/2585_2.png) [@stefan.feilmeier](https://community.openems.io/u/stefan.feilmeier)\
**Post date:** [December 17, 2021, 6:20pm UTC](https://community.openems.io/t/schwachstelle-in-log4j-und-openems/707/5 "2021-12-17T18:20:14Z")

</div>

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](https://craftsmen.nl/getting-log4j2-to-work-in-an-osgi-context/))

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

Danke & Gruß,  
Stefan

---

<div class="post-metadata">

**Author:** ![oseng](https://community.openems.io/letter_avatar_proxy/v4/letter/o/ba8739/32.png) [@oseng](https://community.openems.io/u/oseng)\
**Post date:** [December 20, 2021, 2:01pm UTC](https://community.openems.io/t/schwachstelle-in-log4j-und-openems/707/6 "2021-12-20T14:01:21Z")

</div>

Hallo Stefan,

ja, ich habe einen Pull-Request gestartet:

> <https://github.com/OpenEMS/openems/pull/1686>
>
> Hi Stefan,
> 
> as discussed in the \[community\](https://community.openems.io/t/sch…wachstelle-in-log4j-und-openems/707/5), I have created a merge request regarding my Log4J2 changes.
> The idea is to use a \`PaxOsgi\`appender, as described \[here\](https://ops4j1.jira.com/wiki/spaces/paxlogging/pages/499613746/Configuring+Log4J2).
> 
> I was able to test the changes successfully for the OpenEMS edge running on my local machine. However, the configuration file in 'pax/logging.config' is not updated when I start the backend locally.
> Unfortunately, I was not able to find out why, but the problem already existed before applying my changes, so it might be an issue with the development branch.
> 
> Originally, I have developed these changes for a slightly older version of OpenEMS which still runs on Java 8. On this version, both OpenEMS Backend and Edge are working fine.
> 
> Regards,
> 
> Olaf

Alles Weitere können wir ja dort diskutieren.

Viele Grüße

Olaf
