Europe/Berlin
--:--:--
Projects

IoT Security Training Kit (ESP32)

September 3, 2025
CTF‑artige Schulungsbox für sichere Embedded‑Entwicklung. Bringen Sie Teams in 1–2 Tagen von „wir wissen, dass Security wichtig ist“ zu praktisch nachgewiesener Kompetenz: Schwachstellen identifizieren, kontrolliert ausnutzen, messen und härten – direkt auf dem ESP32.
⚠️ Alle Verwundbarkeiten sind absichtlich implementiert und ausschließlich für Laborszenarien gedacht. Kein Einsatz in Produkten.

  • Hands‑on statt Folien: 10 reale IoT‑Angriffsflächen (HTTP, MQTT, OTA, UART, BLE, Storage, RNG, Logging) auf echter Hardware.
  • Vorher/Nachher sichtbar: Umschaltbarer Build‑Modus (Vulnerable vs. Fixed) mit klaren Messkriterien und PoV‑Tests.
  • Praxisnahes Setup: Docker‑Services (MQTT, OTA/Web, Scoring), PoV‑Skripte und CI Checks – sofort einsatzbereit.
  • Skalierbar: Team‑CTF mit Flag‑Abgabe, Trainer‑Guides, erweiterbar um eigene Szenarien (z. B. Signierte OTA‑Pipelines, SBOM).
Zielgruppe: Embedded‑Entwickler:innen, Test/QA, Security‑Champions, DevOps/IoT‑Ops. Dauer: 1–2 Tage (intensiv), optional Follow‑up (Hardening‑Sprints). Voraussetzungen: Grundkenntnisse C/ESP‑IDF, Docker, Netzwerk‑Basics.
  • 10 Challenges mit klaren Lernzielen (siehe unten)
  • Build‑Switch: BUILD_FIXED=1 aktiviert Härtung (zeigt unmittelbar den Effekt)
  • Saubere Trennung: Exploit‑freie PoV‑Skripte demonstrieren Risiken ohne „Weaponization“
  • Trainer‑Material: Syllabus, Lösungsleitfäden, Moderations‑Fahrplan, Scoring‑Server
  • CI‑ready: Beispiel‑Workflow (Static Analysis/Tree), leicht erweiterbar (SAST/Secrets‑Scan)

  • Firmware (ESP‑IDF v5.x) mit 10 Modulen (HTTP‑Server, MQTT‑Client, BLE‑GATT, UART‑CLI, OTA‑Handler, KV‑Store etc.)
  • Docker Compose: Mosquitto (MQTT), leichter OTA/Web‑Server, optional Scoring‑Server
  • PoV‑Tools (Python) + Requirements, Beispiel‑Kommandos
  • Dokumentation: Setup, Syllabus, Challenges (Beschreibung → PoV → Fix → Erfolgskriterien), Facilitation Guide
  • CI‑Workflow (.github/workflows) als Startpunkt für Ihre Pipeline

