Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
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
sel4-ics-gateway-demo — Defensives Sicherheitsdemo: seL4-Mikrokernel-Gateway schützt anfällige ICS vor CVE-2019-14462 | Kitploit
Tools/GitHubGitHub/spanwich/sel4-ics-gateway-demo
DefensivwerkzeugeContainer-SicherheitSchwachstellenanalyseExploitationSCADA/ICS-SicherheitNetzwerksicherheitEinbruchserkennungLernen & Bildung
GitHubspanwich/sel4-ics-gateway-demo

sel4-ics-gateway-demo

Defensives Sicherheitsdemo: seL4-Mikrokernel-Gateway schützt anfällige ICS vor CVE-2019-14462

Repository anzeigen
37vor 7 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

seL4 ICS Gateway Demo

Ein defensives Sicherheitsforschungsprojekt, das Protocol-Break- und Packet-Forwarding-Architekturen zum Schutz industrieller Steuerungssysteme vor Cyberangriffen vergleicht.

Dokumentation:

  • Netzwerkarchitektur – Netzwerkdiagramme und Datenverkehrsfluss
  • Container-Architektur – Beziehungen der Docker-Container
  • CVE-Erklärungen – Details zu Schwachstellen und Angriffsmechanismen

Forschungsmotivation

Moderne ICS/SCADA-Systeme sind Ziel anspruchsvoller Angriffe wie FrostyGoop, der im Januar 2024 über Modbus-TCP auf ukrainische Fernwärmesysteme abzielte und mehr als 600 Haushalte bei Minusgraden ohne Heizung zurückließ. Herkömmliche Sicherheitslösungen (Firewalls, IDS) verwenden Packet-Forwarding-Architekturen, die den Datenverkehr inline überwachen, aber eine einzige TCP-Verbindung durchgängig aufrechterhalten.

Dieses Projekt demonstriert eine Alternative: ein Protocol-Break-Gateway auf Basis des formal verifizierten seL4-Mikrokernels. Durch die Beendigung von TCP-Verbindungen und die Validierung von Protokollsemanitiken vor dem Aufbau neuer Verbindungen zu geschützten Geräten bietet diese Architektur stärkere Sicherheitsgarantien.

Wichtigste Erkenntnisse

AspektProtocol-Break (seL4)Packet-Forwarding (Snort)
CVE-2019-14462BLOCKED (Längenvalidierung)DETECTED (Quickdraw-Regeln)
CVE-2022-0367BLOCKED (Adressvalidierung)DETECTED (benutzerdefinierte Regeln)
CVE-2022-20685IMMUNE (kein Preprozessor)VULNERABLE (IDS DoS)
CVE-2024-1086IMMUNE (kein Linux-Kernel)VULNERABLE (teilt Host-Kernel)
Unbekannte VariantenBLOCKED (strukturelle Validierung)MISSED (keine Signatur)
TCP-StatusangriffeBLOCKED (Verbindung beendet)Möglich
Angriffsfläche~1.000 LoC (Mikrokernel)~500.000 LoC (Linux + Snort)

Architektur

┌─────────────────────────────────────────────────────────────────────────────┐
│ Docker Network: ics-untrusted (192.168.96.0/24)                             │
│                                                                             │
│   ┌───────────────────────┐       ┌───────────────────────┐                │
│   │ seL4 Gateway          │       │ Snort IDS             │                │
│   │ Port 502              │       │ Port 503              │                │
│   │                       │       │                       │                │
│   │ • Protocol-break      │       │ • Packet-forwarding   │                │
│   │ • TCP termination     │       │ • Inline inspection   │                │
│   │ • Length validation   │       │ • Rule-based detection│                │
│   └───────────┬───────────┘       └───────────┬───────────┘                │
│               │                               │                             │
├───────────────┼───────────────────────────────┼─────────────────────────────┤
│ Docker Network: ics-protected (192.168.95.0/24)                             │
│               │                               │                             │
│               └───────────────┬───────────────┘                             │
│                               ▼                                             │
│               ┌───────────────────────────────┐                             │
│               │ PLC (District Heating)        │                             │
│               │ Vulnerable libmodbus 3.1.2    │                             │
│               │ Port 5020 (direct access)     │                             │
│               └───────────────────────────────┘                             │
└─────────────────────────────────────────────────────────────────────────────┘

Schnellstart

Voraussetzungen

  • Docker und Docker Compose v2
  • seL4-Gateway-Kernel-Image (vom Benutzer bereitgestellt)
  • ~4 GB RAM für QEMU

1. seL4-Image hinzufügen

# Lege dein seL4-Kernel-Image ab unter:
gateway/sel4-image/capdl-loader-image-arm-qemu-arm-virt

