Reddit に「VAC(Valve Anti-Cheat)はあなたが訪れたサイトのドメインをサーバーに送っている」というスレッドが立った。

VAC now reads all the domains you have visited and sends it back to their servers hashed : GlobalOffensive

  • Goes through all your DNS Cache entries (ipconfig /displaydns)
  • Hashes each one with md5
  • Reports back to VAC Servers
  • So the domain would be 1fd7de7da0fce4963f775a5fdb894db5 or would be 107cad71e7442611aa633818de5f2930 (Although this might not be fully correct because it seems to be doing something to characters between A-Z, possible making them lowercase)
  • Hashing with md5 is not full proof, they can be reversed easily nowadays using rainbowtables. So they are relying on a weak hashing function

アメリカでは NSA による PRISM のことが記憶に新しく、こういった話をみんなが信じてしまう前に、Gabe Newell がこれに反応した。

Valve, VAC, and trust : gaming

Trust is a critical part of a multiplayer game community - trust in the developer, trust in the system, and trust in the other players. Cheats are a negative sum game, where a minority benefits less than the majority is harmed.

There are a bunch of different ways to attack a trust-based system including writing a bunch of code (hacks), or through social engineering (for example convincing people that the system isn't as trustworthy as they thought it was).

For a game like Counter-Strike, there will be thousands of cheats created, several hundred of which will be actively in use at any given time. There will be around ten to twenty groups trying to make money selling cheats.

We don't usually talk about VAC (our counter-hacking hacks), because it creates more opportunities for cheaters to attack the system (through writing code or social engineering).

This time is going to be an exception.

There are a number of kernel-level paid cheats that relate to this Reddit thread. Cheat developers have a problem in getting cheaters to actually pay them for all the obvious reasons, so they start creating DRM and anti-cheat code for their cheats. These cheats phone home to a DRM server that confirms that a cheater has actually paid to use the cheat.

VAC checked for the presence of these cheats. If they were detected VAC then checked to see which cheat DRM server was being contacted. This second check was done by looking for a partial match to those (non-web) cheat DRM servers in the DNS cache. If found, then hashes of the matching DNS entries were sent to the VAC servers. The match was double checked on our servers and then that client was marked for a future ban. Less than a tenth of one percent of clients triggered the second check. 570 cheaters are being banned as a result.

Cheat versus trust is an ongoing cat-and-mouse game. New cheats are created all the time, detected, banned, and tweaked. This specific VAC test for this specific round of cheats was effective for 13 days, which is fairly typical. It is now no longer active as the cheat providers have worked around it by manipulating the DNS cache of their customers' client machines.

Kernel-level cheats are expensive to create, and they are expensive to detect. Our goal is to make them more expensive for cheaters and cheat creators than the economic benefits they can reasonably expect to gain.

There is also a social engineering side to cheating, which is to attack people's trust in the system. If "Valve is evil - look they are tracking all of the websites you visit" is an idea that gets traction, then that is to the benefit of cheaters and cheat creators. VAC is inherently a scary looking piece of software, because it is trying to be obscure, it is going after code that is trying to attack it, and it is sneaky. For most cheat developers, social engineering might be a cheaper way to attack the system than continuing the code arms race, which means that there will be more Reddit posts trying to cast VAC in a sinister light.

Our response is to make it clear what we were actually doing and why with enough transparency that people can make their own judgements as to whether or not we are trustworthy.


1) Do we send your browsing history to Valve? No.

2) Do we care what porn sites you visit? Oh, dear god, no. My brain just melted.

3) Is Valve using its market success to go evil? I don't think so, but you have to make the call if we are trustworthy. We try really hard to earn and keep your trust.



カーネルレベルのチートコードは作るのにお金がかかるので、チートコードを売っているグループはチーターが使おうとしているチートコードが正規に買われたものか確かめるために DRM チェックを付けている。VAC ではチートを使ったプレイヤーの PC に、そのチェックのためのサーバーへのアクセスがあったかを DNS キャッシュから読み取り、これを Valve に送る。この DNS キャッシュのチェックは VAC では2段階目のチェックで、この段階までチェックされるユーザーは 0.1% 以下でほとんどいない。(1段階目はチートが使われているかのチェック。)

現在はチートコードを作るグループがこのチェックに対策をしているので、VAC では今はもうこのチェックは使われていない。

カーネルレベルのチートコードは作るのにお金がかかるため、Valve は VAC によってそれをコストに見合わないくらいもっとお金がかかるようにしていく。

今回のように「Valve はあなたのブラウジング履歴を読み取っている」と話(噂)を広めるのは VAC をチートする別の手段だ。VAC に対する人々の信頼を攻撃する。こうするとあまりコストがかからずに VAC を攻撃できる。


チートコードにも DRM が付いていることは初めて知っておかしかった。悪いことをしている一方で、正規に購入されているかチェックしている。でも私としてはチーターが何をしたいのか分からなくなってしまった。お金を払ってまでチートしたいのだろうか。お金を払って Counter-Strike で相手を倒しまくって何か面白いのだろうか。「あのときはよくも!」という報復でチートをするなら少し分かるけれど、お金がかかるなら私はそのお金で他のものを買ってしまう。でもチートコードを作って売る集団があるということは、買う人が実際にいて成り立っていることになる。

私はマルチプレイでのチーターが嫌いなので、VAC には協力したい。何度かプレイヤーを Valve へ報告したことがある。仮に多くのユーザーに DNS キャッシュのチェックがあったとして、それによって私にも何か不利益があるのかもしれないけれど、チーターがいなくなることの利益の方が大きいと考える。

現に PRISM だって、これが完全に悪だと非難していたアメリカ人は少ないと思う。プライバシーの侵害だけをとってみると悪かもしれないけれど、それが一方で自分の身の安全につながっていると考えられた人が多いはず。

私はアメリカ人が言葉に乗せられやすいようなイメージがあり、それを考えると今回の Gabe Newell の早い対応は成功したように思う。Steam や Reddit を使っているのはアメリカ人ばかりではないけれど。読んだ人の信頼を得られるような文章だったと思う。もう早くもこの話題は沈静化しているように感じる。





ほとんどのジャンルのゲームが好きです。特に好きなのはRPG。「Xenogears」「クロノトリガー」「ペルソナ3、4」とか。ドラクエは「V」。主人公が「勇者」ではないところが好き。ビジュアルノベルは「STEINS;GATE」「Ever 17」「AIR」が好き。

どこぞの作曲コンクール最優秀賞受賞。好きなゲーム音楽は「愛のテーマ (FF)」「Heartful Cry (ペルソナ)」「夢の卵の孵るところ (Xenogears)」「凍土高原 (Kanon)」「夜の底にて (クロノトリガー)」「Theme of Laura (Silent Hill 2)」「Scarlet (みずいろ)」「bite on the bullet (I've)」など。たくさんありすぎてスペースが足りません。

ゲーム音楽以外だと「Ballet Mecanique (坂本龍一)」「月光 第3楽章 (L.v.Beethoven)」「水のない晴れた海へ (Garnet Crow)」「Angelina (Tommy Emmanuel)」「空へ… ライブ版 (笠原弘子/ロミオの青い空)」「太陽がまた輝くとき (高橋ひろ/幽遊白書)」「スカイレストラン (ハイ・ファイ・セット)」など。