- LinkedIn は Chrome 上で
chrome-extension:// URL へのリクエストを送り、特定の拡張機能がインストールされているかを確認しており、未インストールの項目は開発者ツールのコンソールにリクエスト失敗エラーとして残る
- LinkedIn はすでにユーザーの 氏名・勤務先・役職・職歴・所在地 を保有しているため、拡張機能スキャンは匿名のデバイス指紋ではなく、検証済みの職業上の身元にソフトウェア一覧を付け加える形になる
- browsergate.eu の記録と GitHub追跡リポジトリ によれば、スキャンは少なくとも2017年から続いており、対象リストは 38件 から 2026年4月時点で 6,278件 に増加した
- スキャンは LinkedIn の APFC デバイスフィンガープリンティングシステムの一部であり、canvas fingerprint、WebGL、オーディオ挙動、フォント、画面情報、デバイスメモリ、WebRTC のローカル IP など 48個 のブラウザ・デバイス特性とあわせてプロフィールを構成する
- 検出結果は
AedEvent と SpectroscopyEvent としてパッケージ化され、RSA 公開鍵で暗号化された後、LinkedIn の li/track エンドポイントへ送信される。browsergate.eu は、この方式が EU Digital Markets Act 違反に当たるとして刑事捜査が開始されたと述べている
個人識別プロフィールに付加されるソフトウェア一覧
- 一般的なフィンガープリンティングは、匿名訪問者のブラウザを Cookie なしで再識別する手法として扱われる
- この場合、プロフィールはデバイスレベルで識別できても、必ずしも個人の身元と結び付くわけではない
- LinkedIn は匿名訪問者ではなく、ユーザーの 氏名、勤務先、役職、職歴、給与帯、専門ネットワーク、所在地 をすでに保有している
- LinkedIn の拡張機能スキャンは、正体不明の訪問者のデバイスプロフィールを作るのではなく、すでに検証済みの職業上の身元に詳細なソフトウェア一覧を付け加える形になる
- LinkedIn のスキャンリストには数百件の求職関連拡張機能が含まれており、ユーザーが勤務先に知らせる前にひそかに転職活動中かどうかを把握できる
- 政治コンテンツ、宗教的実践、障害支援、ニューロダイバーシティに関連する拡張機能もリストに含まれており、ブラウザソフトウェアが個人生活を推測する根拠になり得る
- LinkedIn はユーザーの勤務先を知っているため、1人の従業員のスキャン結果は、その個人だけでなく所属組織の内部ツール、セキュリティ製品、競合サービスの契約、業務フローの把握にもつながり得る
- LinkedIn の privacy policy では拡張機能スキャンは開示されておらず、ユーザーは同意を求められることも通知を受けることもない
LinkedIn を超える問題
-
取り締まりと前例
- LinkedIn は拡張機能リストを使って、特定の拡張機能をインストールしたユーザーについて推論し、取り締まり措置を講じている
- browsergate によれば、Milinda Lakkam は宣誓のもとで “LinkedIn took action against users who had specific extensions installed.” と確認した
- ユーザーは、自分のソフトウェアが一覧化されていること、その一覧が自分に不利に使われていること、そしてそれが LinkedIn のプライバシーポリシーに記載されていないことを知る手段がない
-
フィンガープリンティングの生態系
- ブラウザフィンガープリンティングは通常、1つのサイトがシグナルを収集してプロフィールを作成し、セッションをまたいでユーザーを認識する問題として扱われる
- LinkedIn の拡張機能スキャンは、検証済みの身元に結び付いた詳細なソフトウェア一覧を生成し、そのプロフィールは LinkedIn 内部にとどまる必要がない
- LinkedIn が第三者の行動データセットを購入し、その中にユーザーのフィンガープリントが含まれていれば、LinkedIn はそれをすでに保有するユーザー情報に付け加えられる
- LinkedIn 外での閲覧行動、購入履歴、位置パターン、関心事が、LinkedIn アカウントに結び付いたプロフィールの一部になり得る
- 逆に LinkedIn は、すべてのページ訪問で読み込まれる Google の reCAPTCHA enterprise を含む第三者スクリプトを統合しており、プラットフォーム間でデータが流れる
- LinkedIn が検証済みの身元と結び付けたフィンガープリントは、linkedin.com 外の広告・追跡システムにも影響し得る
- 一度 LinkedIn にログインすると、その訪問で作られたフィンガープリントがウェブ全体で追跡される可能性がある
-
実際に脅威となるユーザー層
- 記者、弁護士、研究者、人権調査官にとって、LinkedIn プロフィールはオンライン上で最も詳細な検証済み身元文書の1つになり得る
- LinkedIn プロフィールは実名で、職業目的のために意図的に構築された情報である
- 拡張機能スキャンは、そのプロフィールにプライバシー保護ツール、セキュリティ拡張機能、調査ツール、生産性アプリのインストール履歴を、ユーザーの認識なく結び付ける
- LinkedIn と Chrome を使っていれば、この収集は現在進行形で起きている
APFC と高度な JavaScript フィンガープリンティング
- 拡張機能スキャンは単独機能ではなく、LinkedIn が内部で APFC と呼ぶ、より広範なデバイスフィンガープリンティングシステムの一部である
- APFC は Anti-fraud Platform Features Collection の略で、内部では DNA、Device Network Analysis とも呼ばれる
- LinkedIn はこの種の追跡手法について、拡張機能スキャンよりは公然としているが、これらの手法は商用ウェブサイトで一般的に見られる
- このシステムは訪問ごとに 48個のブラウザ・デバイス特性 を収集する
- 収集項目には、canvas fingerprint、WebGL レンダラーとパラメータ、オーディオ処理挙動、インストール済みフォント、画面解像度、ピクセル比、hardware concurrency、device memory、バッテリー残量、WebRTC によるローカル IP アドレス、タイムゾーン、言語などが含まれる
- 拡張機能スキャンは、より大きなプロフィールを構成する入力の1つである
技術的に起きていること
- LinkedIn のコードは、Chrome にインストールされた特定ファイルを探すために
chrome-extension:// URL へ fetch() リクエストを送る
- 拡張機能がインストールされていなければ、Chrome がリクエストをブロックし、失敗をログに残す
- 拡張機能がインストールされていれば、リクエストは静かに成功し、LinkedIn はそれを記録する
- 確認済み環境では、スキャンは約 15分 にわたって実行され、6,000件を超える拡張機能を検索した
- ユーザーは Chrome で LinkedIn を開き、開発者ツールのコンソールタブを見ることでこれを直接確認できる
- コンソールの赤いエラーは、それぞれユーザーのフィンガープリントの一部に相当する
コード構造と検出方式
- LinkedIn はすべての Chrome 訪問者のブラウザ上で JavaScript コードを実行しており、その中に拡張機能スキャンを担うシステムがある
- 該当ファイルは約 1.6MB の、圧縮され一部難読化された JavaScript ファイルである
- 一般的な圧縮は性能のためにコードを縮小する処理だが、難読化はコードを読みにくく理解しにくくする別段階の処理である
- LinkedIn は拡張機能スキャンシステムが入った正確なモジュールを難読化し、数千行の JavaScript ファイルの中に埋め込んでいる
- ファイル内には、ブラウザ拡張機能 ID のハードコードされた配列がある
- 2026年2月時点で、この配列には 6,278件 の項目が入っていた
- 各項目は、Chrome Web Store の拡張機能 ID と、その拡張パッケージ内の特定ファイルパスという2つのフィールドを持つ
- ファイルパスは偶然の値ではなく、Chrome 拡張機能が
web_accessible_resources フィールドを通じて内部ファイルをウェブページに公開できるため必要になる
- 拡張機能がインストールされており、特定ファイルをアクセス可能として宣言していれば、
chrome-extension://{id}/{file} に送る fetch() リクエストは成功する
- インストールされていなければ、Chrome がリクエストをブロックする
- LinkedIn はリスト内の 6,278件 の拡張機能それぞれについて、特定のアクセス可能ファイルを識別して直接検出している
- リストは継続的に維持・拡張されており、Chrome Web Store の拡張パッケージをクロールし、各マニフェストから web accessible resources を解析して検出対象を追加するツールがあったとみられる
2つのスキャンモードと Spectroscopy
- 拡張機能スキャンは2つのモードで動作する
- 1つ目のモードは
Promise.allSettled() を使ってすべてのリクエストを同時に送り、全拡張機能を並列に検出する
- 2つ目のモードは、各リクエストの間に設定可能な遅延を入れて順次送信し、ネットワーク活動を時間的に分散させ、監視ツールで目立ちにくくする
- LinkedIn は内部機能フラグを使って2つのモードを切り替えられる
- スキャンは
requestIdleCallback によって遅延されることもあり、ブラウザがアイドル状態のときに実行されるため、ユーザーは性能への影響を感じにくい
- Spectroscopy という第2の検出システムは、拡張機能リストとは独立して動作する
- Spectroscopy は DOM ツリー全体を走査し、すべてのテキストノードと要素属性にある
chrome-extension:// URL 参照を調べる
- この方法により、LinkedIn のハードコード済みリストにない場合でも、ページを変更する拡張機能を捉えられる
- 2つのシステムを組み合わせることで、インストール済みの拡張機能と、実際にページと相互作用している拡張機能の両方を包括できる
テレメトリ送信
- 2つの検出システムは、同じテレメトリパイプラインへ結果を送る
- 検出された拡張機能 ID は
AedEvent と SpectroscopyEvent オブジェクトとしてパッケージ化される
- これらのオブジェクトは RSA 公開鍵で暗号化され、LinkedIn の
li/track エンドポイントへ送信される
- 暗号化されたフィンガープリントは、その後のセッション中に発生するすべての API リクエストの HTTP ヘッダーに挿入される
- LinkedIn は訪問中にユーザーが取るあらゆる行動とともに、この値を受け取る
法的文脈
- browsergate.eu は関連する法的ロジックを詳しく整理している
- 2024年、Microsoft は EU Digital Markets Act に基づきゲートキーパーに指定され、LinkedIn は規制対象製品の1つとなった
- DMA は、ゲートキーパーに対して第三者ツールによるユーザーデータへのアクセスを認めることを求め、そのツール利用者への措置を禁じている
- browsergate.eu は、LinkedIn が第三者ツール利用者を体系的に取り締まり、その識別のためにひそかな拡張機能スキャンを用いた点が、この規定違反に当たるとみている
- この主張が法的に受け入れられるかどうかは司法判断の問題である
- Bavarian Central Cybercrime Prosecution Office in Bamberg の Cybercrime Unit は、刑事捜査が開始されたことを確認した
- この機関は、管轄をまたぐ重大サイバー犯罪事件を扱う
- browsergate.eu は刑事捜査を確認し、事件番号を提示したうえで、裁判所文書一式の公開準備を進めていると述べた
1件のコメント
Hacker Newsの意見
「刑事捜査が始まったということに疑いの余地はない。」いいね。こういう会社は石を投げられても当然だし、それ以上のことも受け入れるべきだ
ウェブサイトを平均以下に劣化させないと考えるチームなら、既知のサービス劣化の主導者たちのリストで応募者をふるいにかけられるべきだ
もう芽を摘むには遅いのかもしれないが、こうした個人が何の制約もなく活動を続け、さらに大きくなるのを許す理由はない
「その後 mastodon で browsergate の話題が出たのを見て『まさか』と思ったが、実際に訴訟の準備が進んでいた。」 - un-nf
Farrell v LinkedIn Corporation 4:26-cv-02953-KAW (N.D. Cal. Apr. 6, 2026)
https://ia601503.us.archive.org/33/items/gov.uscourts.cand.4...
なんで俺のChromeは、俺がインストールした拡張機能の一覧をあらゆるウェブサイトに教えるんだ?
エラーにならなければ、その拡張機能がインストールされていると分かる。巧妙で手間のかかる方法だが、こうしたことを防ぐための安全対策を回避している
これを使う理由は、利用規約を回避する既知のスクレイパー拡張機能のユーザーをブロックするためだと読んだが、完全には納得していない
「Chrome 拡張機能は manifest.json の web_accessible_resources フィールドを通じて内部ファイルをウェブページに公開できる。拡張機能がインストールされていて、リソースが公開されていれば、
chrome-extension://{id}/{file}へのfetch()リクエストは成功する。インストールされていなければ Chrome がリクエストをブロックし、promise は reject される。LinkedIn はリスト内のすべての拡張機能をこの方法でテストしている。」
でも6,300個の拡張機能についてそれをやるのは手間がかかりすぎる。こういうのをサービスとして提供しているところがあるのだろうか?
みんな、職場でこういうものを実装しろと言われたら何を選ぶ? 反対して踏みとどまり職を失うのか、それとも従って職を守るのか
実務者として、テレメトリと監視の境界線はどこに引くべきなんだろう?
ただ、そんな駆け引きをしているなら、新しい仕事を探す時なのかもしれない ;)
ただし、その事実を知っているのが3人くらいしかいないなら、すぐに誰だか割れてしまうかもしれない
似た立場のマネージャーが指示し、その上の管理職は売上増しか見ておらず手段は気にしない、という構造なのかもしれない。それでもどこかで「私たちは今いったい何をしているんだ?」と言う人がいなければならない気がするが、奇妙だ
質問に答えるなら、もちろん反対する。今の私は、深刻な代償なしにそう選べるほど恵まれている。とはいえ、HN に出てきて「はい、私は道徳心がありません!」なんて言う人がいるだろうか? バーナーアカウントでも、本当にそうかは分からないだろう
原文で私が見つけた最も関連する箇所はこれだ:
「Chrome 拡張機能は manifest.json の web_accessible_resources フィールドを通じて内部ファイルをウェブページに公開できる。拡張機能がインストールされていて、リソースが公開されていれば、
chrome-extension://{id}/{file}へのfetch()リクエストは成功する。インストールされていなければ Chrome がリクエストをブロックし、promise は reject される。LinkedIn はリスト内のすべての拡張機能をこの方法でテストしている。」
同じファイルを試している他のサイトがどこかを見るのも面白そうだが、すでに誰か調べただろうか?
これはデバイス・フィンガープリンティングではかなり標準的な慣行だ。LinkedIn はおそらくスクレイピングなどからプラットフォームを守るためにこれを使っており、拡張機能の一覧はユーザーを識別し、フィンガープリントの有用な構成要素になるだけの十分なエントロピーを持っている
人々が数日でローカル Chrome 拡張機能を作ってインストールし、AI を開発者ツールに注入して、ほぼあらゆるウェブサイトをスクレイプさせるのを見た。それも数か月前の話だ
もはやそうしたものを簡単に防ぐ方法はないと思う。こうした防御的プログラミングの措置が無意味になるのは時間の問題だ
これは幻覚なのか? この引用文は他では見つからない
「browsergate によれば、Milinda Lakkam は宣誓の下で『LinkedIn は特定の拡張機能をインストールしたユーザーに対して措置を取った』と確認した。」
https://browsergate.eu/the-evidence-pack/
LinkedIn のシステムは「[XXXXXX] がインストールされている LinkedIn ユーザーに対して措置を取った可能性がある。」
修正: いいね! インデントされたテキストがモバイルブラウザでも改行されるようになったのを今ちょうど見た。少なくとも ffm ではそうだ。いつ修正されたのか気になる
公平を期して言えば、LinkedIn のプライバシーポリシーには、この情報を収集すると明記されている。https://www.linkedin.com/legal/privacy-policy?ref=cms.hondas... を参照
「1.5 デバイスと位置情報
お客様が当社サービスを訪問または離脱する際(サードパーティのサイト上にある一部のプラグイン、および当社の Cookie または類似技術を含む)、当社はお客様のアクセス元および移動先のサイトの URL と訪問時刻を受け取ります。また、お客様のネットワークおよびデバイス情報(IP アドレス、プロキシサーバー、オペレーティングシステム、ウェブブラウザとアドオン、デバイス識別子と機能、Cookie ID、および/または ISP や携帯通信事業者など)も受け取ります。モバイルデバイスで当社サービスを使用する場合、そのデバイスは電話の設定に応じて位置データを当社に送信します。GPS その他のツールで正確な位置を特定する前に、オプトインを求めます。」
ここで関係があるのは「一部のプラグインを含む」という部分だ
LinkedIn アカウントを削除したら、人生が良くなった