Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Od XSS-a do zdalnego wykonania kodu (RCE), czyli krytyczna luka w przeglądarce Opera
Opera to darmowa przeglądarka internetowa, tworzona i rozwijana przez należącą do chińskiego konsorcjum norweską firmę Opera Software ASA. Przeglądarka ta, za sprawą szeroko zakrojonej kampanii reklamowej w mediach społecznościowych, stała się szczególnie popularna w wersji GX, która – w przeciwieństwie do „zwykłej” Opery – zawiera wiele udogodnień powstałych z myślą o graczach komputerowych. Tymczasem badacz bezpieczeństwa Renwa znalazł w funkcji „Mój flow” krytyczną podatność, umożliwiającą zdalne wykonanie kodu na urządzeniu ofiary:
Wyżej wspomniana funkcja umożliwia użytkownikom Opery Touch (wersja przeznaczona dla osób korzystających ze smartfonów) i Opery GX na przesyłanie linków, filmów z YouTube, zdjęć i osobistych notatek między komputerem oraz smartfonem. Renwie udało się jednak znaleźć podatność typu cross-site scripting (XSS) w funkcji „Mój flow”:
Luka znajdowała się w kodzie odpowiedzialnym za funkcjonalność „przeciągnij i upuść” (drag & drop):
Problem z powyższym kodem polega na tym, że wartość dataTransfer może być przez nas kontrolowana, zaś innerHTML umożliwia wykonanie potencjalnie złośliwego kodu JavaScript po stronie klienta.
Oto jak prezentuje się minimalistyczny Proof of Concept:
W procesie analizy kodu funkcji „Mój flow” badacz zauważył odniesienia do ukrytej wtyczki Opera Touch Background, która, jak się okazało, miała dostęp do ciekawych natywnych funkcji, takich jak SEND_FILE i OPEN_FILE. Pierwsza z nich umożliwiała Renwie zapisywanie plików na komputerze użytkownika w “Downloads”/”My Flow”. Z kolei funkcja OPEN_FILE, choć stworzona z myślą o otwieraniu plików graficznych, ułatwiała otwieranie dowolnych plików, w tym tych niebezpiecznych, np .bat czy .exe.
Tak prezentuje się to z poziomu kodu:
Koniec końców, badacz wykorzystał wcześniej udokumentowanego XSS-a oraz funkcje SEND_FILE i OPEN_FILE w ukrytej wtyczce Opera Touch Background do zdalnego zapisania i uruchomienia dowolnego pliku na urządzeniu ofiary, tym samym osiągając zdalne wykonanie kodu. Po około 3 tygodniach podatność została załatana, zaś Renwa za swoje znalezisko otrzymał 8 tysięcy dolarów.
~ Jakub Bielaszewski
Mała poprawka: podatność została załatana w ciągu doby, to bounty wypłacono po 3 tygodniach.
skad taka informacja? strona opery podaje ze podatnosc zostala zalatan „within a few days”
I tyle są właśnie warte sandboxy w przeglądarkach internetowych.
Warto zawsze dodatkowo izolować przeglądarkę internetową, klienta poczty i inne ważne aplikacje, które korzystają z usług sieciowych. Pod Linux np. taki „firejail” dużo daje, szczególnie przy włączonym AppArmor lub aplikacja zainstalowana z AppImage/Snap/Flatpak, gdzie naturalnie ma narzucone większe restrykcje (dużą rolę odgrywa tu systemd, który potrafi sam w sobie stosować różne ograniczenia – https://www.redhat.com/sysadmin/mastering-systemd), niż aplikacja zainstalowana w natywnym dla danej dystrybucji Linux formacie paczek.
Pod Windows można np. zastosować Sandboxie Plus.
To wyglada jak backdoor