Google Maps – mapa dla piratów
Napisał: Patryk Krawaczyński
06/02/2021 w Bezpieczeństwo Brak komentarzy. (artykuł nr 770, ilość słów: 453)
M
apy Google używane są w miejscach, w których serwisy przeszukują lokalizacje wprowadzone przez użytkowników lub zaznaczają swoje obiekty. Większość z tych integracji ujawnia swoje klucze API za pośrednictwem kodu źródłowego lub w jednym z żądań wysyłanych z ich aplikacji mobilnych. Pozyskanie tych kluczy nie jest uważane za poważny problem, ponieważ osoba atakująca może “tylko” wysyłać żądania do punktów końcowych Google Maps API przy użyciu zdobytych kluczy. Wiele raportów odnośnie zgłaszania tego typu błędów można zobaczyć na platformach bugbounty oznaczonych jako informacyjne lub w zakresie akceptowalnego ryzyka.
Rzecz w tym, że firmy nie biorą pod uwagę, jaki może to mieć wpływ na ich budżet, ponieważ klucze te najczęściej mają skonfigurowany cykl rozliczeniowy zgodnie z rzeczywistym użyciem. Jeśli spojrzymy na cennik Google Maps to możemy dojść do wniosku, że te 1000 żądań bardzo szybko można sfabrykować za pomocą dowolnego narzędzia do wysyłania żądań HTTP. A, co jeśli do tego typu manipulacji zaprzęgniemy kilka serwerów, które będą używać takiego klucza przez kilka godzin?
Google ma również kilka opcji ograniczenia tego typu zachowania:
- Odsyłacze HTTP – ogranicza użycie do co najmniej jednego adresu URL i jest przeznaczone dla kluczy używanych w witrynach i aplikacjach internetowych. Ten rodzaj ograniczenia umożliwia zawężenie działania usługi do określonych domen oraz stron.
- Adresy IP – ogranicza użycie do jednego lub więcej adresów IP i są przeznaczone do zabezpieczania kluczy używanych w żądaniach po stronie serwera, takich jak wywołania serwerów WWW i zadania cron.
- Aplikacje Android – ogranicza użycie do połączeń z aplikacji na Androida o określonej nazwie pakietu.
- Aplikacje iOS – ogranicza użycie do wywołań z aplikacji na iOS o określonym identyfikatorze pakietu.
Samo Google radzi, aby korzystając z kluczy API w aplikacjach upewnić się, że są one bezpieczne zarówno podczas przechowywania, jak i przesyłania, a publicznie ujawnianie kluczy bez ograniczeń może doprowadzić do wcześniej wspomnianych nieoczekiwanych obciążeń na koncie. Jako przykład możemy podać stronę jednego z bardziej rozpoznawalnych komunikatorów wideokonferencji. Uzyskanie klucza od map ogranicza się do wyświetlenia strony z kontaktem oraz wyszukania frazy: maps.googleapis.com/maps/api
. Na końcu znajdziemy frazę: key=AIxxxxxxxxxxdTaxxxxxxxxxxcH8…U. Do sprawdzenia jakie możliwości daje nam pozyskany klucz możemy wykorzystać skrypt: gmapsapiscanner (lub sprawdzić to ręcznie):
(maps) root@darkstar:~/api/maps# python maps_api_scanner_python3.py Please enter the Google Maps API key you wanted to test: AIxxxxxxxx API key is vulnerable for Staticmap API! Here is the PoC link which can be used directly via browser: https://maps.googleapis.com/maps/api/staticmap?center=53%2C19&zoom=9&size=800x800&key=AI..
Jak widać pozyskany klucz umożliwia nam bezpośrednie korzystanie z statycznych map Google na koszt innej firmy.
Więcej informacji: Unauthorized Google Maps API Key Usage Cases, and Why You Need to Care, Bypassing Google Maps API Key Restrictions, Google Maps Platform best practices: Restricting API keys