LEDNIFY / WiZ Connected Lampen hacken - Wie weit ist das möglich?

Was steckt drin? Ich habe die smarten Lampen auseinandergenommen und analysiert.

Heute habe ich im Action Markt eine neue Flotte an smarten LEDs gesehen. Dieses Mal aus dem WiZ Connected Ökosystem.

3 Euro für eine smarte Lampe... Wo ist da der Haken?

Vor ein paar Monaten erst kamen Lampen von LSC Smart Connect in die Regale, welche leider keine ESPs nutzen und auf Tuya basieren.

Auf den Verpackungen der Farblampen ist sowohl WLAN als auch Bluetooth aufgeführt. (Auf den Lampen im Filament-Stil jedoch nur WLAN)

Also gekauft, aufgemacht und reingeschaut:

Auf der mittig rausstehenden Platine steht ESP32.

Die Platine mit LEDs lässt sich durch ablöten der Verbindung und vorsichtiges raushebeln lösen

Die innere Platine mit Netzteil und ESP32 Modul

Auf der inneren Platine befinden sich Netzteil und das ESP32 Modul mit herausgeführten Programmierpins. Das ganze ist bedeckt mit einer ordentlichen Menge wärmeleitender Masse.

Informationen die esptool über den Chip ausspuckt:

...
Chip is ESP32-U4WDH (revision 3)
Features: WiFi, BT, Single Core, Embedded Flash, VRef calibration in efuse, Coding Scheme None
...
Manufacturer: 20
Device: 4016
Detected flash size: 4MB
...

Ich habe als erstes ein Backup vom Flash gemacht und dann sofort versucht, Tasmota zu installieren. Aber im Seriellen Monitor kam nur die Meldung "invalid header: 0x7a3dc987" mit verschieden Hex-Daten abhängig vom jeweils aufgespielten Image.

Nach etwas Recherche stellte sich heraus, dass der ESP der Farblampe anscheinend Flash-Verschlüsselung besitzt und so konfiguriert ist, dass das Flashen eigener Firmware nur mit dem Verschlüsselungs-Schlüssel des Herstellers möglich ist. Die verantwortlichen eFuses sind schreibgeschützt und somit nicht zu umgehen, mit Ausnahme von Glitching-Attacken: https://limitedresults.com/2019/11/pwn-the-esp32-forever-flash-encryption-and-sec-boot-keys-extraction/ (Statement von Espressif)

Es besteht die Möglichkeit, dass der Hersteller für jeden ESP den selben Schlüssel genutzt hat, welches bedeuten würde dass nur ein ESP geknackt werden muss um die Verschlüsselung aller Lampen zu umgehen. Es ist aber warscheinlicher, dass jeder ESP seinen eigenen Key besitzt und somit jeder ESP einzeln geknackt werden muss.

Eine weitere Angriffsmöglichkeit wären OTA-Updates. Falls man es schafft, sich zwischen ESP und Hersteller-Server zu klemmen, könnte man vielleicht das übertragene Firmware-Image mit einem eigenen austauschen.

Gibt es noch Hoffnung?

Später habe ich andere Modelle ausprobiert, welche komplett gleich aufgebaut sind, mit einem entscheidenden Unterschied: Der Flash ist nicht verschlüsselt! Dennoch meckern sie bei anderer Firmware:

ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:2
load:0x3fff0030,len:184
load:0x40078000,len:12596
load:0x40080400,len:2916
entry 0x400805c4

abort() was called at PC 0x400842e4 on core 0


Backtrace:0x40084d01:0x3ffe3ba00x40090e49:0x3ffe3bc0 0x40096481:0x3ffe3be0 0x400842e4:0x3ffe3c60 0x400791ca:0x3ffe3c90  |<-CORRUPTED


ELF file SHA256: 0000000000000000

Der Fehler wurde vermutlich dadurch ausgelöst, dass der ESP32 hier nur einen Kern und noch weitere Unterschiede zu herkömmlichen Varianten hat. Ich konnte mit https://github.com/lbernstone/arduino-esp32-solo dann doch eigenen Code kompilieren und aufspielen.

Tasmota konnte ich auch installieren, jedoch musste ich speziell die version tasmota32solo1.factory.bin flashen.

Meine Erfahrung:

Sockel Modell Flashbar?
E27 RGB + Tunable White Nein
E27 Tunable White Ja
GU10 RGB + Tunable White Ja

Ich kann natürlich nicht Garantieren dass diese Daten stimmen, eine Flashbare Lampe zu finden ist Glückssache. Wenn im Output von espefuse summary Block 1 (Flash encryption key) aus Nullen besteht, sollte die Lampe Flashbar sein. Bei einer Lampe mit Flash-Verschlüsselung wären es Fragezeichen.

Was nun?

Eigene Firmware nutzen ist nur bei manchen Chips möglich. Also habe ich die originale Firmware der nicht Flashbaren Lampe wiederhergestellt und die WiZ app installiert. Was mich sehr überrascht hat: Ich musste kein Konto erstellen um die Lampe ins WLAN einzubinden und zu nutzen. Homeassistant hat die Lampe auch sofort erkannt, und alles funktioniert selbst wenn die Lampe keinen Internetzugriff hat.

Fazit

Die Lampen von LEDNIFY/WiZ Connected können abhängig vom Modell mit eigener Firmware (z.B. Tasmota) bespielt werden. Die offizielle Firmware kann aber auch ohne Konto und Internetverbindung genutzt und direkt in Home Assistant eingebunden werden. Der Preis von 3€ ist unglaublich, macht mir aber Sorgen um Bauqualität und Lebensdauer.

Persöhnlich werde ich bei der offiziellen Firmware bleiben und den Internetzugriff der Lampen über meinen Router sperren, damit diese nicht nach Hause telefonieren können.