Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Backdoorowanie termostatów Boscha – CVE-2023-49722

17 stycznia 2024, 08:55 | W biegu | komentarze 2

Stary dowcip bezpieczników mówi, że litera „“s” w skrócie IoT pochodzi od „security”. Ironiczne stwierdzenie wskazuje, że wzrost popularności Internetu Rzeczy nie zawsze idzie w parze z realnym bezpieczeństwem tych rozwiązań. Całe szczęście wysiłek badaczy bezpieczeństwa powoduje, że producenci zaczynają rozumieć zagrożenia i wdrażać poprawki w swoich produktach. 

Badacze z laboratorium Bitdefendera opublikowali krótką notkę, w której opisują podatność znalezioną w termostatach firmy Bosch o numerze katalogowym BCC100. Luka pozwala atakującemu, znajdującemu się w sieci lokalnej, w której umieszczony jest też sterownik, na podmianę firmware’u. 

Urządzenie do swojej pracy wykorzystuje dwa mikrokontrolery. Jeden jest odpowiedzialny za komunikację przez WiFi (HF-LPT230), a drugi (STM32F103) przetwarza kod implementujący logikę urządzenia. Komunikują się przez dobrze znany protokół UART. Samo urządzenie łączy się z serwerem producenta pod adresem connect.boschconnectedcontrol.com, przesyłając JSON-owe komunikaty przy pomocy websocketów. Badacze zauważyli, że komunikaty te nie są walidowane więc możliwe jest ich podrobienie. 

Okazuje się, że HF-LPT230 wystawia też port 8899 w sieci lokalnej oraz przesyła dalej zawartość otrzymywanych pakietów przez UART do drugiego mikroprocesora. To pozwala na przesłanie sekwencji wiadomości, które wymuszają dokonanie aktualizacji. 

\x81\x46{"cmd":"device/update","device_id":"<device mac address>","timestamp":1111111}

Zespoofowana informacja o dostępności nowej aktualizacji wysłana do termostatu spowoduje, że urządzenie wyśle zapytanie dotyczące nowego firmware:

{"cmd":"server/fireware","device_id":"<device mac address>","timestamp":"<unix timestamp>","model":"BCC101","version":"1.7.0","id":"0"}

Oczywiście serwer producenta zwróci błąd, ponieważ nowe oprogramowanie układowe nie jest dostępne dla tego modelu:

{"error_code":"99","cmd":"server/fireware","device_id":"<device mac address>","timestamp":"<unix timestamp>"}

Odpowiedź serwera może zostać zespoofowana przez atakującego i mieć następującą postać:

\x81\x7e\x01\x33{"error_code":"0","cmd":"server/fireware","device_id":"<device mac>","timestamp":"<unix timestamp>","model":"BCC101","version":"<fw version>","url":"<firmware URL>","size":"<firmware size>","isize":"0","pic_pos":"2930","md5":"<firmware md5>","type":0,"release_date":"1111-11-11"}

Z treści raportu nie wynika jakoby atakujący potrzebował znaleźć między komunikującym się termostatem a serwerem (wykorzystując atak MitM – man-in-the-middle), więc domniemywać należy, że wystarczy wysłać sfałszowaną wiadomość do urządzenia. 

Even though the server responds with an error code because there is no update available […] The device will also accept a forged response containing the update details […]

W ciele wiadomości umieszczony jest URL (dostępny z Internetu) do „nowego” firmware, tj. przygotowanego przez atakującego. Jeśli dane takie jak numer wersji oprogramowania (który musi być większy od obecnego) zostaną poprawnie zweryfikowane, urządzenie poprosi serwer producenta o dostarczenie aktualizacji następującym komunikatem:

{"cmd":"server/deviceUpdate","device_id":"<device mac>","timestamp":"<unix timestamp>","url":"<firmware URL>","pindex":"0"}

W odpowiedzi na to zapytanie, chmurowy serwer producenta zwróci plik pobrany z URL przedstawionego przez atakującego. Po pobraniu aktualizacji jest ona instalowana bez weryfikacji podpisów cyfrowych, doprowadzając do kompromitacji urządzenia. Oczywiście oprócz przejęcia termostatu można doprowadzić do jego uszkodzenia (tzw. brick). 

Należy podkreślić, że błąd został naprawiony i producent wydał łatki, co w świecie IoT nie jest oczywiste. A Wy, aktualizowaliście już swoje termostaty?

~fc

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Jacek

    mała uwaga merytoryczna – UART to nie protokół a interfejs załatwiający warstwę fizyczną transmisji. To coś jak PHY przy ethernecie 😉

    Odpowiedz
  2. Karol

    Skoro w sieci lokalnej to jaka jest szansa że ktoś w prywatnym domu zrobi nam psikusa? W bloku może gorzej. W dużej firmie tym bardziej, choć taki termostat to typowy gadżet do domu.

    Odpowiedz

Odpowiedz