2. Bauen und Ausführen

# Alle Container bauen
sudo docker compose build

# Einzelne Container starten
sudo docker compose up plc        # Nur PLC
sudo docker compose up gateway    # seL4-Gateway + PLC
sudo docker compose up snort      # Snort IDS + PLC

# Alle starten
sudo docker compose up

3. Verbindungen testen

# Über seL4-Gateway (geschützt - Protocol-Break)
echo -ne '\x00\x01\x00\x00\x00\x06\x01\x03\x00\x00\x00\x01' | nc localhost 502 | xxd

# Über Snort IDS (geschützt - Packet-Forwarding)
echo -ne '\x00\x01\x00\x00\x00\x06\x01\x03\x00\x00\x00\x01' | nc localhost 503 | xxd

# Direkt zum PLC (ungeschützt - anfällig)
echo -ne '\x00\x01\x00\x00\x00\x06\x01\x03\x00\x00\x00\x01' | nc localhost 5020 | xxd

Port-Zuordnungen

PortPfadArchitekturSchutz
502Client → seL4 → PLCProtocol-BreakValidiert Modbus-Struktur
503Client → Snort → PLCPacket-ForwardingRegelbasiertes IDS
5020Client → PLC (ASAN)DirektCVE-2022-0367-Modus
5022Client → PLCDirektCVE-2019-14462-Modus (Profil: cve14462)

Hinweis: Der Standard-PLC läuft jetzt im CVE-2022-0367-Modus mit ASAN. Verwende --profile cve14462 für CVE-2019-14462-Tests.

Schwachstellendemonstrationen

CVE-2019-14462: libmodbus Heap Buffer Overflow

Der PLC verwendet die absichtlich anfällige libmodbus 3.1.2. Der Angriff nutzt vertrauenswürdige MBAP-Längenfelder aus:

# PLC im CVE-2019-14462-Modus starten
sudo docker compose --profile cve14462 up plc-14462

# Angriffswerkzeuge bauen
cd cve_tools && make

# Ungeschützten PLC angreifen (Absturz)
./cve_14462_attack 127.0.0.1 5022

# Über seL4 angreifen (BLOCKED)
./cve_14462_attack 127.0.0.1 502

# Über Snort angreifen (DETECTED durch Quickdraw-Regeln)
./cve_14462_attack 127.0.0.1 503

CVE-2022-0367: libmodbus Heap Buffer Underflow

Ein Grenzprüfungsfehler in modbus_mapping_new_start_address() ermöglicht einen Heap-Underflow über Funktionscode 0x17 (Write and Read Registers):

# Standard-PLC läuft im CVE-2022-0367-Modus mit ASAN
sudo docker compose up plc

# Angriffswerkzeuge bauen
cd cve_tools && make

# PLC angreifen – ASAN erkennt Heap-Buffer-Overflow
./cve_0367_attack 127.0.0.1 5020

# Mit benutzerdefinierten Parametern angreifen
./cve_0367_attack 127.0.0.1 5020 88 0x4141  # Beschädigt tab_registers-Zeiger
./cve_0367_attack 127.0.0.1 5020 72 0xFFFF  # Beschädigt nb_registers

# Über seL4 angreifen (BLOCKED – Adressvalidierung)
./cve_0367_attack 127.0.0.1 502

# Über Snort angreifen (DETECTED durch benutzerdefinierte Regeln)
./cve_0367_attack 127.0.0.1 503

Technische Details:

  • Server verwendet start_registers=100, gültige Adressen sind 100–109
  • Angriff sendet write_address < 100, was einen negativen Array-Index verursacht
  • Heap-Underflow kann Felder der mb_mapping-Struktur inklusive Zeiger beschädigen

CVE-2022-20685: Snort Modbus Preprocessor DoS

Snort 2.9.18 hat einen Integer-Overflow in seinem Modbus-Preprozessor, der eine Endlosschleife verursacht und jeglichen Datenverkehr durch das IDS vollständig blockiert:

# 1. Überprüfen, ob Snort funktioniert (sollte Modbus-Antwort zurückgeben)
echo -ne '\x00\x01\x00\x00\x00\x06\x01\x03\x00\x00\x00\x01' | nc -w 2 localhost 503 | xxd

# 2. Snort-IDS angreifen
./cve_20685_attack 127.0.0.1 503

# 3. Überprüfen, ob Snort eingefroren ist (sollte ohne Antwort auslaufen)
echo -ne '\x00\x01\x00\x00\x00\x06\x01\x03\x00\x00\x00\x01' | nc -w 5 localhost 503 | xxd
Tool herunterladen