Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!

Petlibro – jak urządzenia do karmienia zwierząt udostępniały dane

30 grudnia 2025, 09:35 | Aktualności | 0 komentarzy

W redakcji staramy się przyzwyczajać Czytelników do pewnych truizmów. W przypadku IoT, będzie to oczywiście kiepska implementacja funkcji bezpieczeństwa (o ile w ogóle producent postanowi przejmować się takimi bzdurami). W związku ze świątecznym rozprężeniem, przybliżamy absurdalnie trywialne do wykorzystania i całkiem niebezpieczne podatności w… automatycznym dozowniku do karmy dla zwierząt.

TLDR:

  • Badacz znalazł serię krytycznych podatności w “smart” dyspenserach karmy dla zwierząt
  • Dzięki wykrytym lukom można było przejąć konto dowolnego użytkownika w systemie, pozyskać informacje o jego pupilach, zmieniać ustawienia urządzenia (w tym pory karmienia), odsłuchiwać nagrania właścicieli
  • Firma zareagowała… chociaż nie do końca idealnie. Błędy finalnie zostały naprawione, jednak niezałatany endpoint był dostępny przez ponad dwa miesiące po zgłoszeniu
  • Producent starał się też wymusić podpisanie NDA stosując niezbyt czyste zagrania

Typ urządzeń pewnie znany większości miłośników zwierząt. Z naszej perspektywy to jedno z tych zastosowań “inteligentnych” rozwiązań, gdzie rzeczywiście automatyzacja i zdalna kontrola może się przydać (nie, Wasz odkurzacz i pralka nie potrzebują dostępu do Internetu – a przynajmniej nie powinny!).

Petlibro – producent elektronicznych “smart” urządzeń do opieki nad pupilami udostępnia aplikację do ich kontroli. Użytkownik BobDaHacker dokładniej przyjrzał się implementacji kluczowych funkcji (takich jak uwierzytelnianie i autoryzacja), co doprowadziło do odkrycia szeregu niedociągnięć

Opis podatności rozpoczyna się bardzo dobrze, ponieważ już pierwsza bariera – proces uwierzytelniania, który ma pozwolić uzyskać dostęp do systemu tylko użytkownikom, którzy się wcześniej zarejestrowali, jest – całkowicie bezużyteczny. Jedną z dostępnych metod uwierzytelnienia jest OAuth 2.0 (a właściwie OAuth 2.0 + OpenID Connect). Użytkownicy mogą skorzystać z możliwości logowania się z Google jako IdP. W przypadku opisywanej aplikacji, przepływ danych nie był zaimplementowany zgodnie ze standardem i pozwalał na przyjęcie dowolnego konta. Wystarczyło przesłać do endpointu służącego do uwierzytelniania poniższe zapytanie:

{
  "phoneBrand": "google",
  "thirdId": "108305632482610644204",
  "type": 3
}

Listing 1. Ciało zapytania POST zawierające jedynie thirdID – identyfikator konta Google (źródło)

Jak słusznie wskazuje autor znaleziska, implementacja nie weryfikowała w żaden sposób czy użytkownik uwierzytelnił się w serwisie Google, tylko sprawdzała, czy dany identyfikator istnieje – czyli de facto, traktowała ID użytkownika jako sekret – hasło. Niestety, Google ID to informacja publiczna, która w praktyce bywa możliwa do pozyskania lub odgadnięcia i absolutnie nie powinna być traktowany jako sekret. Co za tym idzie, dla omawianej aplikacji, przejęcie konta ogranicza się do znajomości emaila użytkownika aplikacji. Takie wpadki niestety wciąż się zdarzają, może mieć to związek z trudnościami w zrozumieniu przez developerów mechanizmu federacyjnego uwierzytelniania. Nie zmienia to faktu, że odpowiedź firmy jest karygodna. Po zgłoszeniu, luka została naprawiona przez udostępnienie nowego endpointu, który poprawnie weryfikuje z IdP tożsamość użytkownika (poprzez walidację tokenów). Jednak podatna ścieżka logowania wciąż była dostępna w aplikacji przez ponad dwa miesiące! Firma obiecała badaczowi, że zmieni się to wtedy, gdy odpowiednia liczba użytkowników aktualizuje aplikację i zacznie korzystać z poprawnego mechanizmu. Cóż, pozostawimy to bez komentarza. 

