[email protected]

Node-RED-Sicherheitslücke CVE-2026-58115: Wer betroffen ist und wie adminAuth schützt

Node-RED-Sicherheitslücke CVE-2026-58115: Wer betroffen ist und wie adminAuth schützt

Hinweis zum Inhalt: Die Informationen in diesem Artikel wurden nach bestem Wissen zum Zeitpunkt der Veröffentlichung zusammengestellt. Technische Details, Preise, Versionen, Lizenzmodelle und externe Inhalte können sich ändern. Bitte prüfen Sie die genannten Angaben eigenständig, insbesondere vor geschäftskritischen oder sicherheitsrelevanten Entscheidungen. Dieser Artikel ersetzt keine individuelle Fach-, Rechts- oder Steuerberatung.

Node-RED im Einsatz und unklar, ob die Instanz ohne Anmeldung erreichbar ist? WZ-IT prüft Node-RED-Instanzen auf Erreichbarkeit und Konfiguration, richtet adminAuth und den Zugriff über VPN ein und betreibt Node-RED mit Monitoring und Wartung, siehe Node-RED, IoT und CVE-Monitoring. Termin vereinbaren

Am 11. August 2026 hat Siemens das Advisory SSA-834709 zu fehlender Authentifizierung in Node-RED auf SIMATIC-IoT2050-Geräten veröffentlicht, mit der Kennung CVE-2026-58115 und CVSS 10.0. Am 2. November 2026 berichtete VulnCheck, dass ein Honeypot am 30. Oktober einen vollständigen Angriff aufgezeichnet hat: Ein einziger Request an die Admin-API übergab einen Flow, der einen Linux-Bot nachladen und starten sollte. Medien wie The Register berichteten ab dem 2. November.

Die Berichte vermischen zwei Dinge. Die Kennung gehört zu einem Siemens-Produkt. Der beobachtete Angriff trifft aber nach Angabe von VulnCheck Node-RED-Instanzen ohne adminAuth. Dieser Beitrag trennt beides anhand der Primärquellen, nennt Versionen, Bewertung und Ausnutzungsstatus in Tabellen und liefert Prüfbefehle und ein Konfigurationsbeispiel für Administratoren. Alle Angaben haben den Stand 9. November 2026.

Inhaltsverzeichnis

  1. Die Lücke in Kürze
  2. Kernlücke oder Produktlücke: Was die Quellen sagen
  3. Betroffene Geräte und Fixversion
  4. Was VulnCheck beobachtet hat
  5. Exploit-Status und KEV
  6. Welche Node-RED-Installationen gefährdet sind
  7. Prüfbefehle für Administratoren
  8. adminAuth in der settings.js einrichten
  9. Editor nicht öffentlich erreichbar machen
  10. Anzeichen einer Kompromittierung
  11. Checkliste: Node-RED absichern
  12. Unser Vorgehen bei WZ-IT
  13. Weiterführende Guides

Die Lücke in Kürze

Merkmal Wert
Kennung CVE-2026-58115
Vergeben von Siemens ProductCERT
Advisory SSA-834709, Titel: Missing Authentication Vulnerability in Node-RED on SIMATIC IoT2050 with Industrial OS
Veröffentlicht 11. August 2026; Revision V1.1 vom 4. November 2026 (Modellliste, Titel und Zusammenfassung präzisiert)
Schweregrad kritisch, CVSS 3.1 10.0 und CVSS 4.0 10.0 (Bewertung durch Siemens)
CVSS-3.1-Vektor CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CWE CWE-306, Missing Authentication for Critical Function
Voraussetzung Netzzugriff auf die Node-RED-HTTP-Schnittstelle, keine Anmeldung nötig
Folge Anlegen eigener Flows und Codeausführung auf dem Gerät mit höchsten Rechten
Betroffen vier SIMATIC-IoT2050-Modelle mit Industrial OS und installiertem Node-RED, Versionen unter V4.3.4-1
Behoben V4.3.4-1 oder neuer
NVD-Status Awaiting Analysis (die CVSS-Werte stammen von Siemens)
Ausnutzung laut VulnCheck seit 30. Oktober 2026 beobachtet
CISA KEV nicht enthalten (Katalogversion 2026.11.06)

Quellen: Siemens SSA-834709, NVD CVE-2026-58115, VulnCheck.

Der Vektor beschreibt eine Lücke, die über das Netz ohne Rechte und ohne Nutzerinteraktion ausnutzbar ist. S:C (Scope Changed) bedeutet nach der CVSS-3.1-Spezifikation, dass die Schwachstelle Ressourcen in Komponenten jenseits ihres eigenen Sicherheitsbereichs beeinträchtigen kann. Siemens hat die Lücke so eingestuft.

Kernlücke oder Produktlücke: Was die Quellen sagen

Die Frage, ob CVE-2026-58115 eine Lücke in Node-RED selbst ist, beantworten die Quellen auf drei Ebenen unterschiedlich.

