Illustration mit KI erzeugt
Claude passt einen RCE-Exploit an eine WAGO-SPS an: ARM-Shellcode ohne Authentifizierung ausgeführt
Claude portierte RCE-Exploit CVE-2021-31886 von WAGO 750-852 auf 750-831 und führte via FTP-Buffer-Overflow ARM-Shellcode ohne Authentifizierung aus.
Von künstlicher Intelligenz erzeugter Text, ohne menschliche Überprüfung veröffentlicht. KI-Transparenz
Vom bestehenden Exploit zu ausgeführtem Code auf echter Hardware
Forescout Research hat über Vedere Labs mit Unterstützung von Claude einen Exploit zur Remote Code Execution von einer WAGO-SPS auf ein anderes Modell portiert. Der Proof of Concept funktionierte auf echter Hardware und ermöglichte die Ausführung von durch den Forscher kontrolliertem ARM-Shellcode – ohne vorherige Authentifizierung.
Ausgangspunkt war ein bereits entwickelter Exploit für die WAGO 750-852. Als Ziel für die Portierung wurde dagegen eine WAGO 750-831 mit der Firmware V01.04.16 ausgewählt.
Claude erhielt drei Komponenten: den bestehenden Exploit, das zu analysierende Firmware-Binary und die physische Steuerung. Das Modell konnte ein Terminal und das Reverse-Engineering-Tool Ghidra verwenden sowie direkt mit der SPS interagieren.
Die Sitzungen begannen mit Claude Sonnet 4.6. Nachdem die ersten Versuche, eine RCE zu erreichen, nicht zum Erfolg geführt hatten, wurde die Arbeit mit Claude Opus 4.6 fortgesetzt.
Es handelte sich nicht um einen autonomen Prozess. Der Forscher musste das Modell kontinuierlich anleiten, die Ergebnisse bewerten und die Richtung der Analyse korrigieren. Die abschließende Phase dauerte 8 Stunden und 32 Minuten und verursachte 535,74 US-Dollar an API-Kosten.
Forescout stellte zudem einen für KI eher ungünstigen Aspekt fest: Derselbe Forscher hätte die erste Portierung möglicherweise schneller, kostengünstiger und ohne die Zerstörung des Geräts während späterer Experimente abschließen können.
CVE-2021-31886 greift den FTP-Befehl USER an
Der Exploit nutzt CVE-2021-31886, eine kritische Schwachstelle im FTP-Server der Komponente Nucleus NET, die in das Echtzeitbetriebssystem Nucleus RTOS integriert ist.
Der Fehler besteht in einem stackbasierten Buffer Overflow, der durch eine unzureichende Validierung der Länge des FTP-Befehls USER verursacht wird. Siemens klassifiziert ihn außerdem als CWE-170, also als unsachgemäße Behandlung der NULL-Terminierung.
Die Schwachstelle ist über TCP/21 bereits vor der Authentifizierung erreichbar. Ein Angreifer benötigt daher weder Zugangsdaten noch muss er einen Bediener zu einer Aktion bewegen. Der Score beträgt CVSS 9.8, mit folgendem Vektor:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Zu den erwarteten Auswirkungen gehören Denial of Service und Remote Code Execution mit potenziellen Folgen für Vertraulichkeit, Integrität und Verfügbarkeit.
CVE-2021-31886 gehört zu einer Gruppe von 13 Schwachstellen namens NUCLEUS:13, die im November 2021 öffentlich gemacht wurde. Das Siemens-ProductCERT-Advisory SSA-044112 wurde am 09.11.2021 veröffentlicht und am 14.12.2021 auf Version V1.1 aktualisiert.
Es liegen keine Hinweise darauf vor, dass CVE-2021-31886 in den Katalog der Known Exploited Vulnerabilities der CISA aufgenommen wurde oder dass eine entsprechende Frist für die Behebung auf Bundesebene existiert. Die Demonstration belegt jedoch, dass ein im Labor funktionierender Exploit existiert.
Eine am 1. September durchgeführte Suche fand keine GitHub-Repositories, die anhand ihres Namens oder ihrer Beschreibung mit CVE-2021-31886 identifiziert werden konnten. Auch in Exploit-DB oder Packet Storm wurden keine Treffer gefunden. Die Prüfung der GitHub-Metadaten schließt allerdings nicht aus, dass relevanter Code in Repositories mit anderen Namen enthalten ist.
Die entscheidende Änderung: von QUIT zu CWD, ohne CRLF
Für die Portierung musste ein Unterschied im Verhalten der WAGO 750-831 überwunden werden. Während der regulären Verarbeitung der FTP-Sitzung setzte das Gerät 256 Byte des vom Angreifer kontrollierten Puffers auf null. Der Payload wurde dadurch gelöscht, bevor er ausgeführt werden konnte.
Der ursprüngliche Exploit für die 750-852 verwendete eine Sequenz aus USER und QUIT. Claude änderte den Ablauf, ersetzte den zweiten Befehl durch CWD und entfernte den CRLF-Terminator.
Diese Kombination veränderte den Verarbeitungspfad des FTP-Servers. Die Anfrage wurde nicht wie üblich abgeschlossen, sodass der Puffer lange genug intakt blieb, um die Ausführung des Payloads zu ermöglichen.
Nach dem ersten Ergebnis mit einfachem NOP-Shellcode erzeugte Claude innerhalb von 12 Minuten zwei ARM-Payloads mit beobachtbaren Effekten:
- Versand von ICMP-Echo-Anfragen an ein vom Forscher kontrolliertes System;
- Übertragung eines UDP-Datagramms mit der Zeichenfolge
PWNED.
Die Ausführung erfolgte im Kontext des Callbacks für den Ethernet-Empfang. Der Test belegt damit die Kontrolle des Ausführungsflusses und die Fähigkeit, Netzwerkverkehr von der SPS aus zu erzeugen.
Er belegt jedoch nicht automatisch die Manipulation des industriellen Prozesses, der Ladder Logic oder der vollständigen Anwendungsfunktionen der Steuerung. Dafür wären zusätzliche Fähigkeiten und spezifische Kenntnisse über die Anlage erforderlich.
Während der Analyse wies Claude außerdem auf einen möglichen separaten Fehler in der Schleife zur Extraktion von FTP-Befehlen hin. Die menschliche Überprüfung hielt das Vorliegen einer eigenständigen Schwachstelle für plausibel. Das Problem besitzt jedoch keine CVE-Kennung, und seine Ausnutzbarkeit wurde nicht nachgewiesen.
Betroffene WAGO-Geräte und fehlende Updates
Die Liste der verwundbaren Produkte umfasst zahlreiche WAGO-SPSen und Feldbuskoppler auf Basis von Nucleus V1 RTOS:
| Gerät | Betroffene Versionen |
|---|---|
| WAGO 750-829 | FW16 und älter |
| WAGO 750-831/000-00x | FW14 und älter |
| WAGO 750-852 | FW16 und älter |
| WAGO 750-880/0xx-xxx | FW16 und älter |
| WAGO 750-881 | FW16 und älter |
| WAGO 750-882 | FW16 und älter |
| WAGO 750-885/0xx-xxx | FW16 und älter |
| WAGO 750-889 | FW16 und älter |
| WAGO 750-331 | FW16 und älter |
| WAGO 750-352/xxx-xxx | FW16 und älter |
Für diese Produkte auf Basis von Nucleus V1 RTOS stehen keine Updates zur Verfügung. Zudem besteht eine Dokumentationslücke: Die Modelle 750-882 und 750-885/0xx-xxx werden zwar als verwundbare Geräte aufgeführt, fehlen jedoch in der Tabelle zur Behebung und im zugehörigen Abschnitt zu den Gegenmaßnahmen. Ihr Behebungsstatus ist nicht angegeben.
Bei anderen Nucleus-Produkten ist die Situation unterschiedlich. Siemens empfiehlt, Nucleus ReadyStart V3 auf V2017.02.4 oder höher zu aktualisieren. Für CVE-2021-31886 war eine Korrektur bereits in den Releases V2013.08.1 und höher enthalten.
Für Nucleus NET sind dagegen alle Versionen betroffen, und eine allgemeine Behebung ist nicht vorgesehen. Anwender sollen sich an den Siemens-Support oder das Nucleus-Team wenden. Für Nucleus Source Code gilt entsprechend, dass für Patches und Updates direkt Kontakt aufgenommen werden muss.
Der C2-Test, der die SPS unbrauchbar machte
In einer späteren Sitzung sollte der Exploit zu einer Command-and-Control-Komponente ausgebaut werden. Während dieses Versuchs schrieb der Code in einen Speicherbereich, der auf den Flash-Speicher abgebildet war, und machte die SPS dauerhaft unbrauchbar.
Der Vorfall verdeutlicht einen wesentlichen Unterschied zwischen dem Einsatz von KI-Agenten auf herkömmlicher Software und der Interaktion mit physischen Systemen. Ein fehlerhafter Schreibzugriff führt nicht zwangsläufig nur zu einem behebbaren Absturz: Er kann Firmware, persistenten Speicher oder die Funktionsfähigkeit des Geräts beeinträchtigen.
Das unmittelbare Risiko besteht daher nicht ausschließlich darin, dass ein Modell autonom einen Angriff durchführt. Auch ein autorisierter, von einem Bediener angeleiteter Agent kann eine Speicherstruktur falsch interpretieren und irreversible Aktionen ausführen.
Parallel dazu beschreibt das gemeinsame Advisory AA26-231A von CISA, NSA, FBI, DOE und EPA eine aktive Bedrohung gegen SPSen, die nicht auf das Siemens-Ökosystem beschränkt ist. Die beobachteten Akteure verwenden durch KI generierte oder unterstützte Exploitation-Skripte, die teilweise als legitime OT-Monitoring-Tools getarnt sind.
Dienste wie Censys und ZoomEye werden eingesetzt, um aus dem Internet erreichbare Steuerungen aufzuspüren. Im Fall von Siemens-S7-Geräten kombinieren die Tools Python mit snap7.dll oder python-snap7 und ermöglichen dadurch Lese- und Schreibzugriffe über S7comm.
Die in dem Advisory vom 19. August beschriebene Aktivität wurde als wahrscheinlich auf dauerhafte Aufklärung und den Aufbau von Fähigkeiten ausgerichtet bewertet. Sie wurde keiner bestimmten Gruppe zugeschrieben.
Sofortmaßnahmen und Netzwerkindikatoren in OT-Umgebungen
Bei WAGO-Geräten ohne verfügbare Updates besteht die wichtigste Maßnahme darin, FTP zu deaktivieren, sofern der Dienst nicht zwingend benötigt wird. Alternativ müssen TCP/21 blockiert oder gefiltert und insbesondere direkte Verbindungen aus dem Internet verhindert werden.
Betreiber sollten außerdem:
- SPSen, Firmware-Versionen und aktive Dienste inventarisieren;
- IT-, OT- und Engineering-Workstations voneinander trennen;
- den Fernzugriff von Lieferanten und Systemintegratoren beschränken;
- Änderungen außerhalb autorisierter Wartungsfenster überwachen;
- Wiederherstellungsverfahren für die eingesetzten Steuerungen vorbereiten;
- die Integrität von Konfigurationen und industriellen Programmen überprüfen.
Im FTP-Verkehr sollten ungewöhnlich lange USER-Anfragen, ungewöhnliche Sequenzen mit QUIT oder CWD sowie fehlende oder manipulierte CRLF-Terminatoren besonders beachtet werden. ICMP-Anfragen an externe Hosts und UDP-Datagramme mit PWNED sind spezifische Indikatoren für den Labortest, nicht für eine bekannte kriminelle Kampagne.
In Siemens-S7-Umgebungen sollte außerdem nach S7comm-Zugriffen von nicht autorisierten Hosts, sequenziellen Scans auf Port 102, CPU-Aufzählungen und Schreibzugriffen auf Datenbausteine außerhalb der Betriebszeiten gesucht werden. Das Vorhandensein von Snap7.dll oder Python-Skripten mit S7comm-Funktionen auf Systemen außerhalb der freigegebenen Engineering-Workstations erfordert eine sofortige Prüfung.
Die WAGO-Demonstration zeigt nicht, dass KI einen erfahrenen Sicherheitsforscher ersetzen kann. Sie zeigt jedoch, dass ein Modell, das mit Tools, Firmware und Zugriff auf das Ziel ausgestattet ist, dazu beitragen kann, eine dokumentierte Schwachstelle in funktionierenden Code für eine echte SPS zu verwandeln.
Quellen
Dieser Artikel ist eine eigenständige Aufbereitung auf Basis der folgenden Quellen.
In diesem Artikel behandelte CVEs
- CVE-2021-31886CRITICAL9.8A vulnerability has been identified in APOGEE MBC (PPC) (BACnet) (All versions), APOGEE MBC (PPC) (P2 Ethernet) (All versions), APOGEE MEC (PPC) (BACnet) (All versions), APOGEE MEC (PPC) (P2 Ethernet) (All versions), APOGEE PXC Compact (BACnet) (All versions < V3.5.4), APOGEE PXC Compact (P2 Etherne
- CVE-2021-31884CRITICAL9.8A vulnerability has been identified in APOGEE MBC (PPC) (BACnet) (All versions), APOGEE MBC (PPC) (P2 Ethernet) (All versions), APOGEE MEC (PPC) (BACnet) (All versions), APOGEE MEC (PPC) (P2 Ethernet) (All versions), APOGEE PXC Compact (BACnet) (All versions < V3.5.4), APOGEE PXC Compact (P2 Etherne
- CVE-2021-31346HIGH8.2A vulnerability has been identified in Capital Embedded AR Classic 431-422 (All versions), Capital Embedded AR Classic R20-11 (All versions < V2303), PLUSCONTROL 1st Gen (All versions), SIMOTICS CONNECT 400 (All versions < V0.5.0.0), SIMOTICS CONNECT 400 (All versions < V1.0.0.0). The total length o
- CVE-2021-31345HIGH7.5A vulnerability has been identified in Capital Embedded AR Classic 431-422 (All versions), Capital Embedded AR Classic R20-11 (All versions < V2303), PLUSCONTROL 1st Gen (All versions). The total length of an UDP payload (set in the IP header) is unchecked. This may lead to various side effects, inc
- CVE-2021-31881HIGH7.1A vulnerability has been identified in Capital Embedded AR Classic 431-422 (All versions), Capital Embedded AR Classic R20-11 (All versions < V2303). When processing a DHCP OFFER message, the DHCP client application does not validate the length of the Vendor option(s), leading to Denial-of-Service c
- CVE-2021-31883HIGH7.1A vulnerability has been identified in Capital Embedded AR Classic 431-422 (All versions), Capital Embedded AR Classic R20-11 (All versions < V2303). When processing a DHCP ACK message, the DHCP client application does not validate the length of the Vendor option(s), leading to Denial-of-Service con
- CVE-2021-31882MEDIUM6.5A vulnerability has been identified in Capital Embedded AR Classic 431-422 (All versions), Capital Embedded AR Classic R20-11 (All versions < V2303). The DHCP client application does not validate the length of the Domain Name Server IP option(s) (0x06) when processing DHCP ACK packets. This may lead
- CVE-2021-31344MEDIUM5.3A vulnerability has been identified in Capital Embedded AR Classic 431-422 (All versions), Capital Embedded AR Classic R20-11 (All versions < V2303), PLUSCONTROL 1st Gen (All versions), SIMOTICS CONNECT 400 (All versions < V0.5.0.0), SIMOTICS CONNECT 400 (All versions < V1.0.0.0). ICMP echo packets
