Sicherheit bei Home Assistant und Zigbee?

Bisher nicht, weil ich keine WiFi-Steckdose habe.
Außerdem weiß ich auch nicht wie leicht sie angreifbar sind. Es macht ja einen Unterschied wie hoch der Aufwand ist.

Ja, das kann gut sein.
Ich weiß aber nicht wie sicher Zigbee ist. Darum kann ich nicht beurteilen ob es nicht vielleicht auch für Zigbee ein „Baumarkt-Tool“ gibt. Vielleicht gibt es ja einen Zigbee-Hack den jedes Skript-Kid schnell auf seinen Flipper-Zero aufspielt und dann damit mein Netzwerk übernehmen kann.

Und weil ich das alles nicht weiß, habe ich die Frage hier gestellt.

Wenn jetzt dabei heraus kommt, dass man den Chip abschleifen muss um dann live beim Paring den Schlüssel auszulesen, weil er irgendwie nicht gut geschützt in einem Speicher liegt, dann wäre das Zigbee-Netzwerk aus meiner Sicht sicher.
Wenn aber jeder, mit geringsten Vorkenntnissen und mit vorgefertigten Tools aus größerer Entfernung (ca. 50m hinter dem nächsten Hauseck) einen Angriff starten kann, dann würde ich das als nicht sicher ansehen.

Aber wie gesagt, das weiß ich nicht und darum frage ich, in der Hoffnung, dass es jemanden gibt, der mir grob sagen kann wie ein Angriff theoretisch möglich wäre, damit ich mir eine Meinung dazu bilden kann.

also den SNZB-02P von Sonoff: https://sonoff.tech/product/gateway-and-sensors/snzb-02p/
findet man hier nicht: https://templates.blakadder.com/index.html

Vielleicht gibt es ja hier solche „Baumarkt-Tools“ ?
https://bishopfox.com/resources/zivideobee-hacking-smarter-home-invasion-with-zigdiggity
oder hier:
https://www.infosecinstitute.com/resources/hacking/hacking-zigbee-networks/
oder hier
https://github.com/BishopFox/zigdiggity/blob/master/unlock.py
oder vielleicht ist das eines:
https://github.com/Cognosec/SecBee

Aber da ich noch Sub-Script-Kieddie Niveau bin benötige ich Hilfe um das zu beurteilen.

Vielleicht ist ja dieser Guide von NXP interessant:
https://www.nxp.com/docs/en/supporting-information/MAXSECZBNETART.pdf

Es scheint auch Zigbee Tools zu geben, aber in wiefern die praxisrelevant sind, kann ich auch nicht beurteilen.
https://bishopfox.com/resources/zivideobee-hacking-smarter-home-invasion-with-zigdiggity

und Literatur gibt es auch:
https://personal.utdallas.edu/~shao/papers/wang_ccs22.pdf

1 „Gefällt mir“

Weil das ein Zigbee-Device ist. Tasmota flasht eine alternative Firmware auf einen ESP8266-Chip, der für WiFi da ist.
Deshalb mein Hinweis auf eine Suche im Netz.

Ja.

Wer soll dir das beantworten? Aber du gibst auf jeden Fall deine Daten preis, wenn das über den Hersteller läuft.

Übers Internet.

Weil eine Verbindung ins Internet bestand. Das hat aber nichts mit Zigbee zu tun, sondern liegt an deiner Konfiguration.
Deshalb flasht man eine andere Firmware auf den Chip, um die Kontrolle über das eigene Gerät zu haben.
Das heisst nicht, dass das automatisch sicher ist; aber man kann sich im Allgemeinen den Sourcecode ansehen und nach Sicherheitslücken suchen.
Ein Projekt wie Tasmota halte ich, allein durch seine Verbreitung, für sicher.

Du solltest aber schon genauere Angaben über deine Geräte machen, sonst wirst du nur allgemeine Antworten bekommen.

1 „Gefällt mir“

Ich dachte eigentlich, dass die Zigbee Sensoren nur bis zum Zigbee-Gateway und der Home Assistant zentrale kommen und keine Verbindung mit dem Internet haben, oder ist diese Annahme falsch?

Mich würden schon eher allgemeine Antworten interessieren.

