Pół miliona znaków, czyli nowy błąd w Apple HomeKit
W działach QA firm zajmujących się pisaniem aplikacji jest takie powiedzenie: „Jeśli aplikacja przeżyje wklejenie treści Pana Tadeusza, to przeżyje wszystko.” Oczywiście z przymrużeniem oka, ale podobny test wykonał badacz bezpieczeństwa Trevor Spiniolas. Tym razem w systemowej aplikacji Dom.
Uwaga – opisany w tym wątku błąd może faktycznie uszkodzić Wasze dane i urządzenia – nie próbujcie go replikować!
Ujawnił tym samym lukę w platformie HomeKit Apple, która może spowodować, że nasz iPhone (lub inne urządzenie, które ma dostęp do konfiguracji domu) stanie się w zasadzie bezużyteczne). Spiniolas wyszczególnił w poście na blogu, że nazwa urządzenia HomeKit zmieniona na około 500 000 (pół miliona!) znaków jest przyczyną problemów. Pozdrowienia dla wszystkich testerów manualnych!
Błąd został początkowo zgłoszony do Apple 10 sierpnia i nadal istnieje w iOS 15.2. Firma rzekomo obiecała go rozwiązać w aktualizacji zabezpieczeń przed 2022 r., ale nie spełniła tej obietnicy. Apple twierdzi teraz, że to się zmieni „na początku 2022 roku”, ale Spiniolas bierze sprawy w swoje ręce, aby w międzyczasie publicznie ujawnić informacje.
Oto streszczenie błędu, zgodnie z wpisem na blogu Spiniolas:
Gdy nazwa urządzenia HomeKit zostanie zmieniona na duży ciąg (500 000 znaków), na każdym urządzeniu z zainstalowaną wersją iOS/iPadOS, na którym tego dokonano, aplikacja Dom zacznie ulegać awarii po każdym jej uruchomieniu (crash). Przywrócenie go do ustawień fabrycznych i ponowne zalogowanie się na konto iCloud, do którego przynależy dany inteligentny dom, ponownie wywoła błąd.
Korzystając z interfejsu API HomeKit, każda aplikacja na iOS z dostępem do danych Home może zmieniać nazwy urządzeń HomeKit. W iOS 15.1 (ewentualnie 15.0) wprowadzono limit długości nazwy, jaką może ustawić aplikacja lub użytkownik. W starszych wersjach systemu iOS aplikacja może wywołać błąd, ponieważ ten limit nie występuje. Jeśli błąd zostanie wyzwolony w wersji iOS bez limitu, a urządzenie udostępnia dane HomeKit urządzeniu z wersją iOS z limitem, nadal będzie to miało wpływ na dane urządzenie.
Dotyczy to także użytkowników, którzy przyjęli zaproszenie do czyjegoś domu. Gdyby atakujący wykorzystał tę lukę, znacznie chętniej użyłby właśnie zaproszeń do Domu niż aplikacji zewnętrznej, ponieważ zaproszenia nie wymagałyby od użytkownika posiadania urządzenia HomeKit.
Samo wywołanie awarii wpadnięcia aplikacji Dom w pętle, to jednak nie wszystko. Okazuje się, że gdy po dokonaniu zmiany nazwy dowolnego urządzenia na taką, która ma ponad pół miliona znaków, uruchomimy to urządzenie z poziomu Centrum Sterowania (bo przecież inaczej tego nie zrobimy, jeśli aplikacja Dom wpadnie w ślepy ciąg crashowania się), to:
iOS przestanie odpowiadać. Wszystkie dane wejściowe do urządzenia będą ignorowane lub znacznie opóźniane i nie będziemy w stanie sensownie komunikować się nawet przez Lighting (z komputerem Mac). Urządzenie nie będzie odpowiadać. Ten cykl będzie się powtarzał w nieskończoność z okazjonalnym ponownym uruchomieniem iPhone’a (lub iPad). Ponowne uruchomienie nie rozwiązuje problemu. Ponieważ komunikacja USB nie będzie już działać, z wyjątkiem trybu odzyskiwania lub DFU, w tym momencie użytkownik skutecznie utraci wszystkie dane lokalne, ponieważ jego urządzenie nie nadaje się do użytku i nie można go odtworzyć z kopii zapasowej. Co ważne, jeśli użytkownik przywróci swoje urządzenie i zaloguje się z powrotem do poprzednio używanego iCloud połączonego z danymi, błąd zostanie ponownie wywołany z dokładnie takimi samymi efektami jak poprzednio.
Nie próbujcie.