firefox3

Bartlomiej B. peelde w nerdshack.com
Pią, 28 Mar 2008, 23:56:15 CET


On Fri, Mar 28, 2008 at 14:14:28 +0100, Arkadiusz Miskiewicz wrote:
(...)
> Pierwsze pytanie brzmi - czy te opcje całkowicie wyrzucają z programu wsparcie 
> do safe-browsing/url-classifier czy tylko je wyłączają by default (a user 
> może nadal włączyć) ?
> 
> Jeśli to drugie to ok. Jeśli to pierwsze to zła metoda. Gdzieś tam jest/może 
> być defaultowy konfig w którym to najwyżej wyłącz, a kto będzie chciał to 
> sobie włączy.
> 

Dodanie --disable-.. na etapie kompilacji wywala to całkowicie (tzn.
kod nie jest w ogóle kompilowany, więc i nie da się tego włączyć w
run-timie). Nie do końca to jedak dobrze zrobili i mimo tego, że ta
funkcjonalność nie będzie wtedy działać, to w GUI opcje i tak zostają
(ale nawet jak użytkownik to włączy w GUI, to i tak nie zadziała, bo
nie jest wkompilowane). Mam nadzieję, że nie zamieszałem za bardzo :).

Oczywiście, można to też wyłączyć w opcjach, tak, że user może to
później włączyć w GUI, jeśli koniecznie chce.
Najlepiej zapatchować
mozilla/browser/app/profile/firefox.js
i zmienić
pref("browser.safebrowsing.enabled", true);
na
pref("browser.safebrowsing.enabled", false);
(
UWAGA: w FF3 będzie też należało _dodatkowo_ zmienić
pref("browser.safebrowsing.malware.enabled", true);
na
pref("browser.safebrowsing.malware.enabled", false);
)

tyle tylko, że głowy sobie nie dam uciąć, że to wyłącza wszystko
całkowicie (z tego, co przeglądałem kod wynika, że raczej tak,
ale...), więc ja bym osobiście preferował nie kompilowanie tego w
ogóle.

Widzisz, chodzi o to, że jeśli komuś/czemuś się uda zmienić
konfigurację po stronie klienta (tzn. zmienić kilka preferencji), to
przeglądarka zamienia się w totalny spyware, który wysyła na bieżąco
odwiedzane adresy (FF2).
Jeśli wpiszesz sobie w about:config filtr "browser.safebrowsing", to
zobaczysz tam m.in. opcje z wartościami będącymi URLami w domenie
sb.google.com. Można je zmienić na inne (np. Twój serwer) i (po
włączeniu stosownej opcji) przeglądarka będzie wysyłać na jeden z tych
adresów (lookupURL o ile dobrze pamiętam) adresy odwiedzanych stron,
oficjalnie w celu sprawdzenia, czy odwiedzona strona jest "podejrzana
o phishing" czy nie. Dowcip polega oczywiście na tym, że Google może w
każdej chwili zaprzestać sprawdzania, za to jedno, co można z całą
pewnością powiedzieć, to to, że mogą zbierać adresy odwiedzanych stron
i powiązać je z pojedynczym użytkownikiem (dzięki temu, że jest
wysyłane ciasteczko). Ten tryb nie jest domyślnie włączony w FF2, ale
sama jego obecność może powodować jednak pewien dyskomfort ;). (W FF3
zdecydowali się usunąć ten tryb, bo za mało osób go włączało. Jednakże
domyślnie włączony tryb antyphishing/antymalware (bo dodali blacklistę
"antymalware" jeszcze w FF3), który będzie w FF3, jest potencjalnie dużo
bardziej ingerujący w prywatność niż ten domyślnie włączony w FF2. Ale
to tak na marginesie.)

