Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sel4-ics-gateway-demo — Demo di sicurezza difensiva: gateway microkernel seL4 che protegge gli ICS vulnerabili da CVE-2019-14462 | Kitploit
Strumenti/GitHubGitHub/spanwich/sel4-ics-gateway-demo
Strumenti DifensiviSicurezza dei ContenitoriAnalisi delle VulnerabilitàExploitSicurezza SCADA/ICSSicurezza di ReteRilevamento IntrusioniApprendimento e Formazione
GitHubspanwich/sel4-ics-gateway-demo

sel4-ics-gateway-demo

Demo di sicurezza difensiva: gateway microkernel seL4 che protegge gli ICS vulnerabili da CVE-2019-14462

Vedi Repository
408 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Demo del Gateway ICS seL4

Un progetto di ricerca difensiva sulla sicurezza che confronta le architetture protocol-break e packet-forwarding per la protezione dei sistemi di controllo industriale dagli attacchi informatici.

Documentazione:

  • Architettura di rete - Diagrammi di rete e flusso del traffico
  • Architettura dei container - Relazioni tra i container Docker
  • Spiegazioni delle CVE - Dettagli delle vulnerabilità e meccanismi d'attacco

Motivazione della ricerca

I moderni sistemi ICS/SCADA affrontano attacchi sofisticati come FrostyGoop, che ha preso di mira i sistemi di teleriscaldamento ucraini tramite Modbus TCP nel gennaio 2024, lasciando oltre 600 famiglie senza riscaldamento durante temperature sotto lo zero. Le soluzioni di sicurezza tradizionali (firewall, IDS) utilizzano architetture packet-forwarding che ispezionano il traffico in linea ma mantengono un'unica connessione TCP end-to-end.

Questo progetto dimostra un'alternativa: un gateway protocol-break basato sul microkernel formalmente verificato seL4 microkernel. Terminando le connessioni TCP e validando la semantica del protocollo prima di stabilire nuove connessioni verso i dispositivi protetti, questa architettura offre garanzie di sicurezza più forti.

Risultati chiave

AspettoProtocol-Break (seL4)Packet-Forwarding (Snort)
CVE-2019-14462BLOCCATO (validazione lunghezza)RILEVATO (regole Quickdraw)
CVE-2022-0367BLOCCATO (validazione indirizzo)RILEVATO (regole personalizzate)
CVE-2022-20685IMMUNE (nessun preprocessore)VULNERABILE (DoS IDS)
CVE-2024-1086IMMUNE (nessun kernel Linux)VULNERABILE (condivide il kernel dell'host)
Varianti sconosciuteBLOCCATE (validazione strutturale)NON RILEVATE (nessuna firma)
Attacchi allo stato TCPBLOCCATI (connessione terminata)Possibili
Superficie d'attacco~1.000 LoC (microkernel)~500.000 LoC (Linux + Snort)

Architettura

┌─────────────────────────────────────────────────────────────────────────────┐
│ 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)     │                             │
│               └───────────────────────────────┘                             │
└─────────────────────────────────────────────────────────────────────────────┘

Avvio rapido

Prerequisiti

  • Docker e Docker Compose v2
  • Immagine del kernel del gateway seL4 (fornita dall'utente)
  • ~4GB di RAM per QEMU

1. Aggiungere l'immagine seL4

# Place your seL4 kernel image at:
gateway/sel4-image/capdl-loader-image-arm-qemu-arm-virt

2. Compilare ed eseguire

# Build all containers
sudo docker compose build

# Start individual containers
sudo docker compose up plc        # PLC only
sudo docker compose up gateway    # seL4 gateway + PLC
sudo docker compose up snort      # Snort IDS + PLC

# Start all
sudo docker compose up

3. Testare le connessioni

# Through seL4 gateway (protected - protocol-break)
echo -ne '\x00\x01\x00\x00\x00\x06\x01\x03\x00\x00\x00\x01' | nc localhost 502 | xxd

# Through Snort IDS (protected - packet-forwarding)
echo -ne '\x00\x01\x00\x00\x00\x06\x01\x03\x00\x00\x00\x01' | nc localhost 503 | xxd

# Direct to PLC (unprotected - vulnerable)
echo -ne '\x00\x01\x00\x00\x00\x06\x01\x03\x00\x00\x00\x01' | nc localhost 5020 | xxd

Mappatura delle porte

PortaPercorsoArchitetturaProtezione
502Client → seL4 → PLCProtocol-breakValida la struttura Modbus
503Client → Snort → PLCPacket-forwardingIDS basato su regole
5020Client → PLC (ASAN)DirettoModalità CVE-2022-0367
5022Client → PLCDirettoModalità CVE-2019-14462 (profilo: cve14462)

Nota: Il PLC predefinito ora esegue la modalità CVE-2022-0367 con ASAN. Usa --profile cve14462 per i test di CVE-2019-14462.

Dimostrazioni delle vulnerabilità

CVE-2019-14462: Heap Buffer Overflow di libmodbus

Il PLC utilizza libmodbus 3.1.2 volutamente vulnerabile. L'attacco sfrutta i campi di lunghezza MBAP considerati affidabili:

# Start PLC in CVE-2019-14462 mode
sudo docker compose --profile cve14462 up plc-14462

# Build attack tools
cd cve_tools && make

# Attack unprotected PLC (crashes)
./cve_14462_attack 127.0.0.1 5022

# Attack through seL4 (BLOCKED)
./cve_14462_attack 127.0.0.1 502

# Attack through Snort (DETECTED by Quickdraw rules)
./cve_14462_attack 127.0.0.1 503

CVE-2022-0367: Heap Buffer Underflow di libmodbus

Un bug nel controllo dei limiti in modbus_mapping_new_start_address() consente un heap underflow tramite il codice di funzione 0x17 (Write and Read Registers):

# Default PLC runs in CVE-2022-0367 mode with ASAN
sudo docker compose up plc

# Build attack tools
cd cve_tools && make

# Attack PLC - ASAN will detect heap-buffer-overflow
./cve_0367_attack 127.0.0.1 5020

# Attack with custom parameters
./cve_0367_attack 127.0.0.1 5020 88 0x4141  # Corrupt tab_registers pointer
./cve_0367_attack 127.0.0.1 5020 72 0xFFFF  # Corrupt nb_registers

# Attack through seL4 (BLOCKED - address validation)
./cve_0367_attack 127.0.0.1 502

# Attack through Snort (DETECTED by custom rules)
./cve_0367_attack 127.0.0.1 503

Dettagli tecnici:

  • Il server usa start_registers=100, gli indirizzi validi sono 100-109
  • L'attacco invia write_address < 100, causando un indice di array negativo
  • L'heap underflow può corrompere i campi della struct mb_mapping, inclusi i puntatori

CVE-2022-20685: DoS del preprocessore Modbus di Snort

Snort 2.9.18 ha un integer overflow nel suo preprocessore Modbus che causa un ciclo infinito, bloccando completamente tutto il traffico attraverso l'IDS:

# 1. Verify Snort is working (should return Modbus response)
echo -ne '\x00\x01\x00\x00\x00\x06\x01\x03\x00\x00\x00\x01' | nc -w 2 localhost 503 | xxd

# 2. Attack the Snort IDS
./cve_20685_attack 127.0.0.1 503
Scarica lo strumento