Zapewne większość, albo chociaż część czyta ten artykuł przez Google Chrome. Ucieszycie się, gdy powiemy Wam, że dziura w Chrome była… spora!?

Otóż, być może, z tego właśnie powodu, ucieszycie się także, że to w efekcie działalności Macieja Pulikowskiego, przeglądarka ta nie cieszy się już 6 błędami.  Co ciekawe, część z nich mogła zapoczątkować infekcji komputera złośliwym oprogramowaniem. 

Z kolei niektóre firmy za znajdowane w ich kodzie błędy pozywają badaczy bezpieczeństwa. Inne na przykład, zamiast karać, wolą nagradzać. Oczywiście – badaczy. Maciek otrzymał 5 000 dolarów. Jednak – jakie błędy namierzył? 

Po pierwsze: odkryte przez niego błędy dotyczyły przede wszystkim mechanizmu pobierania plików przez użytkowników. Te znajdowały się z kolei w File System Access API. W efekcie, można było ukryć prawdziwe rozszerzenie pliku.

W efekcie – plik .lnk można wykorzystać na przykład do wywołaniu skryptu Power Shella. Co więcej, takie rozszerzenie ma jeszcze jedną zaletę –  Windows domyślnie je ukrywa. To z kolei oznacza, że zwiększa się szansa na otworzenie pliku przez ofiarę i może ją zwyczajnie narazić na atak…

Rozszerzenie pliku – jak je ukryć? Dziura w Chrome wie!

Tymczasem, dziura w Chromie sprzyjała hakerom – to oczywiste. Jednak pojawia się w międzyczasie pytanie – jak ukryć prawdziwe rozszerzenie? 

File System Access API umożliwia aplikacjom webowym wejście w interakcję z plikami na urządzeniu użytkownika. Ten z kolei musi zaakceptować okienko, by nadać uprawnienia do folderu w systemie. W efekcie aplikacja ma możliwość czytania, modyfikowania, a nawet – tworzenia plików.

dziury w chrome

Tymczasem, jak mówi sam Maciek – błędy pochodziły z metody showSaveFilePicker (). Ta wyświetla użytkownikowi okno systemowe zapisu pliku na dysku. Metoda ta okazuje się wyjątkiem w API, ponieważ nie wymaga akceptacji dodatkowych uprawnień w przeglądarce.

Co ciekawe, programista może w międzyczasie wpisać do pola Save as Type to, co chce. Jednak Chrome dla bezpieczeństwa dopisuje prawdziwe rozszerzenie pliku, na przykład jpg. Okazuje się, że nie zawsze – przeglądarkę można oszukać prostymi sposobami.

Po pierwsze – dodać do pola Save as type znak gwiazdki, który usuwa rozszerzenie dodane przez Chrome. Po drugie: spacje i jeszcze raz spacje. To z kolei umożliwia ukrycie rozszerzenia, które dodawał Chrome.

W efekcie tych trików, atakujący mógł sprawić, by w polu Save as type wyświetlany tekst nie wskazywał na prawdziwy typ pobieranego pliku. Na przykład Save as type: JPEG Image (*.jpg). Z kolei pobrany plik mógłby być wirusem z zupełnie innym typem pliku, na przykład nazwa_użytkownika.exe.

Dziura w Chrome – jak namierzono błąd?

Wystarczyło, jak się okazuje, spojrzeć na kod źródłowy silnika chromium. Ten domyślnie blokuje pliki o rozszerzeniach .lnk czy .local, zamieniając je na przykład na .download. Z kolei samo File System Access API nie blokowało rozszerzeń.

Co ciekawe, cały ten błąd z manipulacją został wyceniony jako HIGH na Chrome Bug Bounty. Wszystkie błędy poprawiono w wersji 88.0.4324.96.

Dodatkowo, Maciek mówi jasno – sam możesz znaleźć taki błąd! Wystarczy mieć… szeroko otwarte oczy.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *