tado° Internet Bridge - Eine Schwachstellen-Analyse der Kommunikation auf mögliche Sicherheitslücken

Ich habe mir ein tado° Starter Kit - Smartes Heizkörper-Thermostat V3+ zugelegt.
Bevor es mit der Ersteinrichtung losging, wollte ich wissen, was die Internet Bridge so alles macht.
Damit das System nicht durch jeden x-beliebigen Hacker angegriffen werden kann, mit der Konsequenz das dieser sieht wo das System verbaut ist und am Verbrauch Rückschlüsse auf eine mögliche Abwesenheit ziehen kann, habe ich es mir aus Sicht eines Angreifers angesehen.

Für die Punkte 2, 4 und 6 hätte ich möglichen Verbesserungsbedarf gesehen, aber das sieht tado° nicht so.
Der Punkt 7 Internetausfall ist gar nicht mal so selten. Auch hier wäre ein Lösung gut, hat aber nichts mit den Sicherheitsaspekten zu tun.
Die Bude ist dann einfach nur kalt und die Familienstimmung im Keller.

1.)
Die Internet Bridge kommuniziert mit dem Endpoint https://ingress.tado.com und lässt sich nicht durch verbiegen der DNS Auflösung austricksen.
Die nicht öffentliche PKI wird von der Bridge geprüft, ich kann ihr keine eigene PKI mit denselben Server Daten unterjubeln, da meine öffentlichen Schlüssel nicht passen.
Sehr schön! Jedoch auch schade das ich nicht über die Basic Authentication hinweg komme auf https://ingress.tado.com um dann zu sehen, was es alles zu sehen gibt. ;-)
Ich hoffe die PKI wird bei Firmware Updates in ein paar Jahren erneuert, sonst gibt es viel Elektroschrott.

2.)
Nur für tado° interessant:
Sollte es zu einem Problem in der WebUI kommen, wird ein HTTP POST an eine Diagnose Datensenke geschickt.
Der Endpoint https://ovihbsxusa.execute-api.eu-west-1.amazonaws.com/log/event ist nicht CSRF geschützt und nimmt alles an. Im Hinblick auf Log4Shell und andere Schwachstellen sollte das manipulieren von Logeinträgen nach Möglichkeit verhindert werden.

3.)
Auf dem GraphQL Endpoint https://nibbler.tado.com kann man eine GraphQL Introspection Query durchführen.
Das ist aber insoweit nicht schlimm, da keine versteckten schlimmen Befehle zum Vorschein kommen.
Jedoch selbst wenn die Query abgeschaltet wäre, gibt es Tools, die sich die Informationen über Enumerations zusammensuchen.

4.)
Im GraphQL Endpoint deviceRegistrationInfo kann jeder registrierte Account den Auth Code eines beliebigen Gerätes erraten wenn er die Seriennummer kennt und dann zumindest sehen ob es schon in einem anderen Home verbaut ist.
Ob das jetzt ein Sicherheitsproblem in den Augen von tado° ist, weiß ich nicht.
Ich habe keinen Bruteforce durchgeführt und kann daher nur empfehlen, dass zumindest eine Anfragelimitierung mit Zeitverzögerung eingebaut werden sollte, falls es diese noch nicht gibt.

    POST /graphql HTTP/2
    Host: nibbler.tado.com
    Authorization: Bearer eyJhb…..

    {"variables":{"serial":"IB1234567890","authCode":"nur 10000 mögliche PINs"},"query":"query ($serial: String!, $authCode: String!) {\n  deviceRegistrationInfo(serial: $serial, authCode: $authCode) ...

5.)
Im GraphQL Endpoint removeDevice ist ein entfernen Fremder Hardware zum Glück nicht möglich.
Das habe ich mit einem zweiten eingerichteten Dummy Account auf meine Geräte kontrolliert.

6.)
Bei einem Logout bleiben der Access Token und Refresh Token im Server aktiv, sie werden nicht revoked.
Der Access Token ist zwar nur kurzzeitig gültig, jedoch mit Kenntnis des Refresh Token kann man sich beliebig den Access Token neu ausstellen.
Hier sollte das Logout (der WebUI) einen Aufruf zum Server einbauen, der die Token explizit revoked.

7.)
Bedingt durch einen längeren Internetausfall habe ich die Nachteile schmerzhaft kennengelernt. Die Räume wurden nicht Zeitgesteuert hochgeregelt, da keine Internetverbindung vorhanden war.

Die Kommumikation mit tado° war sehr kurz.
Nachdem die erste E-Mail mit einer Standard Support E-Mail beantwortet wurde, wurde auf meine explizite Nachfrage diese Antwort verfasst:

Hallo,
wir lesen Ihre Sorgen und Anregungen und leiten sie immer an das Entwicklungsteam weiter.
Sie müssen sich keine Sorgen machen, dass jemand Ihre Geräte stiehlt, es gibt immer eine Möglichkeit, den rechtmäßigen Besitzer des Geräts nachzuweisen.
Ich hoffe das hilft.

Mit freundlichen Grüßen,

[.....]
    Sehr geehrte Damen und Herren,

    sie haben mir eigentlich nur auf den Punkt 7 geantwortet.
    Diesen Wunsch gibt es schon seit 2019 und der Thread hat viel Aktivität:
    https://community.tado.com/en-gb/discussion/464/develop-a-basic-backup-schedule-mode-for-when-tado-outage-or-loss-of-internet

    Ich hätte jedoch auch gerne eine Antwort mind. zu den Punkten 4 und 6.
    Ich möchte meine Erkenntnisse demnächst veröffentlichen und nicht das sie dann davon überrascht sind.

Mein persönliches Fazit

Auch wenn es Komfort Einbusen bedeutet, ich nutze nicht die Smartphone App, da tado° sonst durch Geofencing weiß, wo ich wohne.
Auch die verpflichtenden persönlichen Registrierungsdaten gehen mir deutlich zu weit für die Nutzung eines Heizkörper-Thermostat.
Das System benötigt eine dauerhafte Internetverbindung und wenn grade beim Wechsel des Zeitplans ein Ausfall ist, dann ist das Pecht gehabt.
Mir sind die Smarten Geräte zu Cloud lastig.
Der WAF ist aktuell im Vergleich zu den 10 Jahre alten und lokal einstellbaren Honeywell Heizkörperregler HR-20 Rondostat im Eimer.
Jetzt müssen wir hier aber erstmal durch…

Disclaimer

The information provided is released “as is” without warranty of any kind. The publisher disclaims all warranties, either express or implied, including all warranties of merchantability. No responsibility is taken for the correctness of this information. In no event shall the publisher be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages, even if the publisher has been advised of the possibility of such damages.

The contents of this advisory are copyright (c) 2022 by psytester and may be distributed freely provided that no fee is charged for this distribution and proper credit is given.

Written on February 8, 2022 | Last modified on February 8, 2022