1 ポイント 投稿者 GN⁺ 1 시간 전 | 1件のコメント | WhatsAppで共有
  • LinkedInは Chrome で chrome-extension:// URL へのリクエストを送り、特定の拡張機能がインストールされているかを確認しており、未インストールの項目は開発者ツールのコンソールにリクエスト失敗エラーとして残る
  • browsergate.eu の記録と GitHub追跡リポジトリによると、このスキャンは少なくとも2017年から続いており、対象リストは 38件 から 2026年4月時点で 6,278件 に増加した
  • LinkedIn はすでにユーザーの 氏名・勤務先・役職・経歴・所在地 を保有しているため、拡張機能スキャンは匿名のデバイス指紋ではなく、検証済みの職業的アイデンティティにソフトウェア一覧を追加する形になる
  • スキャンは LinkedIn の APFC デバイスフィンガープリンティングシステムの一部であり、canvas fingerprint、WebGL、オーディオ挙動、フォント、画面情報、デバイスメモリ、WebRTC のローカル IP など 48個 のブラウザー・デバイス特性とともにプロファイルを構成する
  • 検出結果は AedEventSpectroscopyEvent としてパッケージ化され、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 に一度ログインすると、その訪問で作られたフィンガープリントが Web 全体で追跡され得る
  • 実際に脅威となるユーザー層

    • 記者、弁護士、研究者、人権調査官にとって、LinkedIn プロフィールはオンライン上で最も詳細な検証済み身元文書の1つになり得る
    • LinkedIn プロフィールは、実名で専門目的のために意図的に構築された情報である
    • 拡張機能スキャンは、そのプロフィールにプライバシーツール、セキュリティ拡張機能、調査ツール、生産性アプリのインストール履歴を、ユーザーの認識なしに結び付ける
    • LinkedIn と Chrome を使用していれば、この収集は現在進行形で起きている

APFC と高度な JavaScript フィンガープリンティング

  • 拡張機能スキャンは単独の機能ではなく、LinkedIn が内部で APFC と呼ぶ、より広範なデバイスフィンガープリンティングシステムの一部である
  • APFC は Anti-fraud Platform Features Collection の略で、内部では DNA、Device Network Analysis とも呼ばれる
  • LinkedIn はこうした追跡手法について、拡張機能スキャンよりは公開しているほうだが、これらの手法自体は商用 Web サイトに広く含まれている
  • このシステムは訪問ごとに 48個のブラウザー・デバイス特性 を収集する
  • 収集項目には、canvas fingerprint、WebGL レンダラーとパラメータ、オーディオ処理挙動、インストール済みフォント、画面解像度、ピクセル比、ハードウェア並列性、デバイスメモリ、バッテリー残量、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 フィールドを通じて内部ファイルを Web ページに公開できるため、これが必要になる
  • 拡張機能がインストールされ、かつ特定ファイルをアクセス可能と宣言していれば、chrome-extension://{id}/{file} への fetch() リクエストは成功する
  • インストールされていなければ、Chrome がリクエストをブロックする
  • LinkedIn は一覧にある 6,278件 の拡張機能それぞれについて、特定のアクセス可能ファイルを特定して直接検出している
  • 一覧は継続的に保守・拡張されており、Chrome Web Store の拡張パッケージをクロールし、各マニフェストから Web アクセス可能リソースを解析して検出対象を追加するツールがあったとみられる

2つのスキャンモードと Spectroscopy

  • 拡張機能スキャンは2つのモードで動作する
  • 1つ目のモードは Promise.allSettled() を使ってすべてのリクエストを同時送信し、対象拡張機能全体を並列に検出する
  • 2つ目のモードは、各リクエストの間に設定可能な遅延を入れて順次送信し、ネットワーク活動を時間的に分散させることで、監視ツールから見えにくくする
  • LinkedIn は内部機能フラグを使ってこの2つのモードを切り替えられる
  • スキャンは requestIdleCallback で遅延実行されることもあり、ブラウザーがアイドル状態のときに動くため、ユーザーが性能への影響に気付きにくい
  • Spectroscopy という第2の検出システムは、拡張機能一覧とは独立して動作する
  • Spectroscopy は DOM ツリー全体を走査し、すべてのテキストノードと要素属性にある chrome-extension:// URL 参照を検査する
  • この方式なら、LinkedIn のハードコード一覧にない拡張機能でも、ページを変更するものは検出できる
  • 2つのシステムを組み合わせることで、インストール済み拡張機能と、実際にページと相互作用する拡張機能の両方を包括できる

テレメトリー送信

  • 2つの検出システムは、同じテレメトリーパイプラインへ結果を送る
  • 検出された拡張機能 ID は AedEventSpectroscopyEvent オブジェクトとしてパッケージ化される
  • これらのオブジェクトは 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件のコメント

 
