Show HN: Little Rat - 他の拡張機能のネットワーク呼び出しを監視するChrome拡張機能
(github.com/dnakov)- Little Ratは、他のChrome拡張機能のネットワーク呼び出しを監視し、必要に応じてブロックする小さなChrome拡張機能
- 他の拡張機能のトラフィックの検知とブロックは、
chrome://flags/#extensions-on-chrome-urlsの extensions-on-chrome-urls フラグを有効にするか、Chromeを--extensions-on-chrome-urls付きで実行することで可能 - 手動インストールでは、GitHubのZIPをダウンロードして展開し、Chromium/Chrome ExtensionsのDeveloper modeを有効にして、
little-rat-mainディレクトリの Load unpacked extension 手順を使用する
1件のコメント
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
よくできた拡張機能なら通知はたまにしか出ないはずだし、サーバーが必要な拡張機能なら、ユーザーがサーバーと通信すると予想するタイミングで出るはず。キー入力や怪しいデータを送る拡張機能は、とても簡単に目につくだろう
ただし URL にワイルドカードを入れられるし、すべての URL を意味する特別な値もあったと思う。それでも、そのような権限が必要な拡張機能は多くないはず
たとえば拡張機能自身がリクエストを作れなくても、Web ページの DOM を変更する権限があれば、Web ページに代わりにリクエストを送らせる方法はいくらでもある
この拡張機能はインストールがそれほど簡単ではないので、実際にキャプチャされたネットワークイベントを示すスクリーンショットを追加するとよさそう。現在のスクリーンショットは最も興味深い機能を隠している
その後、通常のブラウザ画面に戻ってアドレスバー右側のパズルピース型の拡張機能アイコンを押し、Little Rat の横にある小さなピンのアイコンを押すとインストールされ、拡張機能アイコンの一覧に表示される
すごい。正直、これが可能だということに驚いた
これらの API が正確にどんなデータを提供するのかはよく分からないが、拡張機能が他の拡張機能のリクエストにアクセスできるなら、パスワードマネージャー拡張機能や認証トークンを使う拡張機能にセキュリティ上の懸念が生じるのでは?
良い。こういうものは chrome:// URL として存在すべきな気がする
よさそうだが、Firefox への移植計画があるのか気になる
Firefox で同じことをしてくれる代替手段を知っている人はいる?
Mozilla が「おすすめ」拡張機能で明白な拡張機能ポリシー違反をかなり多く見逃していることに驚くはず
[1]: https://firefox-source-docs.mozilla.org/devtools-user/browse...
[2]: https://firefox-source-docs.mozilla.org/networking/http/logg...
[3]: https://firefox-source-docs.mozilla.org/devtools-user/about_...
var chrome = browser;を追加するだけでも Firefox で動作する可能性がある。Firefox 拡張 API は、少し違いがあるだけの Chrome Extension APIs のコピーに近いChrome Store に載ったら使ってみる
declarativeNetRequest.onRuleMatchedDebug[0] を使っているが、これはデバッグ専用に見えるので、Chrome Web Store で許可されるかは疑問0: https://github.com/dnakov/little-rat/blob/f0b9b6be39af9fe7f4...
なぜ Chrome Store にはないの?
chrome.declarativeNetRequestを使っているからで、これは uBlock も使っている APIすっきりしているが、この部分はもっと慎重に扱うべき: https://github.com/dnakov/little-rat/blob/main/popup.js#L36
他の拡張機能が細工したリクエスト、ID、名前でここに XSS を注入できるかもしれない、と心配したくない
unsafe-inlineを許可しておらず、拡張機能 ID は Chrome が自動生成するネットワーク呼び出しがないという事実だけでは、拡張機能が安全だとは証明されない。非公開にしておきたいデータをキャッシュしておき、定期的に送ることもできる