In dem Guide von NXP werden zur sicheren Verwendung von Zigbee ja schon einige Empfehlungen getätigt. Das weck bei mir den Eindruck als wäre das Sicherheitsniveau von Zigbee ohne diese Maßnahmen eher niedrig.

Dort steht:

SECURITY RISKS
The main security risks for a ZigBee wireless network
are:
 Theft of sensitive data from a node – This may be
user data that can be used for criminal purposes
but is more likely to be network security data,
such as encryption keys, that will allow access to
the node and network. It is therefore important to
carefully select and protect the security keys used
by the network.
 Theft of a node – A node may be stolen in the
sense that it is removed from the current network
and moved to another network where it can be
accessed and controlled. This is a particular risk
when Touchlink commissioning has been used
(described later), but there are ways to prevent it.
 Unauthorized control of a node – This may result
from the above thefts or from replay attacks in
which genuine over-the-air command frames are
captured and re-sent to the node at a later time
to achieve subversive control. The frame counters
incorporated in ZigBee security help to defeat
this kind of breach but other measures, such as
regularly changing the network key, can also help.
 Loss of network service – This may result from the
jamming of the radio channel or whole radio band
by interference. Applications can employ frequency
agility to overcome this kind of impediment by
moving the network to a quieter channel.

Das ist recht allgemein würde ich sagen und da würde mich ganz unabhängig von den Bauteilen die ich mir zum Ausprobieren besorgt habe interessieren was bedeutet

will allow access to the node and network.

Kann der Angreifer auf mein Gateway zugreifen und es übernehmen, nur weil einer der Sensoren / Aktoren gehacked wurde oder ist das laut aktuellem Stand nicht möglich.
Denn wenn er das Gatway hat, dann kommt er auch in das restliche Netzwerk.

dann steht da auch noch:

The frame counters incorporated in ZigBee security help to defeat this kind of breach but other measures, such as regularly changing the network key, can also help.

jetzt habe ich schon gelesen das es hier Unterschiede zwischen ZHA und Zigbee2MQTT gibt.
Betrifft das Problem auch ZHA oder nur Zigbee2MQTT. Und wie setze ich die Empfehlung am besten um?

Und dazu würde mich interessieren:

Loss of network service – This may result from the jamming of the radio channel or whole radio band by interference. Applications can employ frequency agility to overcome this kind of impediment by moving the network to a quieter channel.

Kann Home Assistant oder ein Plugin das erkennen, wenn eine Frequenz die erst wenig genutzt wurde plötzlich stark ausgelastet ist und automatisch die Frequenz wechseln? Die Fritzbox macht das ja, glaube ich. Und kann man sich dann von Home Assistant benachrichtigen lassen, wenn sowas passiert? Der Raspi hängt ja am Kabel, dem wäre es egal, wenn wer den Funk blockiert, der kann mich ja trotzdem informieren.

und dann ist da noch dieser Punkt:

SECURITY KEY WEAKNESSES
The least secure element of a ZigBee network is the network key. It is used by all nodes of the network and although it is securely passed to a joining node encrypted with a pre-configured link key, this link key is likely to be of the ‘global’ type and susceptible to exposure. Therefore, depending only on the network key leaves a network vulnerable. A ZigBee application profile (such as Home Automation) defines the level of security that is appropriate for itself. For example, Home Automation uses the well-known ZigBee 09 global pre-configured link key to authenticate devices onto the network and distribute the network key.
ZigBee 3.0 has no application profiles but defines a base device behavior (BDB) that adopts and adapts the security functionality of the Home Automation profile. It permits use of the ZigBee 09 key, as this allows backward compatibility with legacy Home Automation devices. However, the use of this global key will create a hole in network security (see Figure 1). To achieve a high level of security, ZigBee 3.0 allows the use of install codes (see Figure 2).

Wenn ich das richtig interpretiere, dann gibt es wegen der Rückwärtskompatibilität Sicherheitsprobleme, richtig?
Da ich alle Geräte neu anschaffen würde, bräuchte ich das nicht. Mir ist aber nicht klar, wie ich das abstellen kann, wenn ich es nicht brauche.

Der nächste Punkt in dem PDF heißt:

SECURITY DURING COMMISSIONING

