Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-52134-libiec61850 — Öffentlicher technischer Sicherheitshinweis und Reproduktionsnachweise für CVE-2026-52134, das die GOOSE-Replay-Behandlung in libiec61850 v1.6 betrifft. | Kitploit
Tools/GitHubGitHub/if-forget/cve-2026-52134-libiec61850
SchwachstellenanalyseSCADA/ICS-SicherheitNetzwerksicherheitLernen & BildungKuratierte RessourcenLabs & Praxis
GitHubif-forget/cve-2026-52134-libiec61850

CVE-2026-52134-libiec61850

Öffentlicher technischer Sicherheitshinweis und Reproduktionsnachweise für CVE-2026-52134, das die GOOSE-Replay-Behandlung in libiec61850 v1.6 betrifft.

Repository anzeigen
17vor 2 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-52134: GOOSE-Replay und Behandlung der Nachrichtenfrische in libiec61850 v1.6

Status

CVE-2026-52134 wurde zugewiesen. Die Veröffentlichung des zugehörigen CVE-Eintrags steht noch aus.

Betroffenes Produkt

  • Hersteller: MZ Automation GmbH
  • Produkt: libiec61850
  • Getestete Version: 1.6
  • Status anderer Versionen: Nicht bestätigt
  • Betroffene Datei: src/goose/goose_receiver.c
  • Betroffene Funktion: parseGoosePayload()

Zusammenfassung

Der Empfangspfad des GOOSE-Subscribers in libiec61850 v1.6 lehnt bestimmte wiederabgespielte oder veraltete GOOSE-Nachrichten nicht ausreichend ab, bevor der für den Subscriber sichtbare Zustand aktualisiert und der registrierte Listener-Callback aufgerufen wird.

Zwei kontrollierte Experimente zeigen zusammenhängendes Verhalten im selben Empfangspfad:

  1. Rollback auf niedrigeres stNum: Nachdem der Subscriber stNum=2 verarbeitet hatte, führte das erneute Abspielen eines zuvor erfassten stNum=1-Frames dazu, dass der Listener den älteren Zustand und die älteren Daten erneut meldete.
  2. Replay mit nicht steigendem sqNum: Wenn ein zuvor erfasster Frame mit demselben stNum, aber einem älteren sqNum erneut abgespielt wurde, wurde der Frame als ungültig markiert, aber Listener-Callbacks traten weiterhin auf und die wiederabgespielten Daten blieben sichtbar.

Diese werden als zwei zusammenhängende Beobachtungen eines einzigen Problems bei der Replay-/Nachrichtenfrische-Behandlung dargestellt, nicht als zwei separate CVEs.

Angriffsvoraussetzungen

Ein Angreifer muss in der Lage sein:

  • Auf die relevante IEEE-802.3-Layer-2-Broadcast-Domain oder das VLAN zuzugreifen
  • Legitime GOOSE-Ethernet-Frames zu erfassen
  • Ethernet-Frames mit EtherType 0x88B8 einzuschleusen

Dies ist kein beliebiger internetbasierter Remote-Angriff.

Technische Grundlage

Die relevante Empfangslogik prüft sqNum, wenn das empfangene stNum dem gespeicherten stNum entspricht. Der getestete Codepfad lehnt ein niedrigeres stNum nicht ab, bevor der Subscriber-Zustand aktualisiert und der Listener aufgerufen wird.

Die getestete Bibliotheksdatei wurde nicht modifiziert. Das Original und die Arbeitskopien von src/goose/goose_receiver.c hatten denselben SHA-256-Wert:

c42f2aec80f605c458d0bca524ccb09f2e35f9b83a02f854f95d9444616c075b

Source integrity check

Testumgebung

  • Ubuntu 20.04.6 LTS
  • libiec61850 v1.6
  • Isoliertes virtuelles Ethernet-Paar veth0 / veth1 unter Linux
  • tcpdump
  • TShark
  • Python 3 und Scapy
  • Modifizierte Beispiel-Publisher und -Subscriber, die nur als Testaufbau verwendet wurden

Der Testaufbau erzeugte kontrollierte Zustandsübergänge und gab die im Callback sichtbaren Werte für stNum, sqNum, Gültigkeit und Daten aus. Die verwundbare Bibliotheksdatei selbst wurde nicht modifiziert.

Experiment A: Rollback auf niedrigeres stNum

Baseline

Der kontrollierte Publisher sendete zwei Zustände:

State A: stNum=1, sqNum=0, data=1111
State B: stNum=2, sqNum=0, data=2222

Der Baseline-Paketmitschnitt enthielt zwei GOOSE-Frames in dieser Reihenfolge:

Frame 1: stNum=1, sqNum=0
Frame 2: stNum=2, sqNum=0

Baseline fields and callbacks

Die Subscriber-Ausgabe enthielt außerdem einen zusätzlichen Callback für stNum=1, sqNum=0, der vor State B als valid=false markiert war. Dieser zusätzliche Callback ist in den Beweismitteln enthalten, wird aber nicht als Grundlage für die Rollback-Schlussfolgerung verwendet. Der entscheidende Zustand vor dem Replay war der spätere Callback mit stNum=2 und dem Datenwert 2222.

Einzelnes Replay

Das Replay-Skript lud den Baseline-Mitschnitt mit zwei Frames, wählte Frame 1 aus und sendete ihn einmal über veth0.

Unmittelbar vor dem Replay hatte der Listener gemeldet:

stNum=2, sqNum=0, valid=true, allData={2222}

Nachdem der alte Frame einmal erneut abgespielt wurde, meldete der Listener:

stNum=1, sqNum=0, valid=true, allData={1111}

Single replay and stNum rollback

Dies zeigt ein beobachtetes Rollback des Subscriber-Zustands von stNum=2 auf stNum=1, nachdem ein zuvor erfasster Frame mit niedrigerem stNum erneut abgespielt wurde.

Zusätzliche identische Replays

Vier weitere Kopien desselben alten Frames wurden gesendet. Alle vier enthielten stNum=1, sqNum=0.

Die späteren Kopien wurden als valid=false gemeldet, aber die Callback-Nummern stiegen weiter an und die wiederabgespielten Daten blieben sichtbar:

Duplicate replays still cause callbacks

Diese sekundäre Beobachtung zeigt, dass das Markieren eines wiederholten Frames als ungültig die Zustellung an den Listener im getesteten Empfangspfad nicht verhinderte.

Experiment B: Replay mit nicht steigendem sqNum

Eine frühere Reproduktion verwendete den offiziellen Beispiel-Publisher und -Subscriber. Der Publisher erzeugte eine normale Sequenz mit:

stNum=1
sqNum=0, 1, 2, 3

Der zuerst erfasste Frame (stNum=1, sqNum=0) wurde dann erneut abgespielt, nachdem der Subscriber den späteren Sequenzwert bereits verarbeitet hatte.

Original sqNum baseline

Die wiederabgespielten Kopien wurden als ungültig gemeldet, weil das empfangene sqNum=0 nicht neuer war als der gespeicherte Sequenzwert. Der Subscriber gab jedoch weiterhin Listener-Ereignisse mit den wiederabgespielten Daten aus:

Original sqNum replay callbacks

Dieses Experiment stützt eine engere, aber verwandte Beobachtung:

  • Das Replay desselben Zustands wurde über das Gültigkeitsflag erkannt.
  • Die Erkennung verhinderte im getesteten Beispiel nicht die Zustellung der wiederabgespielten Nachricht per Callback.

Die rohen ursprünglichen Replay-Screenshots sind als unterstützendes Material aufbewahrt:

  • 12-original-sqnum-replay-command-raw.png
  • 13-original-sqnum-replay-terminal-raw.png

Diese rohen Bilder enthalten für das Experiment irrelevante Warnungen zum Import optionaler Scapy-Module. Die Warnungen verhinderten nicht, dass das Skript die erfassten GOOSE-Frames meldete und die Übertragung abschloss. Für die Überprüfung des technischen Ergebnisses sind jedoch die oben gezeigten saubereren Screenshots zu bevorzugen.

Zusammenhang zwischen den beiden Experimenten

Die Experimente zeigen verschiedene Zweige desselben GOOSE-Replay-/Nachrichtenfrische-Problems:

BeobachtungEmpfangene NachrichtBeobachtetes Ergebnis
Replay mit niedrigerem stNumGespeichert stNum=2; empfangen altes stNum=1Alter Zustand und alte Daten wurden an den Listener übermittelt und im getesteten Lauf als gültig gemeldet
Replay mit nicht steigendem sqNumGleiches stNum; empfangen älteres oder doppeltes sqNumNachricht wurde als ungültig gemeldet, aber Listener-Callbacks und die Zustellung wiederabgespielter Daten liefen weiter
Tool herunterladen