Nach dem Training können Teilnehmende…
  • systematisch IoT‑Angriffsflächen erkennen und priorisieren,
  • unsichere Defaults, schwache Token/PRNG, unverschlüsselte Kommunikation nachweisbar identifizieren,
  • OTA‑Pfad (Download → Prüfung → Commit) sicher gestalten (TLS, Signatur, Anti‑Rollback, Verify‑before‑Commit),
  • Speicher‑/Protokollfehler (Overflow, Formatstring, fehlende Bounds‑Checks) gezielt finden und beheben,
  • BLE‑Berechtigungen richtig einsetzen (Pairing/Encryption, Attribute‑Permissions),
  • Log‑/KV‑Speicher so konfigurieren, dass Secrets nicht „abfließen“.

  1. Default Credentials (HTTP Basic) PoV: Login mit Standard‑Daten. Fix: Basic deaktivieren, kurzlebige Tokens + TLS, Secrets niemals hardcoden.
  2. Insecure MQTT (ohne TLS/Auth) PoV: Publish/Subscribe ohne Auth; Befehlsmissbrauch. Fix: TLS, Username/Passwort, Topic‑Isolation, Autorisierung, QoS/Retain‑Regeln.
  3. Weak Token (PRNG) PoV: Vorhersagbare Session‑Tokens (rand() mit festem Seed). Fix: TRNG/DRBG (esp_random), Nonces, Ratelimits.
  4. Command Injection (simuliert) & Logging PoV: Unvalidierter cmd‑Parameter → Log‑Format/Buffer‑Issues. Fix: Whitelist, sichere Formatierung, Bounds‑Checks.
  5. UART Overflow PoV: Unchecked copy → Out‑of‑Bounds Write. Fix: Länge prüfen, strlcpy/memcpy_s, Fuzzing an UART‑Pfaden.
  6. Unsigned/Plain OTA PoV: OTA aus http:// ohne Signaturprüfung. Fix: HTTPS, Signatur vor Commit, Anti‑Rollback, Hash‑Verifikation nach dem Schreiben.
  7. BLE Insecure Permissions PoV: Lesen/Schreiben ohne Pairing/Encryption. Fix: GATT‑Permissions verschärfen, Bonding, Secure Connections.
  8. Plaintext Provisioning & Secret Logging PoV: KV‑Store/Logs enthalten Passwörter. Fix: Redaction, NVS‑Verschlüsselung, Secrets nie loggen.
  9. Sensitive Data in NVS PoV: Unverschlüsselter NVS‑Dump. Fix: NVS‑Encryption aktivieren, Schlüsselverwaltung.
  10. Insecure Update Channel (TOCTOU) PoV: Zeitfenster zwischen Prüfung und Anwendung. Fix: Atomare „verify‑before‑commit“‑Strategie, Post‑Write‑Hash, A/B‑Rollback.
Jede Challenge ist als Markdown dokumentiert (Beschreibung → PoV → Fix → Verifikation).
[Teilnehmende] ──(HTTP/MQTT/BLE/UART)──> [ESP32 DevKit]
      │                                   │
      ├───────────────(MQTT)──────────────┤
      │                                   ▼
   [Docker: Mosquitto]              [Docker: OTA/Web]
      │                                   │
      └──────────────(HTTP/REST)──────────┘
                        │
                 [Scoring‑Server]
Build‑Modi:
  • Vulnerable (Default): Verwundbarkeiten aktiv, PoVs funktionieren.
  • Fixed: Härtungen aktiv → PoVs schlagen fehl; Logs/Checks zeigen „sauberes“ Verhalten.

  • Target: ESP32 DevKit (ESP32‑WROOM32/gleichwertig)
  • ESP‑IDF: v5.x (HTTP Server, MQTT Client, BLE GATT, NVS, OTA)
  • Partitionierung: A/B‑fahig (factory, ota_0, ota_1); Rollback‑support aktivierbar
  • Docker: Mosquitto (MQTT, 1883), OTA/Web (Flask, 8000), optional Scoring (5050)
  • PoV‑Tools: Python 3.10+ (requests, paho‑mqtt)
  • CI‑Skeleton: Cppcheck + Struktur, einfach erweiterbar (SAST, Secret‑Scan, Lint)