ich kopiere den Text darunter nicht rein, weil mir das wirklich gar nichts sagt, was da steht.
Zum Testen habe ich ZHA verwendet, da drücke ich erst in der Software „neu Hinzufügen“ und dann an dem Sensor / Aktor einen Knopf und dann läuft es. Irgendwo habe ich mal gelesen, beim Paring ist das ganze angreifbar, danach nicht mehr.
Ist das so richtig, oder nicht?
Weil wenn dem so ist, dann würde ich das vernachlässigen, weil das genau dann jemand angreift, wenn ich eine Komponente neu verbinde, das ist doch eher unwahrscheinlich.

oder habe ich da was vertauscht und es handelt sich um das hier:

PROTECTING THE NETWORK KEY
The basic security provided by the ZigBee network is the encryption of data using the network key. This key is transported to the joining device during the authentication process.
The network key is never sent over-the-air unencrypted. It is always encrypted with a pre-
configured link key, but having knowledge of the link key makes obtaining the network key possible by capturing over-the-air packets using an IEEE802.15.4 packet sniffer application. Exposing the network key could have a very large impact on the security of the network and its vulnerability to security attacks and hacks.

Ich tue mich schwer die Konsequenzen des dort geschriebenen zu erkennen.
Heißt das jemand muss nur den allgemeinen Zigbee Key kennen, was ein Hacker natürlich tut und dann kann er einen Sniffer irgendwo platzieren und der greift dann über die Zeit die Schlüssel aller neu hinzugefügten Geräte ab und kommt damit ins Gateway?

Als abhilfe steht das hier drin:

INSTALL CODES
In ZigBee 3.0, an install code can be used to create the link key used to authenticate a node into a centralized security network and pass the network key to the node. A random install code is assigned to the node in the factory and programmed into the node. The ZigBee stack
within the node derives a link key from the install code using a Matyas-Meyer-Oseas (MMO) hash function. The install code must also be communicated (by unspecified means) for the purpose of commissioning the node into a network. During commissioning, the install code is entered into the Trust Center and the ZigBee stack again derives the same link key from the install code. The Trust Center and node can subsequently use the link key in joining the node to the network.

Ich habe gesehen, dass auf den Sonoff Zigbee Sensoren ein QR-Code ist und dort stehen Zahlen darunter. Ist das dieser Code und wenn ja, wie kann ich ihn zum sicheren Paring nutzen?

Nächster Punkt in dem PDF

WHITE AND BLACK LISTS

Heißt das es gibt für Zigbee / Home Assistant eine Funktion wie in der Fritzbox, in der man sagen kann, nur die bekannten Geräte dürfen sich verbinden, sonst niemand?

Dann noch diese Empfehlung hier:

PREVENTING REJOIN SECURITY ATTACKS
When a device joins the network, a pre-configured link key is used to join the network and decrypt the network key received from the Trust Center. If the same link key is used for every join attempt, it opens up the system to rejoin security attacks. Therefore, the same link key should not be used for any subsequent rejoins. In more detail, if the same link key is allowed to be used for rejoins, it is possible to copy a device’s addressing credentials and spoof a network layer insecure rejoin using a separate device. This would result in the Trust Center passing the network key encrypted with the previously used link key to the cloned device. If the network key finds its way into the wrong hands, it compromises the entire network.

Ich glaube das verstanden zu haben, aber ich habe trotzdem keine Ahung wie ich das nun in Home Assistant umsetzen kann.

genauso hier:

ROLLING THE NETWORK KEY
Once a device has left a network, it is possible to obtain the network credentials from the device, including the network key and any link keys that it had for peers in the network. To prevent this from compromising the network, it is recommended that when a device leaves the network, the Trust Center rolls the network key to a new key, as follows:

  1. The Trust Center broadcasts a new network key (with a new key sequence number) to all the nodes of the network.
  2. The Trust Center then broadcasts a Switch Keycommand (with the new key sequence number) to all the nodes of the network.
  3. Each device in the network switches to the new network key.

keine Ahnung wie ich das umsetzen kann

ind dem PDF folgen dann noch weitere Empfehlungen, bei denen ich keine Ahnung habe wie ich die entsprechenden Einstellungen in Home Assistant vornehmen soll

