image

Месяц назад Евгений Гречников 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)


  1. sidristij
    11.05.2016 11:38
    +4

    Это, конечно, вес хорошо что извинились… Но вставлять свой логгирующий код все равно не красиво


    1. RainM
      11.05.2016 12:11
      +3

      это не логи как таковые. на сколько я понял, это просто запись события ETW.


  1. AADonguzov
    11.05.2016 12:17
    +5

    Убрали в одном месте, наверняка поставят в другом :(


  1. Cheater
    11.05.2016 12:18
    +3

    > мы по-прежнему полагаемся на наши привычные подходы в исследовании и исправлении потенциальных проблем

    Лучше бы полагались на нормальные, чем на привычные, и на стадии разработки компилятора, а не на стадии фидбека.
    Ключ /enableetw добавить, видимо, религия не позволяла.


  1. 1vanK
    11.05.2016 12:31
    +5

    Какая-то привычка у Микрософта все по тихому делать


    1. pda0
      11.05.2016 13:55
      +7

      Если брать не конспирологическую версию, а обратиться к истории того, сколько костылей и подпорок M$ пришлось вставить в Windows, чтобы там работали сторонние программы, то реакция не удивительна. Их отношение к сторонним разработчиком хорошо описывается словами Джорджа Карлина: «Вокруг полно тупых людей». Они не читают документацию, используют «странные» методы достижения результата, хардкодят пути, используют память после освобождения и многое другое.

      Их попаболь произрастает из линейки Win3.x и Win9x. Дело в том, что пользователи тоже часто попадают под то же определение. Когда случаются проблемы они обрушивают свой гнев на то, что видят на экране. Раньше при проблемах в приложении падала система (Было сложно обеспечить хорошую защиту в практически современной операционке, рассчитанной на 33 MHz и 4 мегабайта памяти. Достаточно вспомнить, как им пришлось хакать библиотеку OLE, чтобы подставлять заглушку, когда полная не нужна или убрать секунды с часов в лотке, чтобы избежать частой(sic!) перерисовки экрана.) и тогда пользователи ругали M$: «Глючная венда»!

      Сейчас это не так актуально. Когда программа кривая и в *nix и в линейке NT падает именно программа. И пользователь ругает её. Но привычка отлаживать за разработчиков их софт уже неискоренима. :)


      1. Sergi0
        18.05.2016 19:42

        можно ещё вспомнить патч в менеджере памяти, который детектил СимСити и не отдавал сразу же освобождённую память, а приберегал ещё на некоторое время, потому что геймдевы не гнушались пользоваться памятью после высвобождения.


  1. kasperos
    11.05.2016 15:42
    +2

    Эх, не догадались Microsoft запретить дебажить свои программы.


    1. pda0
      11.05.2016 16:16
      +1

      Скорее всего запретили. Практически уверен, что в EULA есть пункт насчёт запрета обратной разработки, дизассемблирования и модификации. Просто они применяются для защиты разработки, типа нельзя дизассемблировать Windows и сделать свою. :) Бегать за каждым, кто решил покопаться в коде и что-то опубликовал — себе дороже. Толку мало, а подозрения усилятся в геометрической прогрессии.


      1. kasperos
        12.05.2016 07:35

        Я про:
        Написали вы «hello world» в их оболочке, хотели посмотреть что там получилось в виде кода (насколько вы оптимальнее «2+2» в masm сварганить сможете), попытались disasm сделать, а вам:
        «у вас нет прав дизассемблировать ваши приложения согласно лицензионному соглашению которые вы собственноручно за 0,5 секунд чтения согласились подтвердить».

        Про дизассемблирование винды и так понятно что типа «ай-яй-яй, низззя», EULA, все дела.


  1. thatisme
    12.05.2016 12:46

    «Видеонаблюдение в туалете ведется для вашей безопасности». Спасибо за заботу.


  1. nickolaym
    13.05.2016 21:28
    +1

    «Чтобы отключить телеметрию, ДОБАВЬТЕ notelemetry.obj»

    Хочешь доказать, что ты не лох — отправь сообщение НЕЛОХ на номер 4444. Чем больше смс ты отправишь — тем больше ты не лох!