Tag 1
  1. Setup & Recon (nmap, MQTT‑Sub, BLE‑Scan)
  2. HTTP/MQTT Challenges (#1, #2, #3)
  3. UART Overflow (#5) inkl. Logic‑Analyzer‑Einblick
Tag 2 4) OTA‑Kette (#6 & #10) – Risiken & sichere Varianten 5) BLE‑Permissions (#7) 6) Storage/Logging (#8 & #9) 7) Hardening‑Build (BUILD_FIXED=1), Regression‑Check, Retrospektive Bewertung: Team‑CTF über Scoring‑Server (Flag‑Abgabe, leichte Punktegewichtung).
  • Signierte OTA‑Pipeline (ESP32/STM32): nahtlose Anbindung einer Ed25519‑basierten Update‑Kette (Manifest, Verify‑before‑Commit, Anti‑Rollback).
  • SBOM & Supply‑Chain: CycloneDX in CI, Release‑Signaturen (cosign), Repro‑Builds.
  • Device‑spezifische Szenarien: CAN‑Gateway, Industrieprotokolle, Sensorik mit Wheatstone‑Bridge‑Beispielen.

  • Das Kit wird ausschließlich in isolierten Laborumgebungen betrieben (eigene SSID/VLAN).
  • PoV‑Skripte adressieren nur die bereitgestellte Hardware/Container.
  • Keine Veröffentlichung produktionsnaher Exploits oder 0‑Days.

Basic • Komplettes Kit (Repo, Docker, Docs, PoV, CI‑Skeleton) • Remote‑Onboarding (2h) Pro • Basic + 1‑Tages‑Workshop (Trainer:in) • Anpassung auf Ihr Lab (Netz, Zertifikate, Policies) Enterprise • Pro + Custom‑Challenges (Ihre Protokolle/Hardware) • SBOM/Signierte‑OTA‑Integration, Security‑Reviews Preis: auf Anfrage.
Ist das gefährlich? Nein – die Umgebung ist abgeschottet. PoVs sind bewusst „zahm“ und zielen nur auf die Lab‑Komponenten. Brauchen wir spezielle Hardware? Ein Standard‑ESP32‑DevKit genügt. Optional Logic‑Analyzer für UART‑Challenge. Können wir eigene Szenarien ergänzen? Ja. Das Repository ist modular – neue Endpoints/Protokolle lassen sich sauber hinzufügen. Wie misst man Lernerfolg? Über Flags, automatisierte Checks im Fixed‑Build, und eine kurze Abschluss‑Prüfung (Multiple Choice + Mini‑PoV).
Bash
# Firmware (Vulnerable)
idf.py -C firmware/esp32 set-target esp32
idf.py -C firmware/esp32 build && idf.py -C firmware/esp32 flash monitor

# Firmware (Fixed)
idf.py -C firmware/esp32 build -D BUILD_FIXED=1

# Docker‑Services
docker compose -f docker/docker-compose.yml up -d

# PoV: Default Credentials
python tools/pov_default_creds.py http://<ESP32-IP>/login

# PoV: Insecure MQTT
python tools/pov_insecure_mqtt.py

Interessiert an einer Live‑Demo oder einem Inhouse‑Workshop? Jetzt anfragen: info@buengener-software.de
Meta‑Title: IoT Security Training Kit (ESP32) – CTF‑Schulung für Embedded‑Teams Meta‑Description: CTF‑artige Schulungsbox für sichere Embedded‑Entwicklung: 10 IoT‑Challenges (HTTP, MQTT, OTA, BLE, UART), PoV‑Skripte, Docker‑Lab, CI‑Skeleton. In 1–2 Tagen praxisfit werden. JSON‑LD (Course/Service)
Html
<script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Course",
    "name": "IoT Security Training Kit (ESP32)",
    "description": "CTF‑artiges Hands‑on‑Training für sichere Embedded‑Entwicklung auf ESP32.",
    "provider": {
      "@type": "Organization",
      "name": "Büngener Software",
      "url": "https://buengener-software.de"
    },
    "hasCourseInstance": {
      "@type": "CourseInstance",
      "courseMode": "OnSite/OnLine",
      "startDate": "2025-10-01",
      "endDate": "2025-12-31",
      "location": {
        "@type": "Place",
        "name": "Inhouse / Remote"
      }
    }
  }
</script>

  • v1.0 – Initiale Veröffentlichung des Training Kits (10 Challenges, Docker‑Lab, PoV, CI‑Skeleton)
MIT (für Referenzcode, Drittanbieter‑Bibliotheken können eigene Lizenzen besitzen).