In diesem Beitrag werden immer mal wieder einfach sachen vermischt, die miteinander nichts zu tun haben.
tasmota hat mit zigbee nichts zu tun, damit auch in der eigentlichen Frage nicht.

Zigbee hat nur Verbindung zum Koordinator, nicht ins Internet.

Die gelisteten Szenarios sind teilweise mehrere Jahre alt und es ist schwer, festzustellen ob das noch zutrifft.

Den Key zu extrahieren erscheint machbar, muss dafür aber ein Gerät in die Hand bekommen, dass schon im Netzwerk angemeldet ist. Meiner Meinung nach ist das kein Vector der mir sorgen machen würde, bei physischem Zugriff auf die Geräte ist wohl so ziemlich alles anfällig.
Die Frage die bleibt ist, was kann ich damit anfangen, Zugriff auf dein Zigbee Netzwerk zu haben und da scheint mir wenig möglich.

1 „Gefällt mir“

Dann fasse ich das jetzt mal zusammen, so wie ich das verstanden habe, bitte korrigiert mich, wenn etwas davon falsch ist.

  1. Man sollte dafür sorgen, dass potentielle Angreifer keinen einfachen Zugriff auf ein Zigbee-Gerät bekommen. Also z.B. keinen Zigbee-Taster als Türklingel neben die Außentüre kleben.
  2. Die in dem PDF beschriebenen Szenarien sind schon älter und es ist wahrscheinlich, dass die Schwachstellen behoben wurden. Da das Problem beim Anmelden aber erst im Zigbee Pro 2023 Standard behoben wurde, existiert es vermutlich noch (https://www.notebookcheck.com/CSA-Smarthome-Spezifikation-Zigbee-Pro-2023-bringt-mehr-Sicherheit-Reichweite-und-Bluetooth-Unterstuetzung.707008.0.html)
  3. Wenn ein Zigbee-Netzwerk gehacked wird, dann hat der Angreifer zum derzeitigen Wissensstand keine Möglichkeit von dem Zigbee-Netzwerk weiter auf das normal LAN / WLAN Netzwerk weiter zu kommen. Er bleibt also im Zigbee-Netzwerk isoliert.
  4. Es gibt nur wenige die die Sicherheit von Zigbee-Netzwerken bisher eingehend geprüft haben, daher sollte man kritische Sachen wir Haustüren nicht damit steuern. Alle anderen Dinge wie etwa Sensoren sind für Angreifer so unattraktiv, dass sich sehr wahrscheinlich niemand die Mühe machen wird einen Angriff zu starten.
  5. Wenn ich mir dieses ein Jahr alte Video ansehe (ab Minute 12) dann vermute ich allerdings, dass die Problematik beim Anmelden immer noch besteht, weil ZB 3.0 abwärtskompatibel ist. Was mich zu der Frage bringt, wie kann ich die Abwärtskompatibilität deaktivieren? Zigbee Security - Jordan - White Hat Cal Poly

Was zu dem Fazit führt, das Zigbee für solche Dinge wie Heizungs- und Lichtsteuerung als sicher betrachtet werden kann. Auch einfache Sensoren wir Temperatur, Feuchte, Bewegungs und Rauchmelder kann man derzeit mit sehr geringem Risiko betreiben.
Mikrofone, Kameras und Türschlösser sollte man eher nicht damit betreiben, weil unklar ist, wie sicher es letztlich ist, wenn jemand große kriminelle Energie an den Tag legt.

Was mir noch unklar ist, was ist dieser „Link Key“?
Muss ich den manuell eingeben? Denn er spricht von „entsorgen“ des Keys.
Auf den Sonoff Geräten die ich getestet habe ist eine Zahl aufgedruckt, ist das evtl. der Link-Key? Beim verbinden wurde ich nach dem jedoch nicht gefragt.

Wenn ich das richtig verstanden habe, gilt für ZHA folgendes:
Der Link Key wird genutzt, um eine verschlüsselte Verbindung zwischen zwei Zigbee-Geräten herzustellen. Dies ist notwendig, um sicherzustellen, dass die Daten, die zwischen den Geräten ausgetauscht werden, nicht von unbefugten Dritten abgefangen oder manipuliert werden können. Er wird in der Regel während des Pairing-Prozesses zwischen Geräten erzeugt. Während dieses Prozesses authentifizieren sich die Geräte gegenseitig und tauschen den Link Key aus, um die Verbindung abzusichern. Mit dem Link Key werden alle Datenpakete, die zwischen den Geräten übertragen werden, verschlüsselt. Dies stellt sicher, dass nur die autorisierten Geräte, die den Link Key kennen, auf die Informationen zugreifen können. Jeder Link Key ist nur für das Paar von Geräten, zwischen denen er ausgetauscht wurde, gültig.

Bei Zigbee2 MQTT (Z2M) kann es aber auch sein, dass ein unsicherer, vorinstallierter Key verwendet wird.

Ob es trotzdem möglich ist während des Paring mit ZHA einen Man in the Middle Angriff durchzuführen kann ich nicht sagen.

Vor dem Hintergrund frage ich mich, ob ZHA einen regelmäßigen Austausch der Link Keys durchführt. Wenn dem so wäre könnte ein Angreifer ein bestehendes Netzwerk angreifen in dem er einen Sniffer aufstellt und wartet bis die Keys erneuert werden.

Die zweite interessant Frage wäre, ob man in Home Assistant alte Geräte (< Zigbee 3.0) generell ausschließen kann.

1 „Gefällt mir“

Update:
Zigbee 3.0 wurde bereits 2016 eingeführt, ist also schon ganz schön lange am Markt. Seither gab es anscheinend kein Update.
2017 Hat sich jemand die Sicherheit genauer angeschaut und da es seither kein Update gab, ist das wohl immer noch gültig.
https://www.semanticscholar.org/paper/Security-Analysis-of-Zigbee-Fan-Susan/3d1d5a51d05cde08b6e52afd5bd7bc325b487a10
Ich wollte das PDF hier anhängen aber ich habe keine Funktion dafür gefunden.

in der Conclusion steht folgendes:

The ZigBee standard itself implements quite strong security features. The AES algorithm for data encryption and data authentication provides ZigBee encryption with sufficient robustness, but the security depends on the secrecy of the encryption keys, which may be breached during the keys’ initialization or distribution. While a few features exist to counter various attacks, we were still able to sniff out the network key in our test setup, and with future work could theoretically perform other active attacks. Ultimately, key secrecy should not be the sole foundation of the ZigBee product’s security architecture. Therefore we proposed a few recommendations in order to divert the security risk from key secrecy alone or to mitigate the chances of key leaking, such as out-of-band key communication, and ephemeral device identifiers.

Wie würdet ihr das beurteilen, was bedeutet das in der Praxis.
Da steht der Network Key kann gesniffed werden. Was kann man damit anfangen. Jedes Gerät hat doch noch mit dem Gateway einen eigenen Key, oder?

Hier gibt es noch einen neueren Review über die Sicherheit von Zigbee:
https://www.sciencedirect.com/science/article/pii/S2542660523001142
Was ich als Laiin daraus ziehe, Legacy Devices sind schlecht. Aber wie erkenne ich ob so eines in meinem Netzwerk ist?
Dann steht da, dass man im Netzwerk, im Rahmen des Z3.0 Standards zusätzliche Sicherheitsmastnahmen ergreifen kann, was aber nicht jeder Hersteller macht. Wenn ich einen Zigbee Sensor am Tisch liegen habe, wie kann ich dann herausfinden ob der Hersteller diese zusätzlichen Maßnahmen implementiert hat?

kürzlich habe ich dieses Thermostat von Bosch in Home Assistant per Zigbee eingebunden:
https://www.bosch-smarthome.com/de/de/produkte/geraete/heizkoerper-thermostat/
Das Thermostat wurde direkt gefunden und auch zum Paring angezeigt. Die Verbindung wurde jedoch nicht hergestellt. Dazu musste man noch zusätzlich einen Code der im Thermostat aufgedruckt war eingeben.
Ich vermute mal, dass damit das Sicherheitsproblem bei der Anmeldung behoben ist.
Was ich mich nun noch frage ist, ist der Code auf den Sonoff Geräten das Gleiche? Nur dass es bei Sonoff optional und bei Bosch verpflichtend ist?