Popularny protokół dla modelów samolotów i dronów sterowanych połączniem radiowym (RC) o nazwie ExpressLRS może zostać zhakowany w zaledwie kilku krokach – czytamy w raporcie opublikowanym przez NCC Group.
ExpressLRS to open-source’owe łącze radiowe dalekiego zasięgu do zastosowań RC, takich jak np. drony. Jak czytamy na stronie Github tego oprogramowania, “zaprojektowanego, aby być najlepszym łączem pod FPV Racing” co oznacza bardzo niskie opóźniania i szybką reakcje.
Luka w protokole jest związana z faktem, że niektóre informacje przesyłane za pośrednictwem pakietów over-the-air. Te pakiety można przechwycić i wykorzystać do przejęcia połączenia między operatorem a dronem.
Każdy, kto ma możliwość monitorowania ruchu pomiędzy nadajnikiem i odbiornikiem, może przejąć komunikację. To natomiast skutkuje przejęciem kontroli nad urządzeniem. Samolot czy dron będący już w powietrzu prawdopodobnie doświadczyłby problemów z kontrolą, powodując kolizję.
Techniczna analiza
Protokół ExpressLRS wykorzystuje tak zwaną “fazę wiążącą”. Jest to rodzaj identyfikatora, który zapewnia, że właściwy nadajnik rozmawia z właściwym odbiornikiem. Jak podkreślono w raporcie, “faza wiążąca nie służy poprawie bezpieczeństwa, a unikaniu kolizji”, a podatność z nią związana mogą pozwolić atakującemu na wyodrębnienie części identyfikatora.
Wyrażenie wiążące jest przepuszczane przez kryptograficzny algorytm skrótu MD5 w celu uzyskania unikalnej sekwencji bajtów. Z tej sekwencji pierwsze 6 bajtów jest przechowywanych jako wspólny UID między odbiornikiem a nadajnikiem. Ostatnie cztery bajty UID są używane jako materiał do generowania losowej sekwencji FHSS (frequency hopping spread spectrum). Zarówno nadajnik jak i odbiornik przeskakują pomiędzy częstotliwościami w sekwencji FHSS w sposób zsynchronizowany.
Pakiet “synchronizacyjny” jest wysyłany z nadajnika do odbiornika na początku połączenia i w regularnych odstępach czasu w sekwencji FHSS. Kontrole CRC, inicjowane przy użyciu dwóch ostatnich bajtów UID, są stosowane w celu zapewnienia, że pakiety zostały odebrane w stanie nienaruszonym.
Istota problemu jest związana z “pakietami synchronizacyjnymi” – danymi przekazywanymi między nadajnikiem a odbiornikiem w regularnych odstępach czasu, aby zapewnić jednoczesność ich działania. Pakiety te „przeciekają” dużą część unikalnego identyfikatora (UID) frazy wiążącej – konkretnie 75% bajtów wymaganych do przejęcia łącza.
To sprawia, że 25% – tylko jeden bajt danych – pozostaje nieznany. Wspomniany bajt może być wymuszony lub zebrany poprzez obserwację pakietów w powietrzu bez wymuszania sekwencji.
Jeśli atakujący pozyska UID, może połączyć się z odbiornikiem – docelowym modelem lub dronem – i przejąć nad nim przynajmniej częściową kontrolę.
Zalecenia
Autor raportu zaleciał podjęcie następujących działań w celu poprawy bezpieczeństwa i załatania podatności ExpressLRS.
Nie należy wysyłać identyfikatora UID przez łącze kontrolne. Dane używane do generowania sekwencji FHSS nie powinny być przesyłane drogą powietrzną. Może to oznaczać użycie bardziej bezpiecznego algorytmu lub dostosowanie istniejącego algorytmu do pracy z powtarzającymi się sekwencjami.