世界を動かす技術を、日本語で。

Adobeが「Creative Cloud」のインストールを検出するためにホストファイルを修正

概要

  • Adobe Creative Cloudhostsファイル を書き換える事例
  • 目的は インストール状況の検出
  • JavaScript と画像リクエストを利用した仕組み
  • 過去の手法からの 変更理由
  • ソフトウェアの 倫理的問題提起

Adobe Creative Cloudがhostsファイルを書き換える理由

  • WindowsmacOS でAdobe Creative Cloudをインストールすると、 hostsファイル に複数のエントリが追加される現象
  • 追加の目的は、ユーザーが Adobe Creative Cloud をすでにインストールしているかどうかの検出
  • ユーザーが Adobe公式サイト (https://www.adobe.com/home)を訪れる際、 JavaScript で特定の画像(https://detect-ccd.creativecloud.adobe.com/cc.png)を読み込む仕組み
  • hostsファイルに指定の DNSエントリ があれば、ブラウザがAdobeサーバーに接続し、インストール済みかどうかが判別される
  • エントリがなければ接続失敗となり、未インストールと判定される仕組み

以前の手法とその変更理由

  • 以前は http://localhost:<様々なポート>/cc.png へのアクセスで、ローカルのCreative Cloudアプリに直接接続して検出していた
  • Google Chromeローカルネットワークアクセス の制限を強化したため、従来手法が利用困難に
  • その結果、 hostsファイル書き換え という新たな手法に切り替え

ソフトウェア倫理とマルウェア化の懸念

  • 商用ソフトウェアが ユーザーのシステムファイル を秘密裏に変更する行為
  • このような行為が マルウェア とどの時点で見なされるかという倫理的問題
  • ユーザーの 同意や説明不足 による不信感の増大
  • セキュリティリスク やシステムの安定性への影響懸念
  • ソフトウェア開発者に求められる 透明性説明責任

Hackerたちの意見

ディフェンダーはこれをフラグしないの?ホストファイルを変更したら警告が出るはずなんだけど。

Windowsのホストファイルは神聖じゃないよ。管理者なら誰でも編集できるし。俺もローカルホストにドメイン名を追加するためにやったことあるし。これについて心配してる人たち、昔は普通だったからね。ホストファイルはDNSの10年前に作られたんだ。エンドユーザーやアプリは、スタンフォード研究所からマスターコピーをダウンロードして、時々更新しながらホストファイルを意図的に編集してたんだよ。

これがWindowsでどう機能するのか気になるな。サービスが上書きしたりリセットしたりするのかな。

ファイルの権限でこれをブロックできないの?それとも、roフォルダー内のファイルへのシンボリックリンクとか?

ディフェンダーがこれが起こったって警告してくれるよ。

ほとんどのユーザーは気にしないと思うよ。特に、Adobeのインストーラーがインストール後にセキュリティ警告が出るかもしれないって警告してもね。実際、ホストファイルを編集するマルウェアはHTTPSのおかげであまり効果がないし、「google.com」のトラフィックを自分のIPにリダイレクトするのは簡単じゃないから。

前の議論からのコメントを再利用するね(4日前、68ポイント、13コメント): https://news.ycombinator.com/item?id=47617463 _______ いやいや、絶対にダメだよ。Adobeのリーダーシップに例えてみよう: 1. あなたは夜間の清掃員を雇って、役員室を掃除してもらった。 2. その清掃員は、ひそかに各デスクの電話に立ち寄って、ボイスメールの設定を変更していた。 3. 変更後、外部の電話が特定の番号をダイヤルすると「このオフィスはAdobeの清掃サービスを受けました!」というメッセージが流れる。これを知った時、あなたはどう反応する?「男の子は男の子だから」って笑う?いや、違う!パニックで電話して、施設がアクセスを取り消して、ITが他の不正なサプライズをチェックし始めて、HRが契約の解雇を調べて、法務がデータ漏洩通知や訴訟、刑事告発の必要性をアドバイスする。* 物に触る許可があったから許されるの?違う。* 最終的な結果が無害だから許されるの?違う。* 雇用契約に「オフィスコミュニケーション体験を向上させる」みたいな曖昧な文があったから許されるの?違う。* もし彼らが悪意がなくてただバカだったら許されるの?違う。そんな線を軽々と越える人は、あなたのものの近くにいてはいけない、これが全てだ。

まぁ、あなたの例えには一つ欠点があるね: > 3. 変更後、外部の電話が特定の番号をダイヤルすると「このオフィスはAdobeの清掃サービスを受けました!」というメッセージが流れる。理論的には「どんな外部の電話」ではないよ。清掃員の部署からの電話だけがその番号をダイヤルして「はい、あなたがこのオフィスを清掃しました!」って言われるんだ。他の誰かがその内線をダイヤルしようとすると、デスクの電話はそれが何を意味するのか知らないふりをする。(だって、Adobeのサーバーが分析画像を提供する際、リクエストの発信元をチェックして、発信元がAdobeの自社サイトの場合だけ画像を提供するみたいだから。)その発信元の「セキュリティ」は、将来的な脆弱性や人為的エラーの可能性を考えると、複雑さを正当化するものではないよ。

会社に入ったら、従業員用の内部ネットワークに接続できるようにノートパソコンが設定される感じだね。これはすごく一般的なやり方だよ。

まぁ、ティーンエイジャーの頃、ホストファイルでAdobeのサーバーをブロックするのが「電話認証」に行く方法で、コードを生成できたから、これでおあいこかな、へへ。

あのCS2のトレントは最高だったね。

この記事のタイトルを見て、私もその記憶がよみがえったよ。Adobeだけじゃなくて、他の高いソフトウェアのクラックも同じだったね。…それからAdobeは、アクティベーションサーバーを停止した後、CS2の無料ダウンロードを(意図せずに)配布したんだ。有効なシリアル番号付きでね。今でもインターネットアーカイブで見つけられるよ。

ルートや管理者として実行しているかどうかに関わらず、/etc/hostsに不変フラグを設定することでこの動作を無効にできるよ。不変フラグが設定されたファイルには、ルートを含むどのユーザーも書き込めないからね(ただし、ルートは属性を削除してから書き込むことはできるけど)。

一般的な原則として、アプリケーション開発者が私のシステムの設定を自由に変更するべきじゃないし、OSも開発者がそれをやりにくくする役割を果たすべきだと思う。C:\Program Files\AppNameや/usr/local/binにバイナリをインストールするのはいいけど、C:\Windowsや/usr、/bootにゴミをばらまくのは絶対にダメだよ。OSは開発者がこういうことをするために私の同意を得るようにすべきだし(ただのsudoみたいな権限昇格じゃなくてね)。/etc/hostsをこっそり変更して私に対抗するなんて、ふざけんな!

Windowsでアプリをインストールするのに「sudo」が必要な時代はもう終わったと思ってたんだけど、今はほとんどのものがユーザーインストールを普通にやってるよね。権限昇格を要求されるのは、アプリが何か怪しいことをしようとしてる証拠だと思うし、悪意がある場合もあるよ。Linuxでは、自分のユーザーアカウントだけでソフトウェアをビルドして実行できないなら、そのソフトウェアには説明が必要だね。ほとんどのデスクトップアプリは、権限を昇格させずに動くべきだよ。

一般的な原則として、アプリケーション開発者が私のシステムの設定を自由に変更するべきじゃないし、OSも開発者がそれをやりにくくする役割を果たすべきだと思う。面白いことに、macOS、iOS、iPadOS、Androidはこれをやっていて、常に攻撃されてるよね。開発者がXDGのような基準にもっと厳密に従う必要があると思うけど、どうやってそれを強制できるかは分からないな。

C:\Program Files\AppName や /usr/local/bin にバイナリをインストールするの?いいね。昔は俺もそう思ってたけど、実際には /usr/local/bin にランダムなものをインストールされたくないって気づいたんだ。アプリは ${HOME}/.local/bin にインストールされるべきだよね。どのユーザーもシステムを変更せずにアプリをインストールできるはずだ。

開発者が俺のシステム設定を自由に変更できるべきじゃない s/free rein/the ability/ オレは読み取り専用のOSを信じてる。/etc は書き込み可能であってはいけない。

だからこそ、iOSが好きなんだ。アプリがOS内で「遠くからのアクション」を持つのが非常に難しいから。アプリを強制終了させると、ほとんど存在しなかったかのようになる。

名前は出さないけど、もしかしたら記憶違いかもしれないけど、かつて聞いたことのあるリモートデスクトッププログラムがグローバルなLD_PRELOADを追加して、誰でも書き込める共有ライブラリを指してたと思う。でも、これが本当にそうだったかは分からないから、具体的には言わないよ。名誉毀損になったら嫌だからね。

先週Creative Cloudをインストールしたけど、macOSのシステムでホストファイルにそんなエントリーは作られなかったよ。

これが今もそうかは分からないけど、8〜9年前にアクロバットがMicrosoft Active Accessibility(oleacc.dll)のCOMレジストリエントリを上書きすることを発見したんだ。これでMSAAをインスタンス化しようとするアプリは、システムDLLの代わりにAdobeのDLLを取得することになった。これが原因で俺が作業していたものが壊れちゃって、アプリのマニフェストで強制的にシステム版を使うようにオーバーライドしなきゃならなかった。これについて問い合わせたら、MSAAのインスタンス化をシステム全体でキャッチするために絶対にこうする必要があったっていうクソみたいな説明が返ってきたけど、実際にはローカルな問題を解決するためにグローバルな解決策を使ってたんだよね。

AdobeはCreate Suiteが出てからずっとユーザーに敵対的だよ。お前はどこにいた?2010年から少なくとも、WindowsやMacのマシンにバックドアを隠してたんだから。

正直、こんなクソみたいなことに何十年も対処してきたから、すべての「インストーラー」がシステム内のすべてのファイルや変更をGit PRスタイルのdiffでユーザーに見せてログを残すべきだと強く思ってる。ロールバックの機能も完備してね。曖昧なログや不透明なシステム変更、利益を守るためにエンドポイントセキュリティを悪用するベンダーにはうんざりだ。「ログを見せて」ってオプションは一瞬で流れていって戻れないし、まずはちゃんとdiffを見せてほしい。

Adobeは本当に悪役を楽しんでるよね。一体どうやって一つの会社がこんなに反消費者的になれるんだろう。