Ebene Befund Beleg
CVE-Eintrag Produkt-CVE von Siemens. Genannt sind ausschließlich vier SIMATIC-IoT2050-Modelle "running Industrial OS with Node-RED installed" mit Versionen unter V4.3.4-1. Es gibt keinen Versionsbereich für Node-RED selbst. Siemens, NVD
Node-RED-Projekt Wir haben keine CVE und kein Security-Advisory des Projekts zu diesem Fall gefunden; die Liste im Repository enthält nur zwei Meldungen vom 19. Februar 2021. Die Releases 5.0.9 und 4.1.17 vom 21. Oktober 2026 enthalten keine Änderung, die eine Anmeldung standardmäßig aktiviert. Die Dokumentation hält fest: "By default, the Node-RED editor is not secured". GitHub Advisories, Changelog, Release 4.1.17, Doku
Beobachtete Angriffe VulnCheck: "Node-RED instances without adminAuth are being found and exploited automatically". Der Angriff läuft über die Admin-API (POST /flows). Ausnutzung gegen Siemens-Produkte hat VulnCheck nicht beobachtet. VulnCheck

Einordnung. Nach den Quellen ist CVE-2026-58115 eine Produktlücke von Siemens: Auf den betroffenen Geräten wird für die Node-RED-HTTP-Schnittstelle keine Anmeldung erzwungen ("do not enforce authentication"). Für den Node-RED-Kern haben wir weder einen Fix noch ein Advisory gefunden, und das Projekt dokumentiert den offenen Zustand ohne Konfiguration als Standard. Nach unserer Einschätzung ist das keine Schwachstelle im Code von Node-RED, sondern ein Betriebszustand: Der Angriff funktioniert gegen Instanzen, deren Admin-API ohne Anmeldung erreichbar ist, etwa im Auslieferungszustand ohne adminAuth, sobald der Angreifer den Port erreicht. Dass VulnCheck die Siemens-Kennung für alle diese Instanzen verwendet, ist eine Zuordnung von VulnCheck und steht so nicht in der Siemens-Advisory. VulnCheck weist selbst darauf hin, dass die Beschreibung auf der Canary-Signatur und dem beobachteten Verkehr beruht. Ein Statement des Node-RED-Projekts zu dem Fall haben wir nicht gefunden.

Die Fehlerklasse ist nicht neu. Für den Industrie-PC IndustrialPI 4 von Pilz gilt seit 2025 dasselbe Muster: VDE-2025-045 beschreibt, dass für den Node-RED-Server standardmäßig keine Authentifizierung konfiguriert ist, ebenfalls mit CVSS 10.0. Die folgende Tabelle grenzt die Fälle voneinander ab; FUXA ist ein anderes Produkt, das Node-RED nur als Plugin einbindet.

Kennung Produkt Ursache Fix
CVE-2026-58115 SIMATIC IoT2050 mit Industrial OS keine Authentifizierung an der Node-RED-HTTP-Schnittstelle V4.3.4-1 oder neuer
CVE-2025-41656 Pilz IndustrialPI 4, Firmware Bullseye bis 2024-08 Authentifizierung am Node-RED-Server nicht standardmäßig konfiguriert Herstellerdokument von Pilz, siehe VDE-2025-045
CVE-2026-25938 FUXA 1.2.8 bis 1.2.10 (SCADA/HMI) Authentifizierungsumgehung bei aktiviertem Node-RED-Plugin FUXA 1.2.11 laut Hersteller-Advisory; Talos beschreibt eine Folgelücke im selben Pfad, CVE-2026-42922, laut Herstellerhinweis in der Talos-Meldung behoben in FUXA 1.3.3

Betroffene Geräte und Fixversion

Gerät Bestellnummer Betroffen Behoben
SIMATIC IoT2050 Advanced 6ES7647-0BA00-1YA2 alle Versionen unter V4.3.4-1 mit Industrial OS und installiertem Node-RED V4.3.4-1 oder neuer
SIMATIC IoT2050 Basic 6ES7647-0BA00-0YA2 wie oben V4.3.4-1 oder neuer
SIMATIC IoT2050 M.2 6ES7647-0BB00-1YA2 wie oben V4.3.4-1 oder neuer
SIMATIC IoT2050 SM 6ES7647-0CA00-1AA2 wie oben V4.3.4-1 oder neuer

Quelle: Siemens SSA-834709, Stand Revision V1.1 vom 4. November 2026.

Fünf Hinweise zur Einordnung:

  • Nur mit installiertem Node-RED. Die Advisory gilt für Geräte, auf denen Industrial OS mit Node-RED läuft. Ohne installiertes Node-RED besteht diese Angriffsfläche nicht.
  • Modellliste. Die Revision V1.1 vom 4. November hat laut Revisionshistorie die Liste der betroffenen Produkte präzisiert sowie Titel und Zusammenfassung angepasst. Die CISA-Meldung ICSA-26-237-03 führt dagegen nur die IoT2050 Advanced. Maßgeblich ist die aktuelle Siemens-Fassung mit vier Modellen.
  • Schreibweise der Version. Siemens schreibt V4.3.4-1, die maschinenlesbare Fassung (CSAF) und manche Datenbanken 4.3.4.1. Gemeint ist derselbe Stand.
  • Maßnahmen ohne Update. Siemens nennt zwei: Node-RED deinstallieren oder die Installation nach dem Node-RED-Handbuch härten. Außerdem sollen Geräte nur in einem geschützten Netz betrieben werden, nach den Industrial-Security-Richtlinien von Siemens.
  • Was die Advisory nicht sagt. Sie nennt keinen Befehl, mit dem sich die installierte Version auslesen lässt, und beschreibt nicht, welche Anmeldung das behobene Image voreinstellt. Die Version ist nach den Siemens-Produktunterlagen zu ermitteln; ob der Zugang nach dem Update geschützt ist, zeigen die Prüfbefehle weiter unten.

Was VulnCheck beobachtet hat

