Jak szybko zarobić 75 000 dolarów? Wystarczy znaleźć błąd pozwalający na nieautoryzowany dostęp do kamerki w Safari (zarówno na macOS, jak i iOS)! A właściwie nie jeden błąd, a serię siedmiu błędów, takich jak znalazł Ryan Pickren podczas analizy bezpieczeństwa modelu uprawnień do kamery. Trzy z tych błędów były potrzebne do ostatecznego exploita.
Przejście przez techniczny opis błędu jest prawdziwą gratką dla wszystkich miłośników bezpieczeństwa przeglądarek webowych. Autor pokazuje dokładnie i technicznie, jakie założenia dotyczące bezpieczeństwa poczyniło Safari i w jaki sposób udało się je obejść. W telegraficznym skrócie:
- Safari przechowywało informację o nazwach domen, którym użytkownik pozwolił na dostęp do kamerki. Nie przechowywało jednak informacji o protokole. Okazało się, że jak użytkownik dał dostęp do “
https://skype.com“, to “file://skype.com” też miało dostęp.
- Gdy użytkownik odwiedził odpowiednio spreparowaną stronę przez napastnika, był przekierowany do URL-a typu
data:,
- Kolejnym krokiem było odwołanie się do URL-a typu
blob: w taki sposób, że Safari ustawiło “dziwny” origin: ://,
- Stamtąd można było dokonać przekierowania do
blob://skype.com w taki sposób, że nadal był ustawiony origin ://,
- Wykonując kolejną serię przekierowań, udało się zmusić Safari, by adresem URL obecnej strony było
blob://skype.com, Safari myślało, że jest na stronie z HTTPS (bo tylko wtedy daje dostęp do kamerki), a origin był ustawiony na null.
- W takiej sytuacji, jeśli użytkownik dał wcześniej uprawnienia do kamerki dla
https://skype.com, to Safari uznało, że blob://skype.com też je powinno mieć i dało bez dodatkowego pytania.
Ostateczny efekt ataku można zobaczyć tutaj.
— mb