Месяц назад Евгений Гречников grechnik опубликовал пост «Стандартная библиотека Visual Studio 2015 и телеметрия», в котором рассказал об интересной находке: оказалось, что в любом бинарнике, скомпилированном VS2015 из программы на C или C++, есть код, который может писать логи — и выглядело это всё слегка подозрительно, особенно в силу отсутствия исходников telemetry.cpp.
Три дня назад этот вопрос был снова поднят на Reddit, где время от времени в комментариях появляются разработчики Visual Studio — и вот сегодня общественности наконец-то удалось получить вполне себе официальный ответ от представителя Microsoft.
Самое важное: телеметрия будет убрана из статических библиотек в обновлении Update 3.
Всем здравствуйте. Это Стив Кэролл, менеджер разработки в команде Visual C++.
TL;DR: Всем спасибо за фидбек. Наша команда уберет это из наших статических библиотек в обновлении Update 3.
Наши намерения были благими — мы хотели создать фреймворк, который поможет исcледовать проблемы с производительностью и улучшить качество нашего оптимизатора, для чего нам нужно получать отчеты о любых замедлениях работы программ и широко распространенных проблемах с производительностью.
Мы приносим свои извинения за рост подозрительности по причине отсутствия CRT исходника — это было всего лишь упущением с нашей стороны. Несмотря на это упущение, некоторые из вас уже в деталях исследовали работу механизма. Как уже заметили многие, данный код делает следующее: вызывает событие ETW (подсистема Event Tracing for Windows) которое, при включенной Event Tracing, будет логировать отметки времени и события загрузки модуля. Данные этого события могут быть интерпретированы только в том случае, если клиент предоставит нам информацию о символах (то есть PDB-файлы), поэтому эти данные имеют значение только для клиентов, которые активно ищут нашей помощи и готовы поделиться этими PDB-файлами в качестве части своего исследования.
На самом деле, на сегодня мы еще не прошли весь этот путь ни с одним из пользователей, так что [при развитии Visual Studio и решении проблем с производительностью] мы по-прежнему полагаемся на наши привычные подходы в исследовании и исправлении потенциальных проблем.
Мы планируем удалить эти события в Update 3. Пока обновление не вышло, для удаления этой зависимости в Update 2 вы должны самостоятельно добавить notelemetry.obj в командную строку компоновщика. Если вы обеспокоены вопросом безопасности в целом, больше информации по правильной настройке Windows 10 согласно вашей необходимости может быть найдено здесь: https://technet.microsoft.com/en-us/itpro/windows/manage/configure-windows-10-devices-to-stop-data-flow-to-microsoft#bkmk-priv-feedback
Спасибо.
Комментарии (12)
Cheater
11.05.2016 12:18+3> мы по-прежнему полагаемся на наши привычные подходы в исследовании и исправлении потенциальных проблем
Лучше бы полагались на нормальные, чем на привычные, и на стадии разработки компилятора, а не на стадии фидбека.
Ключ /enableetw добавить, видимо, религия не позволяла.
1vanK
11.05.2016 12:31+5Какая-то привычка у Микрософта все по тихому делать
pda0
11.05.2016 13:55+7Если брать не конспирологическую версию, а обратиться к истории того, сколько костылей и подпорок M$ пришлось вставить в Windows, чтобы там работали сторонние программы, то реакция не удивительна. Их отношение к сторонним разработчиком хорошо описывается словами Джорджа Карлина: «Вокруг полно тупых людей». Они не читают документацию, используют «странные» методы достижения результата, хардкодят пути, используют память после освобождения и многое другое.
Их попаболь произрастает из линейки Win3.x и Win9x. Дело в том, что пользователи тоже часто попадают под то же определение. Когда случаются проблемы они обрушивают свой гнев на то, что видят на экране. Раньше при проблемах в приложении падала система (Было сложно обеспечить хорошую защиту в практически современной операционке, рассчитанной на 33 MHz и 4 мегабайта памяти. Достаточно вспомнить, как им пришлось хакать библиотеку OLE, чтобы подставлять заглушку, когда полная не нужна или убрать секунды с часов в лотке, чтобы избежать частой(sic!) перерисовки экрана.) и тогда пользователи ругали M$: «Глючная венда»!
Сейчас это не так актуально. Когда программа кривая и в *nix и в линейке NT падает именно программа. И пользователь ругает её. Но привычка отлаживать за разработчиков их софт уже неискоренима. :)Sergi0
18.05.2016 19:42можно ещё вспомнить патч в менеджере памяти, который детектил СимСити и не отдавал сразу же освобождённую память, а приберегал ещё на некоторое время, потому что геймдевы не гнушались пользоваться памятью после высвобождения.
kasperos
11.05.2016 15:42+2Эх, не догадались Microsoft запретить дебажить свои программы.
pda0
11.05.2016 16:16+1Скорее всего запретили. Практически уверен, что в EULA есть пункт насчёт запрета обратной разработки, дизассемблирования и модификации. Просто они применяются для защиты разработки, типа нельзя дизассемблировать Windows и сделать свою. :) Бегать за каждым, кто решил покопаться в коде и что-то опубликовал — себе дороже. Толку мало, а подозрения усилятся в геометрической прогрессии.
kasperos
12.05.2016 07:35Я про:
Написали вы «hello world» в их оболочке, хотели посмотреть что там получилось в виде кода (насколько вы оптимальнее «2+2» в masm сварганить сможете), попытались disasm сделать, а вам:
«у вас нет прав дизассемблировать ваши приложения согласно лицензионному соглашению которые вы собственноручно за 0,5 секунд чтения согласились подтвердить».
Про дизассемблирование винды и так понятно что типа «ай-яй-яй, низззя», EULA, все дела.
thatisme
12.05.2016 12:46«Видеонаблюдение в туалете ведется для вашей безопасности». Спасибо за заботу.
nickolaym
13.05.2016 21:28+1«Чтобы отключить телеметрию, ДОБАВЬТЕ notelemetry.obj»
Хочешь доказать, что ты не лох — отправь сообщение НЕЛОХ на номер 4444. Чем больше смс ты отправишь — тем больше ты не лох!
sidristij
Это, конечно, вес хорошо что извинились… Но вставлять свой логгирующий код все равно не красиво
RainM
это не логи как таковые. на сколько я понял, это просто запись события ETW.