VulnCheck beschreibt die Beobachtung im Bericht Exploitation Targeting Node-RED (2. November 2026, Update vom 1. November). Die Angaben stammen aus der Canary-Telemetrie von VulnCheck, einer Honeypot-Infrastruktur.

Datum Ereignis
11.08.2026 Siemens veröffentlicht SSA-834709
27.10.2026 VulnCheck veröffentlicht Erkennungsartefakte für Kunden (Exploit-PoC, Versionsscanner, Erkennungsregeln)
30.10.2026 Ein Canary zeichnet einen vollständigen Angriff auf, 80 Tage nach der Advisory; es ist die erste Beobachtung, die VulnCheck beschreibt
30.10. bis 01.11.2026 16 Ereignisse gegen diese CVE von derselben Adresse 4.201.105.116 (AS8075, Microsoft, Geolokation Brasilien)
01.11.2026 VulnCheck ergänzt weitere Payloads
02.11.2026 VulnCheck veröffentlicht den Bericht

Ablauf des Angriffs. Ein einzelner POST /flows (User-Agent curl/8.5.0) übergibt einen Flow aus drei Teilen: ein leeres Tab, ein inject-Node, der einmal nach einer Sekunde auslöst, und ein exec-Node. Der exec-Node führt aus, was eine base64-kodierte Zeichenkette enthält, sodass einfache Filter auf wget oder curl im Request-Body nichts finden. Der Canary antwortete wie eine verwundbare Instanz mit HTTP 200 und einem neuen Revisions-Hash; deshalb wertet die VulnCheck-Signatur das Ereignis als erfolgreiche Ausnutzung. Der Ablauf ergibt sich aus dem entschlüsselten Befehl; einen Download oder eine Ausführung auf dem Canary weist der Bericht nicht aus.

Payload Befehl laut VulnCheck Spuren
Bot lädt bot-linux-amd64 von 85.215.73.250:8080, speichert als /dev/shm/.b, macht es ausführbar und startet es mit setsid, ersatzweise nohup /dev/shm/.b (RAM-Dateisystem, nach Neustart des Hosts weg)
Skript lädt wget.sh von derselben Adresse nach /tmp/.s und führt es aus /tmp/.s
Zweiter Server lädt /.sys_update von 45.194.90.57:38472, speichert als /tmp/.kworker (ahmt einen Kernel-Thread nach) und startet es mit nohup /tmp/.kworker
Backdoor kein Download; ein Flow mit HTTP-In-Endpunkt (etwa /cmd oder ein zufälliger Pfad), function-Node und exec-Node mit addpay, der später Befehle per Query-Parameter ausführt Flow in der Flow-Konfiguration, übersteht Neustarts

Was unbekannt ist. VulnCheck hat weder die Bot-Datei noch wget.sh oder .kworker beschafft. Ob es sich um einen Kryptominer, einen DDoS-Bot, eine Reverse Shell oder etwas anderes handelt, ist offen. Der Bericht nennt keine Hashes. Dieselbe Adresse hat laut VulnCheck in den vergangenen Tagen insgesamt 125 Treffer gegen acht CVEs in Apache Solr, Camunda, Gitea, MLflow, Traefik, Joomla und Node-RED erzielt; VulnCheck liest das als opportunistisches Massenscannen und nicht als gezielten Angriff, und betont, dass die Adresse in der Microsoft-Cloud wenig über den Betreiber sagt.

Exploit-Status und KEV

Frage Stand 9. November 2026 Quelle
Ausnutzung beobachtet ja, durch VulnCheck-Canaries ab 30. Oktober 2026 VulnCheck
Ausnutzung gegen Siemens-Geräte beobachtet nein, laut VulnCheck nicht beobachtet VulnCheck
VulnCheck-KEV aufgenommen VulnCheck
CISA-KEV nicht enthalten; Katalogversion 2026.11.06 vom 6. November 2026, am 9. November geprüft CISA KEV
Öffentlicher Exploit ja: Auf GitHub liegt ein öffentliches Proof-of-Concept-Skript für diese CVE (Stand 4. November 2026); ob es gegen ein echtes Siemens-Image funktioniert, haben wir nicht geprüft. Der Angriff selbst ist ein einzelner Standardaufruf der dokumentierten Admin-API GitHub, Admin-API
CISA-Bewertung im NVD-Eintrag SSVC vom 12. August 2026: exploitation none, automatable yes, technical impact total (vor den Beobachtungen) NVD
Siemens-Hinweis auf Ausnutzung keiner in der Advisory Siemens

Zahlen zu offen erreichbaren Instanzen nennt keine der geprüften Quellen, und wir haben keine eigenen Scan-Daten. Eine Angabe wie "Tausende offene Instanzen" ist deshalb nicht belegt.

Welche Node-RED-Installationen gefährdet sind