Problemy z uwierzytelnianiem to tylko wierzchołek góry lodowej. System przechowuje informacje o zwierzakach, takie jak data urodzenia, imię, waga, rasa, apetyt etc. Wszystkie te informacje dostępne są pod endpointem /member/pet/detailV2. Tak, zgadliście – identyfikator zwierzaka to sekwencyjna, enumerowalna lista. Oczywiście mechanizmy autoryzacji dostępu do zasobu nie istnieją (lub nie działają), więc jeśli już przejmiecie konto użytkownika, to możecie enumerować cudze zwierzęta. 

Rysunek 1. Zapytanie listujące właściwości obiektu (pupila) o identyfikatorze 33198 (źródło)

Identyfikator zwierzęcia skojarzony jest z kolei z urządzeniami producenta (np. “smart” dozownikiem z kamerą). Przesyłając zapytanie do API, takie jak przedstawione na rysunku 2. możliwe jest odczytanie kluczowych informacji o urządzeniu – numeru seryjnego. 

Rysunek 2. Enumeracja urządzeń skojarzonych z pupilem (źródło)

Dzięki tej informacji, użytkownik może wpływać na parametry urządzenia – w tym wpływać na samopoczucie zwierzaka zmieniając pory karmienia oraz uruchamiać dodatkowe akcje (jak np. włączanie kamery). Mamy nadzieję, że nikt o zdrowych zmysłach nie opiera karmienia swojego pupila tylko na tym urządzeniu, ponieważ atakujący mógł wprowadzać modyfikacje w taki sposób, aby podopieczny nie otrzymał swojej karmy – a to mogłoby mieć opłakane skutki. Żeby sytuacja była bardziej, jak to mówi młodzież “creepy” – atakujący może zmienić dźwiękowe nagrania, które właściciel może zdefiniować dla swojego zwierzaka. Dzieje się tak dlatego, że znów – zasoby te są identyfikowane przez sekwencyjne wartości. 

Rysunek 3. Enumeracja nagrań użytkowników (źródło)

Zwieńczeniem ataku może być “przejęcie” zwierzaka (chcieliśmy aby to był tytuł niniejszego posta, ale Departament Clickbaitów odrzucił nasz wniosek) – nie chodzi oczywiście o jego fizyczną relokację, tylko dopisanie swojego użytkownika jako współwłaściciela. Jak zostało zauważone w oryginalnym poście, śladowe ilości autoryzacji zostały odnalezione – API weryfikuje usuwanie współwłaściciela pupila. Jednak wciąż istnieje możliwość dodania kolejnego właściciela do dowolnego zwierzęcia. Gratisowo zwracany jest adres e-mail głównego właściciela. W przypadku testowania podatności – udało się znaleźć konto pracownika firmy :) 


Rysunek 4, Dodawanie “Shared Owner” (źródło)

Polecamy rzucić okiem na dokładną rozpiskę czasową oraz dodatkowe kroki podjęte przez firmę. Pozytywnym aspektem sytuacji może być chęć wypłacenia nagrody za odkryte podatności. Niestety i ten krok wiązał się z pewnymi ograniczeniami. Pomijając samą wysokość wypłaty (500 USD za przejęcie konta zdecydowanie nie plasuje Petlibro w czołówce najbardziej szczodrych producentów), zmiana reguł w czasie gry i żądanie podpisania NDA (dopiero po przesłaniu danych do przelewu) oraz wysłanie pieniędzy z założeniem jego podpisania (we trust you bro) jest zdecydowanie działaniem godnym napiętnowania. Jako przesłankę działającą na korzyść firmy, można potraktować niewielkie doświadczenie w tym aspekcie. Jednak wciąż nie jest to działanie zgodne z etyką i najlepszymi praktykami współpracy z badaczami bezpieczeństwa. 

Reasumując, kolejne smart urządzenie miało ułatwić codzienne życie – tym razem zwierzętom i ich właścicielom. Niestety poważne podatności totalnie rozbiły model bezpieczeństwa urządzenia. Niedopatrzenia pozwalały na przejęcie urządzenia, zmianę jego parametrów (badacz nie poinformował o tym, czy był w stanie uzyskać dostęp do nagrań z kamery dyspensera do karmy) a także pozyskanie informacji nie tylko o samym zwierzęciu ale też prawowitym właścicielu. A na dodatek (a może przede wszystkim) cała ta funkcjonalność i zasoby – chronione błędnymi założeniami wobec OAuth 2.0, co pozwalało na przyjęcie dowolnego konta w systemie. 

~Black Hat Logan

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



Komentarze

Odpowiedz