Niedawno na LinkedIn pojawił się wpis Andrewa Morrisa, w którym autor przedstawia szczegóły analizy aplikacji AdGuard dla systemu iOS. Jak podaje, zainteresował go proces blokowania reklam przez AdGuard, który funkcjonuje pomimo braku zezwolenia na podmianę serwera DNS w systemie. Istotne informacje sprowadzają się w zasadzie do faktu odkrycia, iż działanie blokowania reklam opiera się na wstrzykiwaniu kodu JavaScript na każdej odwiedzanej stronie internetowej.
Ten sposób nie jest zaskakujący, a tym bardziej, iż jego efekty okazują się bardzo dobre – w poście znajduje się wzmianka, iż „reklamy” są ukrywane nie pozostawiając żadnych elementów. Natomiast autor wpisu ostrzega, iż AdGuard co prawda jest zarejestrowany na Cyprze, ale programiści to głównie Rosjanie. Przejrzał też historię commitów w repozytorium aplikacji i okazało się, iż ich znaczna część ma podaną strefę czasową UTC+3, która obowiązuje m.in. w Moskwie.
Część commitów z repozytorium aplikacji AdGuard – git log
Kod JavaScript wstrzykiwany do kodu witryn internetowych jest pobierany co 6 godzin z zewnętrznego zasobu. To można uzasadnić regularnym dostosowywaniem do skryptów odpowiedzialnych za ładowanie i wyświetlanie reklam. Aby prześledzić ścieżkę prowadzącą do pobrania zawartości skryptu, należy wykonać dogłębną analizę aplikacji (reverse engineering), ale być może częściowa odpowiedź znajdzie się też w kodzie źródłowym aplikacji. Natomiast w celu poznania wyłącznie domeny, z której skrypt może być pobierany, wystarczy już tylko uruchomienie własnego serwera DNS (urządzenie mobilne musi z niego korzystać).
Na Reddit powstał cały wątek poświęcony temu wpisowi na LinkedIn. Zarówno w nim, jak i pod postem na LinkedIn, znajduje się także krótkie wyjaśnienie od CTO zespołu AdGuard, z którym warto się zapoznać.
Blokowanie reklam z użyciem skryptu jest skuteczniejsze od ochrony bazującej wyłącznie na filtrowaniu zapytań DNS (w tym miejscu można polecić nasz artykuł o Technitium DNS). DNS operuje wyłącznie na poziomie domen, a skrypty mogą serwować reklamy także z adekwatnych domen, niepowiązanych z reklamami – raczej nikt nie zablokuje całkowicie serwisów takich jak youtube.com. Dlatego też precyzyjne blokowanie wykonywania skryptów realizowane przez wtyczki typu uBlock Origin czy właśnie aplikacje podobne do AdGuard jest odpowiednim dodatkiem do ochrony DNS.
Niestety autor postu na LinkedIn uległ popularnemu od kilku lat poglądowi, iż rosyjskie pochodzenie twórców jakiegokolwiek systemu oznacza zagrożenie. Kod skryptu nie jest jawny, ale prawdopodobnie wynika to z „zabezpieczenia” stosowanych rozwiązań blokujących przed próbami ich obejścia przez dostawców reklam. Takie myślenie jest zaprzeczeniem poprawnego rozumowania. Co jeszcze gorsze, w komentarzach na LinkedIn większość osób przyznaje mu rację bez weryfikowania faktów czy skorzystania z wiedzy technicznej.















