Zum Hauptinhalt springen

LED Brille - Security Findings

Übersicht

FindingCVSSSeverityStatus
F-0019.8CriticalConfirmed
F-0024.7MediumConfirmed
F-0038.8HighConfirmed
F-0047.5HighConfirmed

F-001: Hardcoded AES Encryption Key

Beschreibung

Der AES-128 Verschlüsselungsschlüssel ist fest in der nativen Library libAES.so einprogrammiert und identisch für alle Geräte.

Technische Details

Location: lib/arm64-v8a/libAES.so @ 0x00012340
Key (hex): 34522a5b7a6e492c08090a9d8d2a23f8
Algorithm: AES-128 ECB

CVSS v3.1

Vector: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Score: 9.8 (Critical)

- Attack Vector: Adjacent (A) - BLE Reichweite
- Attack Complexity: Low (L) - Key einfach extrahierbar
- Privileges Required: None (N) - Kein Pairing nötig
- User Interaction: None (N) - Vollautomatisch
- Scope: Unchanged (U)
- Confidentiality: High (H) - Alle Commands lesbar
- Integrity: High (H) - Beliebige Commands sendbar
- Availability: High (A) - Gerät vollständig kontrollierbar

Impact

  • Angreifer kann alle BLE-Kommunikation entschlüsseln
  • Beliebige Commands an das Gerät senden
  • Ein extrahierter Key kompromittiert alle Geräte weltweit

Proof of Concept

from Crypto.Cipher import AES

KEY = bytes.fromhex("34522a5b7a6e492c08090a9d8d2a23f8")
cipher = AES.new(KEY, AES.MODE_ECB)

# Entschlüsseln von Wireshark-Capture
captured = bytes.fromhex("3e9d29cf48fb0ad27e1af5c3b1208d4f")
decrypted = cipher.decrypt(captured)
# → Original Command sichtbar!

Remediation

PrioritätMaßnahme
KritischDevice-spezifische Keys aus Pairing ableiten
HochKey Derivation Function (KDF) verwenden
MittelSecure Key Storage in Hardware (wenn verfügbar)

F-002: ECB Mode Usage

Beschreibung

AES wird im ECB (Electronic Codebook) Modus verwendet, der bekannte Schwächen aufweist.

Technische Details

Mode: AES-128 ECB
Block Size: 16 bytes
Problem: Gleiche Plaintexte → Gleiche Ciphertexte

CVSS v3.1

Vector: CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
Score: 4.7 (Medium)

Impact

  • Muster in verschlüsselten Daten erkennbar
  • Bei wiederholten Befehlen: Replay ohne Entschlüsselung möglich
  • Schwächt die Gesamtverschlüsselung

Demonstration

# Gleicher Plaintext = Gleicher Ciphertext
enc1 = encrypt(b"MODE\x01\x00" + b"\x00" * 10)
enc2 = encrypt(b"MODE\x01\x00" + b"\x00" * 10)
assert enc1 == enc2 # ECB-Problem!

Remediation

PrioritätMaßnahme
HochCBC oder GCM Mode verwenden
HochZufälligen IV pro Nachricht
MittelCounter/Nonce für Replay-Schutz

F-003: No BLE-Level Authentication

Beschreibung

Das Gerät erfordert kein BLE-Pairing und akzeptiert Verbindungen sowie Write-Operationen von jedem Gerät.

Technische Details

Security Level Required: 1 (No Security)
Pairing Required: No
Bonding: Not Supported
MITM Protection: None

CVSS v3.1

Vector: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
Score: 8.8 (High)

Impact

  • Jedes BLE-fähige Gerät kann sich verbinden
  • Keine Authentifizierung des Clients
  • Ermöglicht unautorisierte Steuerung

Test

# Verbindung ohne Pairing erfolgreich
gatttool -b XX:XX:XX -I --sec-level=low
> connect
Connection successful # Keine Authentifizierung!

Remediation

PrioritätMaßnahme
KritischSecurity Level 2+ auf Characteristics
HochPairing mit Passkey erzwingen
MittelApp-Level Authentication zusätzlich

F-004: Key Stored in Native Library

Beschreibung

Der Verschlüsselungsschlüssel ist als Klartext in der nativen Library gespeichert und kann mit Standard-RE-Tools extrahiert werden.

Technische Details

File: lib/arm64-v8a/libAES.so
Storage: Plaintext in .rodata section
Protection: None (no obfuscation)
Extraction: ~5 minutes with Ghidra

CVSS v3.1

Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Score: 7.5 (High)

Impact

  • Key kann von jedem mit der APK extrahiert werden
  • Keine Reverse-Engineering-Hürde
  • Kompromittiert alle Geräte

Remediation

PrioritätMaßnahme
HochKeys nicht in App speichern
MittelCode-Obfuscation (erschwert, verhindert nicht)
NiedrigIntegrity Checks der Library

Gesamtrisikobewertung

Aggregiertes Risiko: Critical

Die Kombination aus hardcodiertem Key (F-001) und fehlender BLE-Authentifizierung (F-003) ermöglicht vollständige Geräteübernahme ohne jegliche Hürden.

Empfohlene Maßnahmen

Kurzfristig (Firmware-Update)

  1. Security Level 2+ auf allen Characteristics erzwingen
  2. Rate Limiting für Verbindungsversuche

Mittelfristig (App-Update)

  1. Per-Device Keys aus Pairing ableiten
  2. Challenge-Response Authentication implementieren

Langfristig (Neue Hardware)

  1. Secure Element für Key Storage
  2. LE Secure Connections (LESC) unterstützen

Disclosure Status

Diese Findings wurden dokumentiert für Responsible Disclosure.