Spyware in Opera
v 2.18 24-FEB-05
Вместо введения.
Получив многочисленные отзывы о статье пришлось сильно ее переработать.
Спасибо за конструктивную критику, замечания и наставления :) Итак..
Фактически Spyware в Опере действительно есть, т.к. налицо факт, что
большинство русскоязычных пользователей не подозревают о том, что при
определенных настройках незарегистрированной Оперы информация
практически о любом из запросе в сеть передается третим лицам.
Но все же, "де юро" это не так. Сама Опера на чистом английском
языке, как минимум в двух местах об этом предупреждает - в лицензии и
в соответствующей части Options. Сам механизм, по которому ссылки и
ваш IP передаются в Google является официально используемой самой
Google (и более чем уверен надежно запатентованой) технологией, суть
которой заключается в том, что на основании контента страничек по
которым ходит пользователь и его же IP-адреса, по которому
приблизительно можно вычислить в какой стране он находится, на
основании этих данных Google выбирает ему баннер с более подходящей
для этого пользователя тематикой и языком. Здесь можно почитать об
этих технологиях:
Google AdSense: http://www.google.com/adsense/
Google AdWords: http://adwords.google.com/
Сама же Opera Software на своем сайте пишет по этому поводу вот что:
Opera Browser Google Ads: http://www.opera.com/adsupport/
Помимо всего прочего там написано, что информация отсылается только в
режиме показа баннеров с google. Если в опциях выбрать "Show generic
selection of graphical ads" ничего отсылаться не будет. Так же
подробно описаны web-запросы, при которых вообще ни при каких
условиях ничего не будет отсылаться:
-- Логины и пароли в виде http://user:pass@www.example.com
-- URLы с CGI параметрами (http://www.example.com?formsdata)
-- Данные форм переданные POST запросом
-- Не HTTP протоколы: HTTPS, FTP, NNTP, и т.д.
-- Нереальные IP адресв (RFC 1918: 10.*, 192.168.*, 172.16-172.31.*)
-- в полноэкранном режиме, при котором баннеры вообще не показываются.
Ну и на сколько я нарыл в интернете, AdWare появилось в Опере начиная
еще с 5-х версий и живет там до сих пор.
Как вообще на это наткнулся:
выкладываю файл к себе на www (apache), для внутреннего использования:
[18:40:28] ~$ mv xxx_-_xxxxx.mp3 /var/www/xxx_-_xxxxx.mp3
далее тестовый запрос из моей Оперы к своему же серверу
(ОС - Linux Debian unstable, xx.xx.70.74 - мой IP, xxx_-_xxxxx.mp3
- имя выложенного файла, xxxxxxxxx.net.ua - имя моего сервера):
xx.xx.70.74 - - [08/Oct/2004:18:41:34 +0300] "GET /xxx_-_xxxxx.mp3
HTTP/1.1" 200 8850333 "-" "Mozilla/4.0 (compatible; MSIE 6.0; X11;
Linux i686) Opera 7.54 [en]"
и в ту же секунду ко мне вдруг обращается робот google:
66.249.66.6 - - [08/Oct/2004:18:41:35 +0300] "GET /robots.txt HTTP/
1.1" 404 289 "-" "Mediapartners-Google/2.1"
и через 3 секунды начинает на максимальной скорости качать с меня
выложеную mp3-шку (замечу, что во время следующих экспериментов
выложеный файл он начинал качать сразу, robots.txt ему в принципе
для этого не нужен, да он у меня к тому же его и нет, 404 Not Found)
66.249.66.6 - - [08/Oct/2004:18:44:59 +0300] "GET /xxx_-_xxxxx.mp3
HTTP/1.1" 200 8850333 "-" "Mediapartners-Google/2.1"
$trafshow -np src xx.xx.70.74
From Address To Address Prot Bytes CPS
==================================================================================
xx.xx.70.74..80 66.249.66.6..35068 tcp 3833760 xxxxx
$host 66.249.66.6
Name: crawl-66-249-66-6.googlebot.com
Address: 66.249.66.6
$whois 66.249.66.6
OrgName: Google Inc.
OrgID: GOGL
Address: 2400 E. Bayshore Parkway
City: Mountain View
StateProv: CA
PostalCode: 94043
Country: US
NetRange: 66.249.64.0 - 66.249.79.255
CIDR: 66.249.64.0/20
NetName: GOOGLE
NetHandle: NET-66-249-64-0-1
Parent: NET-66-0-0-0-0
NetType: Direct Allocation
NameServer: NS1.GOOGLE.COM
NameServer: NS2.GOOGLE.COM
Comment:
RegDate: 2004-03-05
Updated: 2004-03-05
OrgTechHandle: ZG39-ARIN
OrgTechName: Google Inc.
OrgTechPhone: +1-650-318-0200
OrgTechEmail: arin-contact@google.com
Раньше я уже неоднократно в логах apache видел обращения googlebot
к любым ресурсам выложенным мною на моем сервере, даже на те,
ссылки на которые я никогда никому не давал.
Я уже стал подумывать, но то что у apache с google внегласное
соглашение, по которому первый крысит второму урлы на все что
творится у себя на сервере.. Этим мол и объясняется то, что гугл
на первом месте стоит по количеству охватываемого инета. :)
Хотя, конечно, если бы это было на самом деле, об этом всем было
бы давно всем извесно.. Не сходится.. Растроеный я тупо смотрел
на отрисованое перед моими гразами окно Оперы с перелевающимся
сверху баннером рекламы google, который мне в принципе
совершенно не мешает..
И тут меня осенило!! :) А уж не Опера ли это, со своим закрытым
коммерческим кодом?!
Эксперимент заключаюшийся в выкладывании новосозданного файла
подтвертдил, что я прав :-/
Вводим урл http://xxxxxxxxx.net.ua/test.mp3 в Оперу и..
$tcpdump -npXs 1500
обращение к моему DNS:
20:28:28.129920 IP xx.xx.70.74.32821 > 192.168.80.1.53: 3531+ A? pagead-us.googlesyndication.com. (49)
0x0000: 4500 004d 9bad 4000 4011 8474 c38a 464a E..M..@.@..t..FJ
0x0010: c0a8 5001 8035 0035 0039 c455 0dcb 0100 ..P..5.5.9.U....
0x0020: 0001 0000 0000 0000 0970 6167 6561 642d .........pagead-
0x0030: 7573 1167 6f6f 676c 6573 796e 6469 6361 us.googlesyndica
0x0040: 7469 6f6e 0363 6f6d 0000 0100 01 tion.com.....
20:28:28.282386 IP 192.168.80.1.53 > xx.xx.70.74.32821: 3531 7/4/4 CNAME pagead-us.google.com., A 216.239.57.99, A 216.239.57.104, A 64.233.167.99, A 64.233.167.104, A 216.239.41.99, A 216.239.41.104 (343)
0x0000: 4500 0173 5a09 0000 4011 04f3 c0a8 5001 E..sZ...@.....P.
0x0010: c38a 464a 0035 8035 015f 716b 0dcb 8180 ..FJ.5.5._qk....
0x0020: 0001 0007 0004 0004 0970 6167 6561 642d .........pagead-
0x0030: 7573 1167 6f6f 676c 6573 796e 6469 6361 us.googlesyndica
0x0040: 7469 6f6e 0363 6f6d 0000 0100 0109 7061 tion.com......pa
0x0050: 6765 6164 2d75 7311 676f 6f67 6c65 7379 gead-us.googlesy
0x0060: 6e64 6963 6174 696f 6e03 636f 6d00 0005 ndication.com...
0x0070: 0001 0000 0052 0013 0970 6167 6561 642d .....R...pagead-
0x0080: 7573 0667 6f6f 676c 65c0 4dc0 5c00 0100 us.google.M.\...
0x0090: 0100 0001 2c00 04d8 ef39 63c0 5c00 0100 ....,....9c.\...
0x00a0: 0100 0001 2c00 04d8 ef39 68c0 5c00 0100 ....,....9h.\...
0x00b0: 0100 0001 2c00 0440 e9a7 63c0 5c00 0100 ....,..@..c.\...
0x00c0: 0100 0001 2c00 0440 e9a7 68c0 5c00 0100 ....,..@..h.\...
0x00d0: 0100 0001 2c00 04d8 ef29 63c0 5c00 0100 ....,....)c.\...
0x00e0: 0100 0001 2c00 04d8 ef29 68c0 6600 0200 ....,....)h.f...
0x00f0: 0100 03e7 4900 0603 6e73 34c0 66c0 6600 ....I...ns4.f.f.
0x0100: 0200 0100 03e7 4900 0603 6e73 31c0 66c0 ......I...ns1.f.
0x0110: 6600 0200 0100 03e7 4900 0603 6e73 32c0 f.......I...ns2.
0x0120: 66c0 6600 0200 0100 03e7 4900 0603 6e73 f.f.......I...ns
0x0130: 33c0 66c0 db00 0100 0100 03e6 1c00 04d8 3.f.............
0x0140: ef26 0ac0 ed00 0100 0100 013c 5500 04d8 .&.........<U...
0x0150: ef20 0ac0 ff00 0100 0100 013c 5300 04d8 ...........<S...
0x0160: ef22 0ac1 1100 0100 0100 03e6 1c00 04d8 ."..............
0x0170: ef24 0a .$.
договоривается с сервером гугла:
20:28:28.283461 IP xx.xx.70.74.36734 > 216.239.57.99.80: S 1585349807:1585349807(0) win 5840 <mss 1460,sackOK,timestamp 101227590 0,nop,wscale 7>
0x0000: 4500 003c 18e9 4000 4006 05ac c38a 464a E..<..@.@.....FJ
0x0010: d8ef 3963 8f7e 0050 5e7e 84af 0000 0000 ..9c.~.P^~......
0x0020: a002 16d0 ffbd 0000 0204 05b4 0402 080a ................
0x0030: 0608 9c46 0000 0000 0103 0307 ...F........
20:28:28.502171 IP 216.239.57.99.80 > xx.xx.70.74.36734: S 4079804838:4079804838(0) ack 1585349808 win 8190 <mss 1460>
0x0000: 4500 002c ebe9 0000 e306 cfba d8ef 3963 E..,..........9c
0x0010: c38a 464a 0050 8f7e f32c e1a6 5e7e 84b0 ..FJ.P.~.,..^~..
0x0020: 6012 1ffe 1420 0000 0204 05b4 0000 `.............
20:28:28.502279 IP xx.xx.70.74.36734 > 216.239.57.99.80: . ack 1 win 5840
0x0000: 4500 0028 18ea 4000 4006 05bf c38a 464a E..(..@.@.....FJ
0x0010: d8ef 3963 8f7e 0050 5e7e 84b0 f32c e1a7 ..9c.~.P^~...,..
0x0020: 5010 16d0 350b 0000 P...5...
и шлет ему GET запрос в котором содержится вся инфа о ресурсе
который мною был запрошен и некоторых настроек броузера:
20:28:28.502845 IP xx.xx.70.74.36734 > 216.239.57.99.80: P 1:598(597) ack 1 win 5840
0x0000: 4500 027d 18eb 4000 4006 0369 c38a 464a E..}..@.@..i..FJ
0x0010: d8ef 3963 8f7e 0050 5e7e 84b0 f32c e1a7 ..9c.~.P^~...,..
0x0020: 5018 16d0 7bb9 0000 4745 5420 2f70 6167 P...{...GET./pag
0x0030: 6561 642f 6164 733f 6f65 3d75 7466 2d38 ead/ads?oe=utf-8
0x0040: 2663 6c69 656e 743d 6361 2d6f 7065 7261 &client=ca-opera
0x0050: 5f38 3030 7833 3026 666f 726d 6174 3d38 _800x30&format=8
0x0060: 3030 7833 3026 616c 7465 726e 6174 655f 00x30&alternate_
0x0070: 6164 5f75 726c 3d68 7474 7025 3341 2f2f ad_url=http%3A//
0x0080: 7465 7874 6164 732e 6f70 6572 612e 636f textads.opera.co
0x0090: 6d2f 6164 732f 2533 4666 6f72 6d61 7425 m/ads/%3Fformat%
0x00a0: 3344 3830 3078 3330 2663 6861 6e6e 656c 3D800x30&channel
0x00b0: 3d37 3534 2b65 6e26 7572 6c3d 6874 7470 =754+en&url=http
0x00c0: 2533 412f 2fxx xxxx xxxx xxxx xxxx 2e6e %3A//xxxxxxxxx.n
0x00d0: 6574 2e75 612f 7465 7374 2e6d 7033 2048 et.ua/test.mp3.H
0x00e0: 5454 502f 312e 310d 0a55 7365 722d 4167 TTP/1.1..User-Ag
0x00f0: 656e 743a 204d 6f7a 696c 6c61 2f34 2e30 ent:.Mozilla/4.0
0x0100: 2028 636f 6d70 6174 6962 6c65 3b20 4d53 .(compatible;.MS
0x0110: 4945 2036 2e30 3b20 5831 313b 204c 696e IE.6.0;.X11;.Lin
0x0120: 7578 2069 3638 3629 204f 7065 7261 2037 ux.i686).Opera.7
0x0130: 2e35 3420 205b 656e 5d0d 0a48 6f73 743a .54..[en]..Host:
0x0140: 2070 6167 6561 642d 7573 2e67 6f6f 676c .pagead-us.googl
0x0150: 6573 796e 6469 6361 7469 6f6e 2e63 6f6d esyndication.com
0x0160: 0d0a 4163 6365 7074 3a20 7465 7874 2f68 ..Accept:.text/h
0x0170: 746d 6c2c 2061 7070 6c69 6361 7469 6f6e tml,.application
0x0180: 2f78 6d6c 3b71 3d30 2e39 2c20 6170 706c /xml;q=0.9,.appl
0x0190: 6963 6174 696f 6e2f 7868 746d 6c2b 786d ication/xhtml+xm
0x01a0: 6c2c 2069 6d61 6765 2f70 6e67 2c20 696d l,.image/png,.im
0x01b0: 6167 652f 6a70 6567 2c20 696d 6167 652f age/jpeg,.image/
0x01c0: 6769 662c 2069 6d61 6765 2f78 2d78 6269 gif,.image/x-xbi
0x01d0: 746d 6170 2c20 2a2f 2a3b 713d 302e 310d tmap,.*/*;q=0.1.
0x01e0: 0a41 6363 6570 742d 4c61 6e67 7561 6765 .Accept-Language
0x01f0: 3a20 7275 0d0a 4163 6365 7074 2d43 6861 :.ru..Accept-Cha
0x0200: 7273 6574 3a20 6973 6f2d 3838 3539 2d31 rset:.iso-8859-1
0x0210: 2c20 7574 662d 382c 2075 7466 2d31 362c ,.utf-8,.utf-16,
0x0220: 202a 3b71 3d30 2e31 0d0a 4163 6365 7074 .*;q=0.1..Accept
0x0230: 2d45 6e63 6f64 696e 673a 2064 6566 6c61 -Encoding:.defla
0x0240: 7465 2c20 677a 6970 2c20 782d 677a 6970 te,.gzip,.x-gzip
0x0250: 2c20 6964 656e 7469 7479 2c20 2a3b 713d ,.identity,.*;q=
0x0260: 300d 0a43 6f6e 6e65 6374 696f 6e3a 204b 0..Connection:.K
0x0270: 6565 702d 416c 6976 650d 0a0d 0a eep-Alive....
и googlebot через несколько секунд потраченых на коммуникацюю
между сообой и pagead-us.googlesyndication.com и на установку
TCP/IP соедитения с моей машиной начинает качать с меня файл :(
Для тех кому трудно читать в столбик, такой вот запрос был послан
Оперой. Довольно занимательно:
GET./pagead/ads?oe=utf-8&client=ca-opera_800x30&format=8
00x30&alternate_ad_url=http%3A//textads.opera.com/ads/%3Fformat%
3D800x30&channel=754+en&url=http%3A//xxxxxxxxx.net.ua/test.mp3.H
TTP/1.1..User-Agent:.Mozilla/4.0.(compatible;.MSIE.6.0;.X11;.Lin
ux.i686).Opera.7.54..[en]..Host:.pagead-us.googlesyndication.com
..Accept:.text/html,.application/xml;q=0.9,.application/xhtml+xm
l,.image/png,.image/jpeg,.image/gif,.image/x-xbitmap,.*/*;q=0.1.
.Accept-Language:.ru..Accept-Charset:.iso-8859-1,.utf-8,.utf-16,
.*;q=0.1..Accept-Encoding:.deflate,.gzip,.x-gzip,.identity,.*;q=
0..Connection:.Keep-Alive.
(или вот такой, если во время эксперимента включить прокси:
GET.http://pagead-us.googlesyndication.com/pagead/ads?oe=utf
-8&client=ca-opera_800x30&format=800x30.. и т.д.)
где http://xxxxxxxxx.net.ua/test.mp3 урл который опера с гуглом
без моего ведома у меня утянули, кстати вместе с приватной
мп3-шкой и соответственно не маленьким outcoming-траффиком :((
Cправедливости ради нужно заметить, что ни один подобным
образом "перешедший третьим лицам" урл и его контент при
помощи того же google.com простым смертным не доступен..
Поиск в гугле любых подобных приватных документов выложеных
у меня на сервере, например: "site:xxxxxxxxx.net.ua inurl:mp3"
возвращает 0 результатов, но меня это как-то мало успокаивает
существуют ведь и не простые смертные тоже :(
Вывода два:
Во вервых, нужно фаерволить pagead-us.googlesyndication.com
вернее все записи A этого доменного имени (они кстати будут
со временем меняться, поэтому лучше написать скрипт, который
каждый день фаерволит все то, во что ресолвится этот домен):
# host pagead-us.googlesyndication.com
pagead-us.googlesyndication.com CNAME pagead-us.google.com
pagead-us.google.com A 216.239.41.99
pagead-us.google.com A 216.239.41.104
pagead-us.google.com A 216.239.57.99
pagead-us.google.com A 216.239.57.104
pagead-us.google.com A 64.233.167.99
pagead-us.google.com A 64.233.167.104
Есть даже более простое и лаконичное решение на уровне DNS:
прописать в /etc/hosts строчку
127.0.0.1 yourhostname localhost pagead-us.google.com localhost.localdomain
или на любой другой адрес. И все :)
Забавно то, что если на 127.0.0.1 у вас установлен www-сервер,
то на месте баннера в Опере будет отображаться стандартное
сообщение 404 Not Found. Т.е. настроив соответствующим
образом apache теперь появляется возможность разместить на
место баннера все что душе заблагорассудится, начиная от
цвета фона оконной темы и заканчивая небольшой страничкой с
букмарками :)
например так (http://grizli.te.net.ua/ad.jpg):
/etc/apache/httpd.conf:
.....
<Location "/pagead/">
ErrorDocument 404 http://127.0.0.1/ad.html
ErrorDocument 403 http://127.0.0.1/ad.html
</Location>
/var/www/ad.html (#D4D0C8 - цвет фона окон цветовой темы Redmond 2000, в KDE ):
<html>
<style type="text/css"><!--
body { color:#888888; font-size:11pt; }
a{ font-family:Tahoma; color:#000000; font-size:8pt; text-decoration:none; }
a:hover { text-decoration: underline; color:#333333; }
//--></style>
<body bgcolor="#D4D0C8">
<a class="bold" href="http://www.newsru.com">newsru.com</a>
|
<a class="bold" href="http://www.linux.org.ru">linux.org.ru</a>
|
<a class="bold" href="http://localhost">localhost</a>
</body></html>
(не забудьте запретить доступ к ad.html всем кроме 127.0.0.1)
Второй вывод, при всей быстроте и удобности Оперы, своей
закрытостью и вражеской для GNU сообщества лицензией она
ощутимо проигрывает даже текстовому lynx, от которого по
крайней мере всегда знаешь что ожидать. Печально, очень
печально :(
PS. Опера не зарегистрирована, ставил из взятого с сайта оперы
последнего релиза: opera_7.54-20040803.5-shared-qt_en_i386.deb
Я лично не проверял, активировано ли AdWare для
зарегистрированых пользователей. Уверен, что нет, потому что
баннер физически не показывается. Но все же полной уверенности
по понятным причинам нет и быть не может.
-----
Ответы на поступившие вопросы и замечания:
-- Чтобы самому "послушать" свою Оперу можно воспользоваться
такими вот простейшими снифферами:
tcpdump -npXs 1500 |grep -A5 -B25 "en\&url"
tcpdump -npXs 1500 |grep -A25 -B1 pagead
они кстати срабатыват абсолютно не всегда, потому что
искомые строки совсем даже с не маленькой вероятностью могут
быть разбиты по разным строчкам дампа tcpdump. Так что может
даже будет удобнее пользоваться не консольными tcpdump и
grep, а графическим Ethereal.
Что особенно забавно, даже сайт самого google не является
исключением.
0x0020: 5018 1920 24a4 0000 4745 5420 2f70 6167 P...$...GET./pag
0x0030: 6561 642f 6164 733f 6f65 3d75 7466 2d38 ead/ads?oe=utf-8
0x0040: 2663 6c69 656e 743d 6361 2d6f 7065 7261 &client=ca-opera
0x0050: 5f38 3030 7833 3026 666f 726d 6174 3d38 _800x30&format=8
0x0060: 3030 7833 3026 616c 7465 726e 6174 655f 00x30&alternate_
0x0070: 6164 5f75 726c 3d68 7474 7025 3341 2f2f ad_url=http%3A//
0x0080: 7465 7874 6164 732e 6f70 6572 612e 636f textads.opera.co
0x0090: 6d2f 6164 732f 2533 4666 6f72 6d61 7425 m/ads/%3Fformat%
0x00a0: 3344 3830 3078 3330 2663 6861 6e6e 656c 3D800x30&channel
0x00b0: 3d37 3534 2b65 6e26 7572 6c3d 6874 7470 =754+en&url=http
0x00c0: 2533 412f 2f77 7777 2e67 6f6f 676c 652e %3A//www.google.
0x00d0: 636f 6d2e 7561 2f20 4854 5450 2f31 2e31 com.ua/.HTTP/1.1
0x00e0: 0d0a 5573 6572 2d41 6765 6e74 3a20 4d6f ..User-Agent:.Mo
0x00f0: 7a69 6c6c 612f 342e 3020 2863 6f6d 7061 zilla/4.0.(compa
Хотя может google сравнивают количество честных обращений
к google как к поисковику от Опер и количество обращений с
синхронным стуком в специальную дверку, дабы знать с какой
эффекивностью работает их партнерская программа.
В общем, в очередной раз убеждаюсь: если вы параноик - это еще не
значит, что они за вами не гонятся :)
-- Вывод отказаться от Оперы вообще в ближайшее время не
прозвучит из моих уст, т.к. более быстрого броузера под KDE
за исключением нелепого для веб-разработчика броузера
Konqueror не существует. Снимаю шляпу перед программистами
Opera Software, сумевшие создать такой простой, относительно
надежный и удобно настраиваемый, 3 мегабайтный броузер, который
к тому же УМЕЕТ показывать HTML и еще троянов в него понапихать :)
-- Для проверки действительно ли принадлежит адреса googlebot
самой Google, вводить его имя или IP в адресную строку броузера
бессмысленно. Правильно проверить принадлежность IP можно командой
whois, как это уже приведено выше.
--
(c) 2004 by sergom
sergo-79(*)mail*ru
Эту страничку посетили из таких стран