Stworzyłem projekt - demo, które pokazuje tą
funkcjonalność (FF2):
http://bb.homelinux.org/firefox/sb/
Po kliknięciu na linku podpisanym jako "THIS LINK" (polska wersja tej
strony w drodze...) możesz ściągnąć odpowiednio przygotowany plik
user.js (user.js to opcjonalny plik konfiguracyjny, który domyślnie
nie istnieje; po wrzuceniu go do katalogu profilu można zmienić
konfigurację przeglądarki). Po skopiowaniu go do katalogu profilu, np.
tak:
cp user.js .mozilla/firefox/*.default/
i zrestartowaniu przeglądarki, zostaną zmienione opcje związane z tym
całym antyphishingiem, tzn.: zostaje włączony tryb "zaawansowanego
antyphishingu" (tego, który na bieżąco wysyła adresy) i zostaje
zmieniona konfiguracja URLi, na które są wysyłane adresy "w celu sprawdzenia" (i
kilka innych prefów, potrzebnych do zademonstrowania działania tego
całego ustrojstwa). Krótko mówiąc -- zamienia to "dostawcę usługi
antyphishing" z Google na mój serwer (i włącza "zaawansowany" (w
kodzie nazywany "enhanced") tryb antyphishing). (Oczywiście, to samo
można zmienić "ręcznie" via about:config. Myk z user.js jest po prostu
wygodniejszy.)
Plik z logami (tzn. odwiedzonymi stronami) jest publicznie dostępny
(bo to w końcu tylko proof-of-concept), można kliknąć na link "FILE WITH LOGS",
który prowadzi do:
http://bb.homelinux.org/firefox/sb/urls.log
Jak widać, nikt się jak na razie nie odważył przeprowadzić testu ;), requesty z
127.0.0.1 są ode mnie. Po testach można to wyłączyć, chociaż nie jest
to takie proste (bo zmiana preferencji zmienionych via user.js jest
automatycznie kopiowana przez przeglądarkę w inne miejsce i samo wykasowanie
user.js z katalogu profilu nie wystarcza). Na stronie są szczegółowe
instrukcje (na razie tylko po ang.). Jeśli ktoś chce, to można
stworzyć osobnego użytkownika w systemie tylko na potrzeby testu i
później go skasować.

Odnośnie kodu, gdyby ktoś chciał zrobić sobie audyt tego całego
ustrojstwa (trzeba dobrze znać JS, C++ i różne myki, jakie są w kodzie
produktów Mozilli... np. kod JS można wywoływać z kodu C++ i vice
versa): można zacząć w okolicach:
1) browser/base/content/browser.xul (sb-loader.js)
2) (dodatkowo w FF3) docshell/base/nsDocShell.cpp  (jak widać w
   kolejnej wersji zmiany są "głębiej", albowiem dostęp do uznanej przez
   Google za "niedobrą" strony jest całkowicie blokowany;
   nsDocShell.cpp to właściwie "jądro" przeglądarki, bo tam są metody
   uruchamiane przy ładowaniu każdej strony, o ile dobrze to rozumiem;
   kod w tym pliku związany z antyphishingiem/antymalware nie jest już
   ifdefowany, więc nie zdziwię się, jeśli w przyszłości wywalą całkiem
   opcje w configure wyłączające kompilowanie tego ustrojstwa).

Analiza szybko zaprowadzi do plików w katalogach
toolkit/components/url-classifier/
browser/components/safebrowsing/
gdzie się znajduje właściwa implementacja tego całego ustrojstwa.

(Online źródła można poprzeglądać np. na http://mxr.mozilla.org).

Aha, prawdopodobnie dokładnie to samo jest w Thunderbirdzie (albowiem
Thunderbird dzieli bardzo dużą część kodu z Firefoksem) i z tego co
widziałem na jakichś screenshotach, to w GUI w opcjach TB też są
opcje związane z tym całym antyphishingiem. Nie robiłem jednak
głębszego dochodzenia, jeśli chodzi o TB. (Nawiasem mówiąc, nie używam
ani FF, ani TB, ale FF jest jednak popularnym kawałkiem softu i
byłem/jestem zainteresowany sprawdzeniem szczegółów...)

b.

-- 
http://bb.homelinux.org



Więcej informacji o liście dyskusyjnej pld-users-pl