GN⁺ 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は、俺がインストールした拡張機能の一覧をあらゆるウェブサイトに教えるんだ?

    • 正確には、そのまま伝えているわけではない。拡張機能のIDと、その拡張機能内に存在すると知られているファイルの一覧を作り、サイトが各組み合わせを順番に試してそのファイルを読み込もうとする
      エラーにならなければ、その拡張機能がインストールされていると分かる。巧妙で手間のかかる方法だが、こうしたことを防ぐための安全対策を回避している
      これを使う理由は、利用規約を回避する既知のスクレイパー拡張機能のユーザーをブロックするためだと読んだが、完全には納得していない
    • 原文で該当する箇所はこれだ:
      「Chrome 拡張機能は manifest.json の web_accessible_resources フィールドを通じて内部ファイルをウェブページに公開できる。拡張機能がインストールされていて、リソースが公開されていれば、chrome-extension://{id}/{file} への fetch() リクエストは成功する。インストールされていなければ Chrome がリクエストをブロックし、promise は reject される。
      LinkedIn はリスト内のすべての拡張機能をこの方法でテストしている。」
    • ウェブブラウザが何十年にもわたってやらかしてきたひどいセキュリティ上の失敗についても、同じことを問える
    • その情報はウェブサイトに提供されているのか? 特定の拡張機能がインストールされているときだけ現れる挙動を利用して、自分で検出する新しいハックをしているのかと思っていた
      でも6,300個の拡張機能についてそれをやるのは手間がかかりすぎる。こういうのをサービスとして提供しているところがあるのだろうか?
    • Brave はこれを明示的にブロックしている
  • みんな、職場でこういうものを実装しろと言われたら何を選ぶ? 反対して踏みとどまり職を失うのか、それとも従って職を守るのか
    実務者として、テレメトリと監視の境界線はどこに引くべきなんだろう?

    • LinkedIn、Meta、あるいはサウジやイスラエルの資金が入っているところでは働かない方を選ぶ。仕事探しは少し難しくなるが、夜はもっとよく眠れる
    • 3つ目の選択肢もある。やると言っておいて、わざとできないようにするか、延々と引き延ばすことだ。故意に仕事を台無しにしたと証明するのは難しい
      ただ、そんな駆け引きをしているなら、新しい仕事を探す時なのかもしれない ;)
    • 匿名で世の中に何が起きようとしているか知らせることも選択肢だと思う。そうすれば職は維持しつつ、人々は少なくとも知ることができる
      ただし、その事実を知っているのが3人くらいしかいないなら、すぐに誰だか割れてしまうかもしれない
    • 私も同じことを考える。簡単に別の仕事を見つけられず、医療保険や金銭的な理由でその仕事が必要な人たちが作ったのかもしれない。給料でなんとか食いつないでいる状況かもしれないし
      似た立場のマネージャーが指示し、その上の管理職は売上増しか見ておらず手段は気にしない、という構造なのかもしれない。それでもどこかで「私たちは今いったい何をしているんだ?」と言う人がいなければならない気がするが、奇妙だ
      質問に答えるなら、もちろん反対する。今の私は、深刻な代償なしにそう選べるほど恵まれている。とはいえ、HN に出てきて「はい、私は道徳心がありません!」なんて言う人がいるだろうか? バーナーアカウントでも、本当にそうかは分からないだろう
    • 正直、私なら実装すると思う。すべてのウェブサイトにインストール済み拡張機能を知らせてしまうのはChrome の責任だ。いずれにせよ、ユーザーに害があるわけでもないし
  • 原文で私が見つけた最も関連する箇所はこれだ:
    「Chrome 拡張機能は manifest.json の web_accessible_resources フィールドを通じて内部ファイルをウェブページに公開できる。拡張機能がインストールされていて、リソースが公開されていれば、chrome-extension://{id}/{file} への fetch() リクエストは成功する。インストールされていなければ Chrome がリクエストをブロックし、promise は reject される。
    LinkedIn はリスト内のすべての拡張機能をこの方法でテストしている。」

    • だとすると、こうした問い合わせにランダムで yes / no を返すような偽のインストール済み拡張機能を作れるのだろうか? LinkedIn や他のフィンガープリンティングサイトがどのファイルを試しているかはかなり明確で、元記事の著者が言うように観察できる
      同じファイルを試している他のサイトがどこかを見るのも面白そうだが、すでに誰か調べただろうか?
    • サイトから来たコードであって、拡張機能から来たコードでもないのに、そこへアクセスできるようにしておくべきではない気がする
  • これはデバイス・フィンガープリンティングではかなり標準的な慣行だ。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 アカウントを削除したら、人生が良くなった

    • 今仕事がある人だから言えることだ。LinkedIn アカウントなしでの求職はそんなに簡単ではない