Wyzwanie: błąd bezpieczeństwa w Home Assistant

Home Assistant to przyjazne dla użytkownika narzędzie, które ułatwia korzystanie z Internetu rzeczy i zwiększa jego dostępność dla każdego. Można je uruchomić na Raspberry Pi i integruje się bez problemu między innymi z : Alexa, Apple TV, Belkin WeMo, Google Cast, IKEA Tradfri, Philips Hue, Plex oraz Sonos. Oprogramowanie służy do zarządzania systemem domowej automatyki. Krótko mówiąc, twórcy widzą je jako przeskok z rozwiązań typu ,,jedna aplikacja na urządzenie’’ na platformę obsługującą je wszystkie. Inteligentne urządzenia powoli wprowadzają przełom w życiu codziennym, jednak ich słabe skomunikowanie jest częstą przeszkodą w funkcjonowaniu jako kompletnych, łatwo dostępnych systemów. Home Assistant to bezpłatne rozwiązanie, które komunikuje się przez wiele różnych protokołów używanych przez inne produkty. Służy jako poręczny translator z eleganckim UI.

Testowanie w czasie wolnym
Home Assistant - jako projekt open-source - jest świetnym polem do testowania rozmaitych problemów, z którymi deweloperzy mogą chcieć się zmierzyć. Otwarte i ogólnodostępne oprogramowanie opiera się na feedbacku użytkowników. Ja osobiście skupiłem się na testowaniu bezpieczeństwa systemu. W którymś momencie (pomiędzy moimi zadaniami związanymi z pracą w Intive) doszedłem do wniosku, że spróbuję zbadać czy platforma jest odporna na intruzów. Zrobiłem serię testów. Jeden dzień testowania walidacji danych wejściowych wystarczył by odkryć, że system jest podatny na XSS. Korzystając z końcowego /api/states/persistent_notification.httplogin (patrz: GIF powyżej) możliwe było osadzenie dowolnego kodu JavaScript, który będzie wykonany, gdy użytkownik odwiedzi główną stronę interfejsu webowego. Co oznacza, że atakujący mógłby potencjalnie wykonać jakiekolwiek działanie w imieniu uwierzytelnionego użytkownika.
Satysfakcja większa od poziomu zagrożenia
Nowa wersja platformy
W listopadzie 2017 - ku mojej radości - udostępniono poprawioną wersję Home Assistant 0.57. Niektórzy dostawcy zamkniętych rozwiązań przychylnie reagują na takie testy, a nawet organizują programy bug bounty dla tych, którzy z zamiłowania śledzą słabości oprogramowania. W moim wypadku chodzi (aż i tylko) o kwestię bezpieczeństwa - zgłoszoną i rozwiązaną.