Jeden z Wykopowiczów odkrył prostą podatność, z której istnienia nie zdaje sobie sprawy część osób zajmujących się zawodowo tworzeniem witryn WWW czy ich bezpieczeństwem. Błąd nie jest krytyczny – ale warto o nim pamiętać.
Wykopowicz noisy odkrył w serwisie Wykop.pl, zgłosił i opisał rzadko omawianą podatność umożliwiającą przeprowadzenie ataków phishingowych z wyższym niż zazwyczaj prawdopodobieństwem sukcesu. Jako że noisy zdecydował się poinformować świat o tej podatności w formie wideo, warto także problem opisać w postaci tekstowej.
Na początek wideo
Jeśli macie kilka minut i lubicie patrzeć i słuchać, to zobaczcie film nagrany przez autora odkrycia.
Jeśli tak jak my wolicie słowo pisane, to czytajcie poniżej.
Błąd (czy też podatność?) opiera się na możliwości dodania przez użytkowników własnego linka, w który klikać będą inne osoby. Nie każdy serwis może być podatny, lecz jeśli osoby trzecie mogą dodać linki do swoich stron, to ryzyko istnieje. W przypadku Wykop.pl problem faktycznie występował i miał spore znaczenie – w końcu o dodawanie linków i klikanie w nie na Wykopie chodzi. Co zatem musiało być w linku i do czego prowadziło?
Standardowo linki prowadzące poza główną domenę na Wykopie miały atrybut
target='_blank'
aby kliknięcie w nie powodowało załadowanie zlinkowanej treści w nowym oknie. Po co? Głównie po to, aby użytkownik pozostał na stronie Wykopu (w jednej zakładce), a zewnętrzna treść pokazała mu się w nowej zakładce (którą po lekturze zamknie i wróci na Wykop, który ciągle ma otwarty w poprzedniej zakładce). Ma to sens biznesowy.
Problem zaczyna się, gdy strona, na którą trafił, jest złośliwa i zawiera kod, który podmienia poprzednią zakładkę. Taki kod jest trywialny:
window.opener.location = 'https://wykkop.pl/login';
Wykonanie tego kodu w nowej zakładce powoduje, że zmienia się adres strony poprzedniej – czyli w tym wypadku po zamknięciu strony nowej internauta trafia z powrotem na Wykop, który już nie jest Wykopem, tylko stroną atakującego. Strona taka może być odpowiednio spreparowana – noisy pokazał przykład strony logowania Wykopu, która zawiera informację o aktualizacji regulaminu. Sprytne, aktualizacja może być powodem wymuszenia ponownego logowania. Pewnie część użytkowników nie zwróci uwagi na to, że adres strony uległ zmianie i trzeba się ponownie zalogować. W ten sposób zapewne można ukraść niejedno hasło.
Jak problem załagodzić
Aby utrudnić przeprowadzenie analogicznego ataku, wystarczy do linków wychodzących dodać odpowiedni parametr:
rel="noopener noreferrer"
Noisy zachował się odpowiedzialnie – zanim opublikował szczegóły swojego odkrycia, powiadomił Wykop i dał administracji serwisu czas na usunięcie problemu. Wykop wprowadził rekomendowane zmiany, dzięki czemu ten scenariusz ataku nie jest już możliwy do przeprowadzenia w opisywany sposób. Co ciekawe, już ponad 2 lata temu ten scenariusz ataku opisywał na Wykopie inny użytkownik – ale widocznie go nie testował.
Google nie uważa takiego ataku (zwanego fachowo tabnabbing) za godny wypłaty nagrody, ponieważ wynika on wyłącznie ze sposobu, w jaki zaprojektowano działanie przeglądarek i nie odkryto na razie rozwiązania, które pozwoli na jego globalne wyeliminowanie.
Pozostaje Wam zatem zachowywać czujność w sytuacji, gdy zalogowana sesja znienacka się wylogowywuje. Przed każdym niespodziewanym logowaniem warto sprawdzić adres strony. To trudne. Na co dzień nie mamy na to czasu – i na to liczą przestępcy.
Jeśli interesują Was podobne sztuczki, to zapraszamy na szkolenie z bezpieczeństwa aplikacji WWW, które prowadzimy już za 2 tygodnie w Warszawie – zostało jeszcze kilka miejsc. Na hasło „wykop.pl” 10% zniżki ;)
Komentarze
Nic nowego, można się rozejść.
Usuń konto!
#pdk
A wystarczy nie ustawiać idiotycznego parametru target, który tylko wkurza. Jak chcę otworzyć stronę w nowej zakładce, to jest na to kilka sposobów.
Na przykład?
Najprościej klikać ŚPM na link. Lub PPM i w menu konteksyowym wybrać „Otwórz link w nowej zakładce”
Zamiast PPM i menu polecam CTRL + LPM ;)
Środkowy klawisz myszki (rolka)
Tylko ze _blanka nikt nie ustawia dla osób które sprawnie korzystają z internetu to jest konfiguracja dla osób, które nie potrafią otwierać w nowej karcie, chodzi o to, żeby osoba po przeczytaniu artykułu jak go zamknie nadal będzie korzystać z serwisu, pozdrawiam Michaił Białkov
Czy dodanie nagłówka w nginxie może zminimalizować to zjawisko?
Referrer-Policy „no-referrer”;
Nie, ponieważ referrer odpowiada tylko za nagłówek referrer, czyli nie przekazywanie adresu z którego przeszlismy. Noopener czyści jsowy obiekt window.opener.
Ps. Kto tworząc profesjonalną stronę zapomina dodawac noopenera do zewnętrznych linków? Znając takich mistrzów, pewnie i contet policy nie mają.
„wykkop.pl” to poprawna domena ?
Sposób od dawna stosowany przez guanoreklamy
Podatność ta jak i metody jej zapobiegania w środowisku developerskim jest znana od kilku lat.
Proszę zatem nie mówić o „odkryciu”, co najwyżej o odświeżeniu przez noisyego, bo ujmuje to tym którzy to faktycznie odkryli i którzy do dobrych standardów programowania stosują się od dawna
Poniższy artykuł pochodzi z 2016 roku i traktuje o tym właśnie.
https://www.jitbit.com/alexblog/256-targetblank—the-most-underestimated-vulnerability-ever/
Props dla Noisiego ;)
Ciekawy blad znaleziony ;D
ALL SAFE _/
i like this website thanks