Lage Betroffen nach CVE-Eintrag Angreifbar auf dem beobachteten Weg Maßnahme
IoT2050 mit Industrial OS und Node-RED, Version unter V4.3.4-1 ja ja, wenn der Port erreichbar ist und keine Anmeldung greift Update auf V4.3.4-1 oder neuer, Netzzugang einschränken, Node-RED härten oder deinstallieren
IoT2050 mit V4.3.4-1 oder neuer nein mit den Prüfbefehlen verifizieren Anmeldung und Erreichbarkeit prüfen
Eigene Installation (Linux, Docker, Raspberry Pi, Windows) ohne adminAuth, Port aus dem Netz erreichbar nein, nicht in der CVE ja, sofern keine andere Zugriffskontrolle davorsitzt adminAuth setzen, Erreichbarkeit einschränken
Installation mit adminAuth nein nein, sofern die Konfiguration keine anonymen Rechte vergibt: Die Admin-API verlangt einen Token; ein eingerichteter anonymer Standardnutzer (default) erhält die dort festgelegten Rechte, bei read Lesezugriff, bei * auch Schreibzugriff default-Nutzer und Rechte prüfen, httpNodeAuth und Netzzugang trotzdem prüfen
Installation ohne adminAuth, nur auf 127.0.0.1 nein nicht direkt von außen, aber für jeden Prozess auf dem Host und über jeden Proxy oder Tunnel, der auf den Port weiterleitet adminAuth setzen
Installation ohne adminAuth, aber Admin-API abgeschaltet (httpAdminRoot: false) oder durch eine vorgeschaltete Zugriffskontrolle geschützt nein nicht auf dem beobachteten Weg, solange diese Kontrolle greift Kontrolle von außen testen, adminAuth zusätzlich setzen
Node-RED als Bestandteil eines Drittprodukts (SCADA, HMI, Gateway) je Hersteller je Konfiguration Herstellerhinweise lesen, Produkt auf Anmeldung prüfen

Drei Annahmen, die sich nicht halten lassen:

  • "Es ist ein Node-RED-Bug, also hilft ein Update." Die Releases 5.0.9 und 4.1.17 ändern den Standard nicht; die Anmeldung muss konfiguriert werden.
  • "Die Instanz steht hinter einer Firewall." Das verringert die Angreifer auf Hosts mit Netzzugang, schützt aber nicht vor jedem Rechner im selben Netz. Bei Docker kommt hinzu, dass veröffentlichte Ports an den Firewall-Regeln von ufw vorbeilaufen (siehe unten).
  • "Ein geänderter Pfad für den Editor schützt." httpAdminRoot verschiebt die Pfade, ist aber keine Zugriffskontrolle.

Prüfbefehle für Administratoren

Alle Befehle dürfen nur gegen eigene Systeme laufen. Die Ausgaben zeigen, wie die Instanz im Netz steht.

1. Auf welcher Adresse lauscht Node-RED?

sudo ss -tlnp | grep 1880

Steht in der Ausgabe 0.0.0.0:1880, *:1880 oder [::]:1880, lauscht der Prozess auf allen Schnittstellen. Bei 127.0.0.1:1880 ist er direkt nur lokal erreichbar; ein Proxy oder Tunnel auf dem Host kann ihn weiterreichen. Der Port 1880 ist der Standard (uiPort); wurde er geändert, die eigene Nummer einsetzen.

2. Docker: Wie ist der Port veröffentlicht?

docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Ports}}'

Unter Ports bedeutet 0.0.0.0:1880->1880/tcp oder [::]:1880->1880/tcp, dass der Port auf allen Schnittstellen des Hosts veröffentlicht ist. 127.0.0.1:1880->1880/tcp ist ab Docker 28.0.0 nur vom Host aus erreichbar (zu älteren Versionen siehe unten). Docker nennt veröffentlichte Ports "insecure by default" (Docker, Port publishing) und leitet den Verkehr vor den ufw-Regeln um, sodass eine ufw-Sperre veröffentlichte Ports nicht schützt (Docker, Packet filtering).

3. Ist die Anmeldung aktiv?

curl -s --max-time 5 http://127.0.0.1:1880/auth/login; echo
curl -s -o /dev/null -w '%{http_code}\n' --max-time 5 http://127.0.0.1:1880/flows

Nach der Admin-API liefert /auth/login bei inaktiver Anmeldung {}. Bei aktiver Anmeldung kommt ein Objekt mit "type":"credentials", bei Anmeldung über Passport-Strategien mit "type":"strategy" (Quellcode). GET /flows antwortet ohne Token mit HTTP 200, wenn die Instanz offen ist oder ein anonymer Standardnutzer mit Leserecht eingerichtet ist (Dokumentation), und mit HTTP 401, wenn ein Token verlangt wird. Der Statuscode allein zeigt nicht, welche Komponente antwortet: Auch ein vorgeschalteter Proxy kann 401 liefern. Aussagekräftig ist die Kombination aus /auth/login und /flows. Einen Deploy-Versuch (POST /flows) enthält die Prüfung bewusst nicht. Hat die Instanz httpAdminRoot gesetzt, steht der Pfad dahinter, etwa /admin/flows.

4. Dieselbe Prüfung von einem anderen Rechner im Netz. 127.0.0.1 durch die Adresse des Servers ersetzen. Liefert /auth/login von dort {}, ist die Admin-API zumindest von diesem Rechner aus ohne Node-RED-Anmeldung erreichbar; ob das für andere Quelladressen genauso gilt, hängt von vorgeschalteten Kontrollen wie Firewall oder Proxy ab. Liefert /flows HTTP 200 und ist die Antwort ein JSON-Array mit Node-Objekten, ist mindestens Lesezugriff möglich; ein Statuscode 200 allein kann auch von einer Proxy- oder Fallback-Seite stammen. Mit einem kleinen Skript lassen sich mehrere Instanzen nacheinander prüfen:

#!/usr/bin/env bash
# Prüft eine eigene Node-RED-Instanz: Ist die Admin-API ohne Anmeldung erreichbar?
# Aufruf: ./check-nodered.sh http://192.0.2.10:1880
BASE="${1:-http://127.0.0.1:1880}"

login=$(curl -s --max-time 5 "$BASE/auth/login")
echo "Anmeldeschema (GET /auth/login): ${login:-keine Antwort}"

code=$(curl -s -o /dev/null -w '%{http_code}' --max-time 5 "$BASE/flows")
echo "GET /flows ohne Token: HTTP $code"
case "$code" in
  200)
    if [ "$login" = "{}" ]; then
      echo "-> OFFEN: keine Anmeldung aktiv, Flows lesbar, Deploy ohne Anmeldung zu erwarten"
    else
      echo "-> Flows ohne Token lesbar, Anmeldung aktiv: anonymen Standardnutzer und dessen Rechte prüfen"
    fi ;;
  401) echo "-> Token verlangt (adminAuth oder vorgeschaltete Zugriffskontrolle)" ;;
  000) echo "-> nicht erreichbar" ;;
  *)   echo "-> unerwartet, Pfad-Präfix (httpAdminRoot) und Proxy prüfen" ;;
esac

Das Skript haben wir gegen einen lokalen Testserver geprüft, der die in der Admin-API-Dokumentation beschriebenen Antworten nachbildet: offene Instanz, aktive Anmeldung, anonymer Lesezugriff, Statuscode 401 ohne Anmeldeschema, unerwarteter Statuscode und nicht erreichbarer Server. Eine echte Node-RED-Instanz war nicht Teil des Tests.

adminAuth in der settings.js einrichten

Die Einstellung adminAuth schützt den Editor und die Admin-API. In der mitgelieferten settings.js ist sie auskommentiert (Vorlage im Repository). Die Datei liegt bei einer Installation per Skript im Benutzerverzeichnis ~/.node-red/settings.js, im offiziellen Docker-Image unter /data/settings.js. Welche Datei Node-RED lädt, steht beim Start in der Log-Zeile "Settings file".

Schritt 1: Passwort-Hash erzeugen.

node-red admin hash-pw

Der Befehl existiert ab Node-RED 1.1.0 und fragt das Passwort ab. Im Docker-Container läuft er so, wie es das Docker-Image vorsieht:

docker exec -it mynodered npx node-red admin hash-pw

Der ausgegebene Wert ist ein bcrypt-Hash und beginnt mit $2a$ oder $2b$. Die Beispiel-Hashes aus der Dokumentation gehören zu bekannten Passwörtern und dürfen nicht übernommen werden.

Schritt 2: Block in der settings.js eintragen. Die folgende Konfiguration folgt der offiziellen Anleitung; Hashes sind Platzhalter:

module.exports = {
    uiPort: process.env.PORT || 1880,

    // Gesamten HTTP-Listener (Editor, Admin-API, HTTP-In, Dashboard) nur auf dem lokalen Host
    // oder einer VPN-Adresse annehmen (im Docker-Container weglassen, siehe unten)
    uiHost: "127.0.0.1",

    // Editor und Admin-API: Anmeldung erzwingen
    adminAuth: {
        type: "credentials",
        users: [
            {
                username: "admin",
                password: "$2b$08$HASH-AUS-hash-pw-HIER-EINTRAGEN",
                permissions: "*"
            },
            {
                username: "lesezugriff",
                password: "$2b$08$ANDERER-HASH-AUS-hash-pw",
                permissions: "read"
            }
        ],
        sessionExpiryTime: 86400
    },

    // HTTP-In-Routen und node-red-dashboard: eigener Benutzer, eigener Hash
    httpNodeAuth: { user: "dashboard", pass: "$2b$08$DRITTER-HASH-AUS-hash-pw" }
};

In einer vorhandenen settings.js werden nur die Zeilen uiHost, adminAuth und httpNodeAuth ergänzt oder einkommentiert; der übrige Inhalt bleibt. Im Docker-Container entfällt uiHost (siehe unten). Die Syntax des Beispiels haben wir mit Node.js geladen und geprüft; mit einer laufenden Node-RED-Instanz haben wir es nicht getestet.

Schritt 3: Node-RED neu starten.

Betriebsart Neustart
Installation per Raspberry-Pi-Skript node-red-restart oder sudo systemctl restart nodered
Docker docker restart mynodered
Anderer systemd-Dienst sudo systemctl restart <dienstname>

Schritt 4: Ergebnis prüfen. GET /auth/login zeigt "type":"credentials", und GET /flows liefert ohne Token HTTP 401 (Prüfbefehl 3), solange kein anonymer Standardnutzer eingerichtet ist. Erscheint beim Öffnen des Editors kein Anmeldedialog, wurde meist eine andere Datei bearbeitet als die, die Node-RED lädt, oder der Dienst wurde nicht neu gestartet.

Einstellung Schützt Schützt nicht
adminAuth Editor und Admin-API (/flows, /settings, /nodes und weitere) HTTP-In-Routen, Dashboard
httpNodeAuth HTTP-In-Routen und laut Vorlage node-red-dashboard per Basic Auth Editor und Admin-API
httpStaticAuth statische Inhalte aus httpStatic Editor und Admin-API
uiHost begrenzt die Adresse des gesamten HTTP-Listeners (Editor, Admin-API, HTTP-In-Routen, Dashboard) die Anmeldung selbst
https verschlüsselt die Übertragung der Anmeldung den Zugriff als solchen
httpAdminRoot: false schaltet die HTTP-Endpunkte von Admin-API und Editor ab die Flow-Datei und programmatische Zugriffe auf die Runtime (eingebettete Anwendungen)
disableEditor: true schaltet nur die Editor-Oberfläche ab die Admin-API bleibt aktiv

Quelle: Node-RED, Securing Node-RED und Konfiguration. Über permissions: "read" lassen sich Nutzer mit reinem Lesezugriff anlegen; mit default: { permissions: "read" } in adminAuth erhält zusätzlich jeder ohne Anmeldung diesen Lesezugriff, was die Anleitung als Option beschreibt. Die Rechte des Standardnutzers sind frei wählbar; mit permissions: "*" hätte jeder ohne Anmeldung auch Schreibzugriff. Vorgeschaltete Zugriffskontrollen wie ein Reverse Proxy oder httpAdminMiddleware können die Admin-API ebenfalls absichern; adminAuth ist die in der Anleitung beschriebene Standardlösung. Wer den Editor über OAuth oder OpenID anmelden möchte, findet in der Anleitung die Variante mit Passport-Strategien.

Editor nicht öffentlich erreichbar machen

adminAuth ist die erste Schicht. Die zweite ist, dass der Editor gar nicht erst aus dem Internet erreichbar ist. Das Admin-Interface braucht in der Regel nur ein kleiner Kreis von Administratoren.

  • Nur lokal oder an einer VPN-Adresse binden. Mit uiHost: "127.0.0.1" lauscht Node-RED nur lokal, und zwar mit dem gesamten HTTP-Listener: Auch HTTP-In-Routen und Dashboards sind dann nur lokal erreichbar. Soll der Editor über ein privates Netz erreichbar sein, kann uiHost auf die VPN-Adresse des Hosts zeigen. Standard ist 0.0.0.0, also alle IPv4-Schnittstellen (Konfigurationsdokumentation). Im Docker-Container bleibt uiHost unverändert (siehe nächster Punkt).

  • Docker-Port nur an localhost veröffentlichen. Docker leitet veröffentlichte Ports im Standard-Bridge-Netz an die Adresse des Containers weiter; ein Prozess, der im Container nur auf 127.0.0.1 lauscht, nimmt diese Verbindungen nicht an. Node-RED bleibt im Container deshalb bei 0.0.0.0, und die Begrenzung steht allein in der Host-Adresse des -p-Flags. Statt -p 1880:1880 den Port mit Adresse angeben:

    docker run -d -p 127.0.0.1:1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
    

    In Compose lautet der Eintrag "127.0.0.1:1880:1880" unter ports. In Docker-Versionen vor 28.0.0 konnten Rechner im selben Layer-2-Segment auch an localhost veröffentlichte Ports erreichen (Docker, Port publishing); bei älteren Docker-Hosts ist ein Update ratsam.

  • Zugriff über Mesh-VPN oder WireGuard. Administratoren erreichen den Editor dann nur mit einem Gerät, das im privaten Netz angemeldet ist. Das Muster beschreiben die Seiten zu VPN und Secure Access und zu NetBird sowie der Beitrag VPN ablösen: Zero Trust und Mesh-VPN.

  • Reverse Proxy nur für HTTP-In-Pfade. Müssen Webhooks oder ein Dashboard öffentlich sein, gehören nur die dafür vorgesehenen Pfade (httpNodeRoot, etwa /ui) hinter den Proxy, mit httpNodeAuth oder einem Token im Flow. Die Pfade der Admin-API (/flows, /auth, /settings, /nodes) bleiben draußen. Der Editor hält eine WebSocket-Verbindung zur Runtime offen (Quellcode comms.js); läuft er hinter einem Proxy, muss dieser sie weiterreichen.

  • Firewall am Perimeter. Port 1880 am Eingang des Netzes sperren und das Ergebnis von außen prüfen, nicht nur die Regel lesen.

  • Keine unnötigen Rechte. Node-RED als eigener Benutzer betreiben statt als root. Für den Container gilt dasselbe; wo es nicht nötig ist, kein -u root und keinen Docker-Socket einhängen.

Diese Schichten ersetzen adminAuth nicht, sondern ergänzen es. Sind VPN und adminAuth unabhängig voneinander konfiguriert, reicht ein Fehler in einer der beiden Schichten allein in der Regel nicht für einen Zugriff; eine Garantie ist das nicht.

Anzeichen einer Kompromittierung

Die Prüfpunkte folgen den Spuren aus dem VulnCheck-Bericht. Dass sie nicht gefunden werden, beweist keine Sauberkeit: Die Angreifer können Dateinamen und Adressen wechseln, und VulnCheck kennt die Funktion der Schadsoftware nicht.

