BT

MicrosoftによるC++バイナリへのテレメトリ呼び出しの自動挿入について考える

| 作者: Jeff Martin フォローする 16 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2016年6月24日. 推定読書時間: 3 分 |

原文(投稿日:2016/06/08)へのリンク

先日のRedditにユーザ名“sammiesdog”氏が,Visual StudioのC++コンパイラが自動的にMicrosoftのテレメトリサービスの関数コールを追加している,と主張する記事を投稿した。記事に添付されたスクリーンショットからは,単純な5行のCPPファイルから,“telemetry_main_invoke_trigger”という関数コールを含んだアセンブリ言語ファイルが生成される様子が見て取れる。

議論はその後,この未発表の”機能”を無効にするにはどうすればよいか,目的は何なのか,といった話題へと展開した。“sammiesdog”氏の報告はリリースビルドについてだが,その後”ssylvan”氏が,デバッグビルドでも同じであることを示している。テレメトリ機能の目的はETWとの通信だ。

“xon-xoff”氏は関連スレッドの中で,懸念点について記している

そのとおり,ETWそのものは単なるログイベントです。それ自体は問題ありません。問題なのは次の点です。

  • ETWはリモートテレメトリのソリューションの一部として機能し,しばしばその目的で使用される。
  • これらのイベントは,CRTがプログラムに静的リンクされている場合,そのプログラム自体が発行する。
  • それがテレメトリというものだ。

本記事のための調査中に筆者は,以下のCPPコードをVisual Studio 2015 Update 2でコンパイルした時に,“sammiesdog”氏の報告したテレメトリ関数コールを確認することができた。

#include "stdafx.h"
#include <iostream>

int main()

{
return 0;

}

telemetry_main_invoke_triggerコールは,このプロジェクトをWindows 7とWindows 10でコンパイルした時の,DebugとReleaseのいずれのビルドでも確認されている。

この関数の発見に関する論争や対話は,その後,MicrosoftでVisual C++チームの開発マネージャを務めるSteve Carroll氏による説明を引き出した。氏の返答の中で何よりも重要なのは,この機能がVisual Studio 2015のUpdate 3で削除されると明言されたことだ。Carrol氏はさらに,この機能を追加したMicrosoftの思考プロセスについての説明を続ける。

... このコードがオンになっていた場合に行なうのは,タイムスタンプとモジュールロードイベントを示すETWイベントのトリガです。イベントデータが解釈可能なのは,ユーザがシンボル情報を(PDBなどで)提供する場合に限られます。つまりこのデータは,ユーザが私たちに積極的に支援を求めて,調査の一環としてPDBを提供することで初めて,その意味を持つのです。現在に至るまで私たちが,実際のユーザを対象にこれらすべてを行なったことはありません。今のところはすでに確立したアプローチで,潜在的な問題の調査と対処を行なう方法で事が足りています。

VS205 Update 2のコピーを所持していて,なおかつ現時点でコンパイルしたコードのテレメトリ機能をオフにしたい場合は,リンカのコマンドラインに“notelemetry.obj”を指定する必要がある。(このフィックスはCarrol氏が確認済み。)

このデフォルト動作について,Visual Studio “15”でも含まれているのかをMicrosoftに問い合わせてみたところ,同社の広報担当によると,動作自体は“15”にも存在するが,今後のプレビューリリースでは廃止される予定だという。ただし廃止のタイムテーブルは提供されていない。また,VS2012とVS2013はこのテレメトリ機能の対象外である。

 
 

この記事を評価

関連性
形式
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

特集コンテンツ一覧

ASP.NET Core - シンプルの力

Chris Klug 2018年6月4日 午前3時26分

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT