Jest Better Gmail, jest Better Google Reader... Ja obracałem chwilę w myślach pomysł zrobienia rozszerzenia Firefoksa poprawiającego jeden z polskich wirtualnych banków. Pomysł zarzuciłem, po części z braku czasu, a przede wszystkim spodziewając się u wszystkich sporego oporu przed instalowaniem takiego narzędzia.
To za duże ryzyko!
Tak, to prawda. To byłoby ryzyko. Dodatek miałby manipulować stronami o prawdziwych pieniądzach? A co, jeśli kradłby informacje, numery kont albo hasła. Albo manipulował danymi przelewów?
Takie samo ryzyko ponosisz instalując SmTuning. Albo wspominane Better Gmail.
Jak działają dodatki
Każdy dodatek do Firefoksa, jakkolwiek się nazywa, może manipulować dowolną ładowaną do przeglądarki stroną. Kluczowy fragment SmTuning wygląda z grubsza tak:
var href = e.originalTarget.location.href;
if (href.match( /^http:\/\/(www\.)?schemingmind\.com/)) {
// .... tu różne manipulacje
}
Powyższe jest elementem funkcji dopiętej do zdarzenia załadowano nową stronę (typowo używanego przez rozszerzenia korygujące treść) i jest wołane, gdy Firefox załaduje cokolwiek. Jak widać sprawdzam, czy działam na SchemingMind - ale przy minimum złej woli mógłbym wrzucić kod robiący coś stronom inteligo, mbanku, Lukas-banku czy WBK. Albo łapiący ciągi czterech czterocyfrowych liczb.
To oczywiście nie jest jedyny schemat działania dodatków. Można robić wiele różnych rzeczy - uzupełniać i podmieniać menu (także warunkowo), manipulować preferencjami, tworzyć i wyświetlać nowe okna, budować całe nowe aplikacje, wpinać się w obsługę całego mnóstwa zdarzeń.
Nie ma żadnego mechanizmu wymuszającego z zewnątrz na dodatku, by ograniczył się do konkretnej strony lub serwisu.
Cóż, moje rozszerzenie jest niszowe, ileż osób gra w szachy korespondencyjne. Większe perspektywy miałby autor czegoś bardziej nośnego.
Najprostszym dowodem, że dodatek może się dobierać do każdej strony jest oczywiście AdBlock. Zdejmuje reklamy zewsząd, nieprawdaż?
Dodam jeszcze, że był przypadek, gdy czarny charakter zdołał opublikować swoją (kradnącą hasła) wersję pewnego użytecznego dodatku. Było to jeszcze w czasach Firefoksa 2. Obecnie jest to trudniejsze (konieczność podpisywania dodatków prywatnym kluczem albo publikowania ich z serwisów SSL) ale np. włamanie na serwer autora zupełnie wystarczy (a automatyczne update rozpropaguje nową wersję u wszystkich dotychczasowych użytkowników).
To nie musi być działanie celowe
We wczesnej wersji SmTuning zrobiłem literówkę. Dodatkowe menu
malowane przez mój dodatek pojawiało się ... na wszystkich serwisach
o nazwie zaczynającej się od www
. Oczywiście zauważyłem to
jeszcze przed opublikowaniem - i poprawiłem.
Ale ... bardziej subtelnego błędu mógłbym nie zauważyć.
Dużo dodatków wykrywa interesujące treści przy pomocy rozbudowanych wyrażeń regularnych. To świetne narzędzie, ale pisząc regexpy nie jest trudno o pomyłki, a przeglądając kod niełatwo je zauważyć.
No i wyobraźmy sobie, że jakaś wtyczka poprawiająca błędy czy autowypełniająca formularze skoryguje niechcący dane przelewu, sieciowy notes zamieści na publicznej stronie salda rachunków, socjalizujący dodatek pozwoli śledzić moje przelewy na twitterze lub blipie, wspomagacz bloggera opublikuje moje dane na blogu, translator wrzuci listę kart na serwis tłumaczący, konwerter PDFów wgra gdzieś historię...
Bez żadnej złej woli, w efekcie subtelnej pomyłki.
Tak, jestem paranoikiem.
Wydajność
Nawet całkowicie uczciwe i pozbawione błędów dodatki kosztują. Bardzo wiele wtyczek działa, choćby przez moment, po załadowaniu każdej strony, przy otwieraniu menu, przy tworzeniu okna, przy ...
Kosztuje to czas, kosztuje też pamięć. Kosztuje także, gdy dodatek nigdy się nie uaktywnia (bo np. nie odwiedzamy serwisu, którego usprawnianiu służy).
Higiena
Prosta higieniczna zasada: szczególnie ważne serwisy - banki, fundusze inwestycyjne, biura maklerskie - warto odwiedzać przy pomocy innej przeglądarki. Nawet Internet Explorera - byle służył wyłącznie do tego. Przy ograniczeniu się do Firefoksa dobrym rozwiązaniem może być Prism.
To patent nie tylko na dodatki. Zabezpieczamy się przed całą rodziną ataków cross-site, od wykradania cookie po wklejanie iframe.
Główna idea ataków cross-site: jakaś strona (często z mało ubranymi panienkami, żartami, kradzionymi programami, czy tekstami o popularnych aktorach - ale mogą być i poważne artykuły) próbuje - w niewidoczny sposób - manipulować jakimś ważnym serwisem. Może to być kod javascriptowy, może sprytnie wstawiona ramka, może specyficzny link. Jeśli akurat jesteśmy zalogowani, funkcja może się wykonać korzystając z tej autoryzacji. Tak działały np. różne znane ataki dodające do znajomych.
Oczywiście warto też przepatrzeć listę poinstalowanych dodatków i zastanowić się, które z nich naprawdę są potrzebne.
Podsumowanie
Tradycyjne podejście do bezpieczeństwa systemów i aplikacji koncentrowało się na bezpośrednich atakach. Zamknąć wszystkie niepotrzebne porty. Sprawdzić wpływające dane. Uniknąć ataków na przepełnienie buforów, wszelkiej maści injection, wykradania poufnych plików itd itp. Zabezpieczyć serwer.
To daje się robić całkiem nieźle. Ale ... najsłabszym punktem aplikacji internetowych nie jest serwer, tylko klient. Większość złych rzeczy dzieje się na naszych domowych pecetach, w przeglądarce albo obok niej. Ani wirtualny bank, ani Google, ani nikt inny nie może się przed tym do końca zabezpieczyć.
Bo to my kontrolujemy, co instalujemy, co odwiedzamy, ogólnie - jakiemu oprogramowaniu pozwalamy działać.
Dodatki do przeglądarki to tylko jeden z bardzo wielu elementów układanki. Podsłuchiwać, modyfikować albo fałszować dane mogą także różne inne aplikacje działające po stronie desktopu. Między palcami stukającymi w klawiaturę, a hasłem zapakowanym w żądanie SSL, wykonuje się dużo różnorakiego kodu.
Postraszyłem?