Indikator Prüfung
exec-Nodes oder HTTP-In-Endpunkte, die niemand angelegt hat Flows-Datei durchsuchen (Befehl unten)
exec-Node, dessen Befehl base64-kodierten Inhalt an die Shell übergibt, oder mit wget und curl Flows-Datei, Editor
HTTP-In-Endpunkt /cmd oder zufälliger Pfad, verbunden mit function-Node und exec-Node mit addpay Flows-Datei, Editor
Dateien /dev/shm/.b, /tmp/.s, /tmp/.kworker ls -la /dev/shm/.b /tmp/.s /tmp/.kworker 2>/dev/null
Prozesse aus /dev/shm oder mit Namen .kworker (.sys_update ist laut Bericht der Dateiname auf dem Download-Server) ps -eo pid,user,args und nach den Namen filtern (Befehl unten)
Verbindungen zu 85.215.73.250 (Port 8080) und 45.194.90.57 (Port 38472) Verbindungsprotokolle von Firewall und Proxy, ss -tnp; die Downloads nutzen IP-Adressen, DNS-Logs zeigen sie deshalb nicht
Zugriffe von 4.201.105.116 Logs von Reverse Proxy, Firewall oder Host
Unerwartete Änderungszeit der Flows-Datei ls -l --time-style=long-iso ~/.node-red/flows.json (bei Docker /data/flows.json)
# Flows mit Befehlsausführung oder eingehenden HTTP-Routen auflisten
jq -r '.[] | select(.type=="exec" or .type=="http in") | [.type, .id, (.command // .url // "")] | @tsv' ~/.node-red/flows.json

# Ohne jq
grep -n -E '"type": ?"(exec|http in)"' ~/.node-red/flows.json

# Spuren aus dem VulnCheck-Bericht auf dem Host
ls -la /dev/shm/.b /tmp/.s /tmp/.kworker 2>/dev/null
ps -eo pid,user,args | grep -E '/dev/shm|\.kworker|\.sys_update' | grep -v grep
sudo ss -tnp | grep -E '85\.215\.73\.250|45\.194\.90\.57'

Bei Docker liegt die Datei im Volume; der Inhalt lässt sich mit docker exec mynodered cat /data/flows.json | jq ... auswerten. Die Pfade gelten für die Standardeinstellungen; flowFile und userDir in der settings.js sowie Node-RED-Projekte können sie verschieben. Ein exec-Node ist nicht von sich aus verdächtig, viele Flows nutzen ihn legitim. Auffällig sind exec-Nodes ohne bekannten Zweck, mit kodierten Befehlen oder hinter einem HTTP-In-Endpunkt.

Wenn Spuren vorliegen oder ein Missbrauch nicht auszuschließen ist:

  1. Instanz vom Netz trennen, Flows-Datei, Logs und Prozessliste sichern, bevor etwas verändert wird.
  2. Alle auf dem Host lesbaren Zugangsdaten als kompromittiert behandeln und rotieren: Zugänge aus Flows (MQTT, Datenbanken, APIs), SSH-Schlüssel, Cloud-Token. Das ist unsere Einschätzung; die Quellen nennen keine Liste.
  3. Host oder Container aus einem sauberen Zustand neu aufsetzen und die Flows vor der Wiederverwendung Node für Node prüfen. Ein Update allein entfernt eingeschleuste Flows nicht.
  4. adminAuth und die Netzbeschränkung setzen, bevor die Instanz wieder ans Netz geht.
  5. Meldepflichten prüfen. Eine Verletzung des Schutzes personenbezogener Daten hat der Verantwortliche nach Art. 33 DSGVO unverzüglich und möglichst binnen 72 Stunden nach Bekanntwerden der Aufsichtsbehörde zu melden, es sei denn, sie führt voraussichtlich nicht zu einem Risiko für die Rechte und Freiheiten natürlicher Personen; ein Auftragsverarbeiter meldet eine Verletzung dem Verantwortlichen unverzüglich. Bei voraussichtlich hohem Risiko benachrichtigt der Verantwortliche nach Art. 34 DSGVO auch die Betroffenen unverzüglich, vorbehaltlich der Ausnahmen in Art. 34 Abs. 3 (EDPB). Einrichtungen im Anwendungsbereich der NIS-2-Richtlinie übermitteln zu erheblichen Sicherheitsvorfällen nach Art. 23 Abs. 4 eine Frühwarnung unverzüglich und spätestens binnen 24 Stunden nach Kenntnis des Vorfalls, eine Vorfallmeldung binnen 72 Stunden nach Kenntnis (Vertrauensdiensteanbieter: 24 Stunden), auf Anforderung einen Zwischenbericht und spätestens einen Monat nach der Vorfallmeldung einen Abschlussbericht; dauert der Vorfall dann noch an, folgen ein Fortschrittsbericht und der Abschlussbericht binnen eines Monats nach Behandlung des Vorfalls. Anwendungsbereich und Einzelheiten richten sich nach dem nationalen Umsetzungsrecht. Welche Pflicht greift, hängt von der Rolle (Verantwortlicher oder Auftragsverarbeiter), davon ab, ob personenbezogene Daten betroffen waren, ob die Einrichtung erfasst ist und wie erheblich der Vorfall ist. Die Bewertung im Einzelfall sollte mit dem Datenschutzbeauftragten oder der Rechtsberatung erfolgen; die Verantwortung bleibt beim jeweils Verpflichteten.

Checkliste: Node-RED absichern

Bereich Maßnahme Bezug zur Lücke
Bestand alle Node-RED-Instanzen erfassen, auch Edge-Geräte, Container und Instanzen in Drittprodukten Voraussetzung jeder Prüfung
Siemens IoT2050 mit Industrial OS und Node-RED auf V4.3.4-1 oder neuer bringen, sonst Node-RED deinstallieren oder härten direkt: CVE-2026-58115
Anmeldung adminAuth mit bcrypt-Hash setzen, mindestens ein Admin-Konto, Lesekonten mit permissions: "read" beobachteter Angriffsweg
Anmeldung httpNodeAuth für HTTP-In-Routen und node-red-dashboard getrennte Angriffsfläche
Netz uiHost auf 127.0.0.1 oder VPN-Adresse (nicht im Container), Docker-Port als 127.0.0.1:1880:1880 verkleinert den Kreis möglicher Angreifer
Netz Port 1880 am Perimeter sperren und von außen testen Schutz vor Internet-Scans
Zugriff Editor nur über VPN; Reverse Proxy nur für HTTP-In-Pfade Admin-API nicht öffentlich
Transport https oder TLS am Proxy, damit Anmeldedaten nicht im Klartext laufen Schutz der Anmeldung
Betrieb Node-RED nicht als root, kein Docker-Socket im Container begrenzt die Folgen einer Ausführung
Flows Bestand der exec- und HTTP-In-Nodes dokumentieren und regelmäßig vergleichen kann eingeschleuste Flows erkennbar machen
Zugangsdaten Zugangsdaten in Flows auf das Nötige begrenzen, nicht mehrfach verwenden begrenzt den Schaden
Monitoring Advisories der Hersteller und Node-RED-Releases verfolgen CVE-Monitoring
Backups Benutzerverzeichnis regelmäßig sichern (Docker: das /data-Volume), mindestens Flows, settings.js, flows_cred.json und den Schlüssel dazu (credentialSecret; auch ein systemgenerierter Schlüssel gehört ins Backup), Wiederherstellung testen Neuaufbau nach Vorfall

Unser Vorgehen bei WZ-IT

WZ-IT installiert, hostet und betreibt Node-RED mit Monitoring, Backups und Wartung und bindet im Rahmen der IoT-Leistungen SPS- und HMI-Systeme an. Bei einer Meldung wie CVE-2026-58115 läuft die Arbeit in fünf Schritten:

  1. Bestand erfassen. Node-RED-Instanzen, Versionen, Ports, Container-Zuordnungen und Geräte wie die IoT2050 aufnehmen, auch solche, die ein anderes Team angelegt hat.
  2. Erreichbarkeit prüfen. Mit den Befehlen oben feststellen, ob Admin-API und Editor ohne Anmeldung erreichbar sind, von innen und von außen.
  3. Absichern. adminAuth und httpNodeAuth setzen, Bindung und Port-Zuordnung einschränken und den Zugriff über ein Mesh-VPN oder WireGuard legen. Bei IoT2050-Geräten richtet sich das Vorgehen nach der Siemens-Advisory.
  4. Spuren prüfen. Flows und Host auf die Indikatoren durchsehen; bei Verdacht Zugangsdaten kontrolliert rotieren und die Instanz sauber neu aufsetzen.
  5. Dauerhaft überwachen. Instanzen in das CVE-Monitoring aufnehmen, das neben der NVD auch Hersteller-Advisories auswertet. Eine breitere Prüfung von Konfiguration und Zugängen eines Servers leistet das Server-Audit.

Support, Beratung und Implementierung durch WZ-IT.

Weiterführende Guides

Node-RED-Instanzen prüfen lassen? Wir stellen fest, welche Instanzen ohne Anmeldung erreichbar sind, setzen adminAuth und den Zugang über VPN um und nehmen Node-RED in das CVE-Monitoring auf. Termin vereinbaren

Quellen

Timo Wevelsiep

Geschrieben von

Timo Wevelsiep

Co-Founder & CEO

Co-Founder von WZ-IT. Spezialisiert auf Cloud-Infrastruktur, Open-Source-Plattformen und Managed Services für KMUs und Enterprise-Kunden weltweit.

Häufig gestellte Fragen

Antworten auf wichtige Fragen zu diesem Thema

Unternehmen weltweit vertrauen WZ-IT

  • Stadtwerke Brühl
  • DGHO e.V.
  • solarwerkstatt berlin
  • Krüger Dirndl
  • ABCO Water Systems
  • Golem.de
  • EVADXB
  • nextGYM
  • AInergy
  • ml&s
  • Odiseo Solutions
  • Annota
  • ARGE
  • SweetConnect GmbH
  • Aphy AG
  • CORGOS
  • Rekorder
  • SolidProof
  • Yonju
  • Keymate
  • Paritel
  • Mr. Clipart
  • Millenium
  • Negosh
  • Führerscheinmacher
  • BTI
  • Deutsche Gesellschaft für Datenschutz
Kundenstimmen ansehen

Anfrage

Node-RED prüfen, absichern und betreiben lassen

Wir prüfen, ob Ihre Node-RED-Instanzen ohne Anmeldung erreichbar sind, richten adminAuth und den Netzzugang ein und betreiben Node-RED auf Wunsch mit Monitoring, Backups und Wartung.

  • Direkt mit Timo und Robin - kein Vertrieb, kein Sales-Pitch
  • Fachliche Einschätzung Ihrer Situation
  • Konkrete nächste Schritte für Infrastruktur, Software oder KI

Das Gespräch ist unverbindlich und kostenlos.

Die Beratung von WZ-IT zu unserer Azure-Migration war schon im Erstgespräch fachlich sehr fundiert und völlig unverbindlich - wir haben eine Menge mitgenommen.
Jakob ÖschlbergerInno7 GmbH
Timo und Robin, Gründer von WZ-IT

Wie betreiben Sie Node-RED?

Die Beratung von WZ-IT zu unserer Azure-Migration war schon im Erstgespräch fachlich sehr fundiert und völlig unverbindlich - wir haben eine Menge mitgenommen.
Jakob ÖschlbergerInno7 GmbH