2 ポイント 投稿者 GN⁺ 2023-08-15 | 1件のコメント | WhatsAppで共有
  • Little Ratは、他のChrome拡張機能のネットワーク呼び出しを監視し、必要に応じてブロックする小さなChrome拡張機能
  • 他の拡張機能のトラフィックの検知とブロックは、chrome://flags/#extensions-on-chrome-urlsextensions-on-chrome-urls フラグを有効にするか、Chromeを --extensions-on-chrome-urls 付きで実行することで可能
  • 手動インストールでは、GitHubのZIPをダウンロードして展開し、Chromium/Chrome ExtensionsのDeveloper modeを有効にして、little-rat-main ディレクトリの Load unpacked extension 手順を使用する

1件のコメント

 
GN⁺ 2023-08-15
Hacker News のコメント
  • これはサードパーティ拡張機能というより、Firefox や Chrome の標準機能だといいと思う。そうすれば採用率が十分に高くなり、他のブラウザも気にするようになるはず。特定の拡張機能には、ヘッダーを変更できない状態で、決められた静的 URL への GET リクエストだけを許可したい
    そうすればデータ更新は可能にしつつ、漏えいリスクは下げられる。拡張機能によってはローカルブラウザ内だけで動作するので、ネットワークアクセスがまったく不要なものもある。ただ、ページソースを変更できるならデータ送信を回避できてしまうので、ブラウザがやらないのはそのためのように思う。それでも諦めて Chrome 拡張機能に任せるよりは、試してみるほうがましだと思う

    • 観察だけなら可能。現在のページ用のデバッガーではなく、ブラウザ用デバッガーを開く必要がある
      UI インスペクションとほぼ同じ手順でリモートデバッグを有効にし、その後 Browser Toolbox を起動すればよい: https://superuser.com/questions/1608096/how-to-inspect-firef...
      タブ表示をテーマ以上に変えたいとき、user-chrome CSS ファイルに何が必要かを調べるのにも便利。ただし user-chrome CSS の利用自体は少し面倒
      拡張機能のネットワークリクエストを見えるようにするには multi-process mode に切り替える必要があり、動作としてはおおむね納得できる
      たとえばテストでクリックした任意のブロックリストを uBlock が取得している様子: https://i.imgur.com/wBYbBM2.png
      Firefox 自体がバックグラウンドで safe-browsing リストを更新している様子: https://i.imgur.com/JYxWwjW.png
    • GET リクエストでも、パスとクエリ文字列パラメータでデータを漏えいできる。そこまで防いでも、タイミングや頻度で活動を示唆するモールス信号のような通信を作れるし、リクエストが十分に多ければメガバイト単位のデータも簡単に送信できる
    • ページ内にすでにあった URL を繰り返す程度ではない HTTP リクエストを拡張機能が作るなら、リクエスト本文を読みやすく整えたトースト通知を表示すべきだと思う
      よくできた拡張機能なら通知はたまにしか出ないはずだし、サーバーが必要な拡張機能なら、ユーザーがサーバーと通信すると予想するタイミングで出るはず。キー入力や怪しいデータを送る拡張機能は、とても簡単に目につくだろう
    • 記憶では、拡張機能はマニフェストの権限セクションに指定されていない URL にはアクセスできない。Firefox は権限確認ダイアログでそれらの URL を表示しているはず
      ただし URL にワイルドカードを入れられるし、すべての URL を意味する特別な値もあったと思う。それでも、そのような権限が必要な拡張機能は多くないはず
    • ブラウザベンダーがこういう機能を提供しない理由は、どんな保護策を入れても回避が簡単だからではないかと思う
      たとえば拡張機能自身がリクエストを作れなくても、Web ページの DOM を変更する権限があれば、Web ページに代わりにリクエストを送らせる方法はいくらでもある
  • この拡張機能はインストールがそれほど簡単ではないので、実際にキャプチャされたネットワークイベントを示すスクリーンショットを追加するとよさそう。現在のスクリーンショットは最も興味深い機能を隠している

    • Google Chrome を開き、右上の三点メニュー → Extensions → Manage Extensions → 右上の Developer Mode トグル → 左上の “Load Packged” ボタン → 展開した .zip ディレクトリを読み込めばよい
      その後、通常のブラウザ画面に戻ってアドレスバー右側のパズルピース型の拡張機能アイコンを押し、Little Rat の横にある小さなピンのアイコンを押すとインストールされ、拡張機能アイコンの一覧に表示される
  • すごい。正直、これが可能だということに驚いた
    これらの API が正確にどんなデータを提供するのかはよく分からないが、拡張機能が他の拡張機能のリクエストにアクセスできるなら、パスワードマネージャー拡張機能や認証トークンを使う拡張機能にセキュリティ上の懸念が生じるのでは?

  • 良い。こういうものは chrome:// URL として存在すべきな気がする

    • 拡張機能はセキュリティとプライバシーの面でこれほど大きなリスクなのに、なぜ Chromium の標準機能ではないのかが真っ先に思い浮かんだ
  • よさそうだが、Firefox への移植計画があるのか気になる
    Firefox で同じことをしてくれる代替手段を知っている人はいる?

  • Chrome Store に載ったら使ってみる

    • declarativeNetRequest.onRuleMatchedDebug[0] を使っているが、これはデバッグ専用に見えるので、Chrome Web Store で許可されるかは疑問
      0: https://github.com/dnakov/little-rat/blob/f0b9b6be39af9fe7f4...
    • Releases に行って crx ファイルを右クリックして保存し、Chrome の Extensions に行ってその crx ファイルをドラッグ&ドロップすればよい
  • なぜ Chrome Store にはないの?

    • 現在レビュー中。chrome.declarativeNetRequest を使っているからで、これは uBlock も使っている API
  • すっきりしているが、この部分はもっと慎重に扱うべき: https://github.com/dnakov/little-rat/blob/main/popup.js#L36
    他の拡張機能が細工したリクエスト、ID、名前でここに XSS を注入できるかもしれない、と心配したくない

    • とても良い指摘だが、コンテンツセキュリティポリシーは unsafe-inline を許可しておらず、拡張機能 ID は Chrome が自動生成する
  • ネットワーク呼び出しがないという事実だけでは、拡張機能が安全だとは証明されない。非公開にしておきたいデータをキャッシュしておき、定期的に送ることもできる