четверг, 12 августа 2010 г.

Вопреки заявлениям Google, открытый Chromium тоже следит за вами

Google обладает большим количеством великолепных сервисов, качество которых воистину впечатляюще. Однако его мания слежки за всем и вся зачастую переходит границы. Шуточно, но очень доходчиво об этом рассказывает ролик Google Toilet, которые, наверняка, многие здесь уже видели. Да и все, наверное, помнят историю со сбором открытого Wi-Fi трафика. В этой небольшой статье речь пойдет о браузере Chromium.

Итак, многим из нас нравится браузер Chrome. Но далеко не всем его политика конфиденциальности, которая позволяет использовать практически любые сведения о просматриваемых вами сайтов «в целях улучшения качества сервисов Google». Но у нас же есть Chromium! Он Open Source, а значит шпионского кода там быть не должно. Эта догадка подтверждается английской википедией, говорящей что разница между Chrome и Chromium в отсутствии гугль-брендирования, автообновления и, ура, отсутствии отправки «шпионских» данных в Google!

Давайте посмотрим, так ли это на самом деле!

Итак, запускаем сниффер, запускаем браузер, и…. Вы уже догадались, не правда ли? Перво-наперво браузер лезет на Google получить идентификационную куку (заметьте, я не произвожу никаких действий в интерфейсе):


HEAD / HTTP/1.1
Host: www.google.com
Connection: keep-alive
Content-Length: 0
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)
AppleWebKit/534.6 (KHTML, like Gecko) Chrome/6.0.489.0 Safari/534.6
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3


HTTP/1.1 302 Found
Location: www.google.ru/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie:
PREF=ID=632128af861ebb83:TM=1281420591:LM=1281420591:S=ELyyEhjZ2JNSeGMV;
expires=Thu, 09-Aug-2012 06:09:51 GMT; path=/; domain=.google.com
Set-Cookie: NID=37=r81qA-
WGJc3SVSCovGM80YSzQb0LXRe39SHMzqClX_9reL_jYI7q3Y3UKfXAdVtkv8m5fZl1W6XR-
of4k10wGAw4LQYK5LTatCv3BOGwcmOc5V_1yhWjo9Hj6qbX2acc; expires=Wed, 09-
Feb-2011 06:09:51 GMT; path=/; domain=.google.com; HttpOnly

Date: Tue, 10 Aug 2010 06:09:51 GMT
Server: gws
Content-Length: 218
X-XSS-Protection: 1; mode=block


И, затем начинает пинговать гугловый сервис финансовой аналитики:

GET /tools/pso/ping?
as=chrome&brand=&pid=&hl=en&rep=2&rlz=I7:1I7GGLL_ru,W1:1W1GGLL_ru,T4:1T4GGL­L_ru,C1:1C1_____enRU392RU392,C2:1C2_____enRU392,R7:1R7GGLL_ru&dcc=T
HTTP/1.1
Accept: text/*
User-Agent: Mozilla/4.0 (compatible; Win32)
Host: clients1.google.com


HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Date: Tue, 10 Aug 2010 06:10:07 GMT
Expires: Tue, 10 Aug 2010 06:10:07 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked

rlzT4: 1T4GGLL_ru
rlzR7: 1R7GGLL_ru
rlzW1: 1W1GGLL_ru
rlzC1: 1C1_____enRU392RU392
rlzC2: 1C2_____enRU392
rlzI7: 1I7GGLL_ru
dcc: T
set_dcc:
T4:1T4GGLL_ru,R7:1R7GGLL_ru,W1:1W1GGLL_ru,C1:1C1_____enRU392RU392,C2:1C2_____enRU392,I7:1I7GGLL_ru
events:
stateful-events:
crc32: 7c33310f


В том, что это финансовый сервер, а не какой-нибудь супер-мега-шибко закодированный полезный сервис можно очень легко убедиться, заглянув в исходники библиотеки RLZ, любезно опубливанной самим Google. Ниже я привожу наиболее интересный нам кусок кода:

//
// Ping information.
//

// rep=2: includes the new stateful events.
const char kProtocolCgiArgument[] = "rep=2";

const char kEventsCgiVariable[] = "events";
const char kStatefulEventsCgiVariable[] = "stateful-events";
const char kEventsCgiSeparator = ',';

const char kRlzCgiVariable[] = "rlz";
const char kRlzCgiSeparator[] = ",";
const char kRlzCgiIndicator[] = ":";

const char kProductSignatureCgiVariable[] = "as";
const char kProductBrandCgiVariable[] = "brand";
const char kProductLanguageCgiVariable[] = "hl";
const char kProductIdCgiVariable[] = "pid";

const char kDccCgiVariable[] = "dcc";
const char kRlsCgiVariable[] = "rls";
const char kMachineIdCgiVariable[] = "id";
const char kSetDccResponseVariable[] = "set_dcc";

//
// Financial server information.
//

const char kFinancialPingPath[] = "/tools/pso/ping";
const char kFinancialServer[] = "clients1.google.com";
const char kFinancialPingType[] = "GET";

const int kFinancialPort = 80;

// Ping times in 100-nanosecond intervals.
const int64 kEventsPingInterval = 24LL * 3600LL * 10000000LL; // 1 day
const int64 kNoEventsPingInterval = kEventsPingInterval * 7LL; // 1 week

const char kFinancialPingUserAgent[] = "Mozilla/4.0 (compatible; Win32)";
const char* kFinancialPingResponseObjects[] = { "text/*", NULL };



Причем, напомню, что сам гугль утверждает, что данный код используется ТОЛЬКО для маркировки брендированных скачек и его нету даже в Chrome, скачанном с оффсайта, не говоря уж о «в склянь свободном», белом и пушистом Chromium.

Обсуждение данной проблемы я поднял в официальной гуглогруппе Chromium-discuss, где получено подтверждение аномальности данного поведения. Интересно, гугл снова «по ошибке» решил подсобрать по-больше данных о пользователях?

Источник с Хабра с комментариями



А это реакция OpenNET на выявленный беспредел


Ошибка привела к отправке RLZ-параметров Google из браузера Chromium

Вчера один из энтузиастов обнаружил странное поведение свежего снапшота web-браузера Chromium, которое проявлялось в отправке на сервер Google RLZ-параметров, несмотря на все уверения Google, что такое поведение свойственно только web-браузеру Chrome. При слежении сниффером за свежеустановленным Chromium, который был просто запущен первый раз, без открытия каких-либо сайтов, была выявлена скрытая отправка 3-запросов к серверам Google.

Разработчики Chromium рассмотрев жалобу пришли к выводу, что задействование RLZ-библиотеки в Chromium, связано с внесенным в конце июля регрессивным изменением, в результате которого код был помещен не только в ветку Google Chrome, но и в сборку Chromium для платформы Windows. Сборки Chromium для Linux проблеме не подвержены. Статус исправление ошибки можно наблюдать на данной странице.

http://www.opennet.ru/opennews/art.shtml?num=27588


P.S. Обрадовало то, что в версии для Linux эти изменения не коснулись, видимо сообщество GNU/Linux так легко не проведешь.