インストール済みのChrome拡張機能の所有者変更を検知する
(github.com/classvsoftware)- Under New Managementは、インストール済みブラウザ拡張機能の開発者情報がChrome Web StoreまたはFirefox Add-onsで変更されたかを定期的に確認する拡張機能
- 開発者情報が変わると、拡張機能アイコンに赤いバッジを表示し、ユーザーが所有権の変更に気づけるようにする
- 必要性は、拡張機能の開発者が買収提案を頻繁に受け取り、買収者が既存ユーザーを悪用しようとするケースがほとんどだという問題に端を発している
- ユーザーは、インストール済み拡張機能の所有権が変わり、侵害されている可能性があることに気づかない場合があり、このツールは判断の機会を提供する
- ブラウザは拡張機能マーケットプレイスのドメイン変更に制限を設けているため、開発者情報の確認はExBoost APIサーバーに委任される
拡張機能の所有権変更を検知
- Under New Managementは、インストール済み拡張機能の開発者情報がChrome Web StoreまたはFirefox Add-onsストアで変更されたかを断続的に確認する
- 変更があると拡張機能アイコンに赤いバッジが表示され、ユーザーが所有権の変更を認識できる
- 目的は、ユーザーが自分の使っているソフトウェアについて情報に基づいた判断をする機会を与えること
なぜ必要なのか
- 拡張機能の開発者は、自分の拡張機能を買いたいという提案を継続的に受け取っている
- READMEでは、ほぼすべての場合において購入者には既存ユーザーをだます目的があると述べている
- ユーザーは、インストール済み拡張機能の所有権が変わり、現在は侵害されている可能性があることに気づかない場合がある
インストール方法
- Chromeへのインストール: Chrome Web Store
- Firefoxへのインストール: Firefox Add-ons
- またはprebuilt releaseをダウンロードし、
.zipファイルを展開してdistディレクトリをブラウザに読み込ませることもできる
ソースからビルド
- Under New ManagementはPlasmoを使用している
pnpm install: 依存関係をインストールpnpm dev: ローカル実行pnpm build --zip: リリースビルドpnpm build --target=firefox-mv3: Firefox向けビルド
外部サーバーが必要な理由
- ブラウザは拡張機能マーケットプレイスのドメインを変更することに特別なルールを設けている
- たとえば、
chromewebstore.google.comに対してdeclarative_net_requestルールを設定することはできない - そのため、開発者情報の確認作業はExBoost APIサーバーに委任される
1件のコメント
Hacker News のコメント
拡張機能 ID は、開発者がアプリストアに最初に公開するときに一緒にアップロードした秘密鍵から派生し、その後アップロードする ZIP に別の
key.pemが入っていると ID が変わるただし
key.pemがなければ拡張機能 ID はそのまま維持される。そのため ID が変わった場合、所有者が変わった可能性はあるが、元の所有者が秘密鍵を新しい所有者に渡した可能性もある。Google はアップロードのたびに秘密鍵を要求しないため、新しい所有者はその鍵がなくても変更を配布できる拡張機能エコシステムは興味深いので、この分野のツールも作っている。特定の拡張機能を対象に GitHub リポジトリを作り、更新ごとにリポジトリの変更として記録したうえで、静的解析器と、
evalやpostMessageのような危険なシンクへユーザー入力が流れ込むかを追跡するランタイム汚染解析を走らせてみたい: https://github.com/milesrichardson/crxmon交渉中に、拡張機能は取り下げてソースコードをすべて渡し、自分で配布してもらうつもりだと言ったら、相手は Opera 拡張機能アカウントの認証情報まで渡すことを期待していた。結局取引はやめた。こうしたツールもある程度は有用だが、拡張機能向けのマルウェアスキャナーのほうがより良い、という点には同意する
開発者は秘密鍵で拡張機能やマニフェストに署名し、公開鍵を共有するかアップロードに含めるべきだ。更新も引き続き同じ秘密鍵で署名する必要があり、鍵が変わらない限り、初回アップロードの公開鍵によって同じ秘密鍵が使われたことを検証できる。その後のアップロードに公開鍵が含まれるかどうかは本質的ではない。秘密鍵を売ったり共有したりすれば、他人でも正当に署名された更新を作れるが、これは署名者が秘密鍵を秘密に保たないことから生じるリスクだ。Google であれ誰であれ、秘密鍵を共有すれば拡張機能の出所保証は崩れる
ただ、Google が秘密鍵なしでも新しい所有者に変更の配布を許可するというのが本当に可能なのかは疑問だ。Chrome Web Store は些細なことにも非常に厳しいのに、そういう部分は気にしないというのはおかしい
テスター向けにだけ公開している拡張機能を 3 つ使っており、複数のマシンに簡単にインストールするため、開発者モードや
rsync/robocopyなしで使っている。ところがこの週末、Chrome がある 1 台のマシンでだけ、「Chrome Web Store に登録されておらず、ユーザーに知られず追加された可能性がある」という理由で全部無効化した。強制的に有効にすることもできず、ストアでは「無効」として「今すぐ有効にする」が表示されるが、バナーが消えるだけで、再読み込みするとまた現れる。その Chrome プロファイルは許可リストのアカウントでログインしているChrome Web Store ページのバッジは、開発者である自分のアカウントに制裁はなく、状態は良好だと表示している。許可リストのメールアドレスでログインしていなければ、そのページ自体も見られなかったはずだ。これほど「細かく気にする」一方で、鍵なしの更新は許可するというのは納得できない
CWS は既存の拡張機能の ID を絶対に変えてはならない。ID が拡張機能を一意に識別するものだからだ。ID が変わると Chrome クライアントはその拡張機能の更新を要求できず、CWS と Chrome はユーザーをある拡張機能から別の拡張機能へ移行する機能をサポートしていない
私の知る限り、CWS は初回提出後の ZIP に
key.pemが入っていれば拒否するはずだ。拡張機能 ID が変わったなら、それは同じ拡張機能ではない。新しい所有者が PEM なしでも変更を配布できるというのはおおむね正しいが、開発者が CWS に提出した拡張機能を自分で署名していた場合は、PEM なしでは更新できない。正直、今でも可能な機能なのかは分からないし、昔は開発者が自分のアップロードに使った秘密鍵を失ってインストール基盤を吹き飛ばす巨大な落とし穴だったほぼ全員が、価格さえ合えば結局は同意するだろうし、個人差はどれだけもらえばよいかだけだ
数か月前、YouTube広告を高速にスキップする無料のオープンソース拡張機能を作ってここで共有し、トップページに載った。
1週間もしないうちに、私のShow HN投稿にコメントしていた人がそれをコピーし、Redditで自分のバージョンを宣伝したところ、バイラルになってユーザーが30万人を超えた: https://github.com/rkk3/ad-accelerator/blob/main/lessons_pos...
なぜ無料のオープンソース拡張機能にPRを送らずコピーしたのかと思っていたが、数週間後には複数のサイトで5桁の金額で売ろうとしていた。まだ所有している可能性もあるが、Chrome Storeに登録されている開発者も最初の公開時とは変わっているのが目についた。
背景をすべて理解したわけではないが、その拡張機能は実質的には50行ほどの些細なJavaScriptだ。誰かが盗んだと言うにはかなり大胆だ。アイデア自体に価値はなく、このアイデアが非常に新しいと主張するのも難しい。相手が着想を得たと仮定しても、誰が先に何をしたのかという時系列はそれほど明確ではない。
ただし、YouTubeとChromeがどれだけ長く動作を許すかはまた別の問題で、彼らも快く思わないかもしれない。
「…世界中が君の歌を歌い / 君の絵がすべて飾られたなら / 君のものだったものは今やみんなのものだと覚えておいて / それが正しいとか間違っているとかではないけれど / いくらでもそこにしがみつくことはできる / ただ君だけが落ち着かなくなるだけ…」— Wilcoの「What Light」
本当に有用だが、他の人も言っているように、これはブラウザの組み込み機能であるべきだ。
まだソースコードを深く見てはいないが、所有権の変更があった場合に自動で知らせてくれるのか気になる。リアルタイムである必要はないが、起動時には知らせてくれるのか、それとも手動で確認コマンドを実行する必要があるのか気になる。
数か月前にもこの話題が注目された: https://news.ycombinator.com/item?id=36233068
当時の上位コメントのように、FirefoxとChromeはこうした状況での自動拡張機能アップグレード方針を変えた方がよい。拡張機能が所有権変更を公開した場合はアップグレードにユーザー承認を求め、公開しない場合はユーザーが悪意あるものとして通報できるべきだ。加えて、タイトルにはおそらく「Show HN」が付くべきだと思う。
それ以上に強い通知は侵襲的すぎると判断した。
これは売却時に製品や会社の価値を下げる。ユーザーには優しいが、請求書を払わなければならない制作者には優しくない。
これは笑い事ではない。
かなり人気のあるオープンソースのChrome拡張機能を数年間所有していたが、寄付総額は月のコーヒー代にも満たなかった。
ところが、明らかに悪意ある目的、場合によっては露骨にそう明言するものまで含め、拡張機能を売ってほしいという提案は回数も多く、金額もとんでもなかった。すべて断ったが、このような状況で元の開発者の道徳性だけが唯一のセキュリティ・プライバシー体制になることを期待するのは、まともな判断ではない。
目的にはかなり共感するし、技術的な限界も理解できるが、ユーザーのすべての拡張機能一覧を拡張機能中心の広告ネットワークに送るという点は少し怪しい
外部サーバーが必要な理由として、ブラウザが
chromewebstore.google.comのような拡張機能マーケットのドメイン変更に特殊なルールを設けているため、開発者情報の確認を ExBoost API サーバーに委ねている、とされているhttps://www.extensionboost.com/
ExBoost は、より多くのユーザーとレビューを求めるブラウザ拡張機能の協業ネットワークだと説明している。拡張機能の UI 内に ExBoost スロットを入れ、類似拡張機能の宣伝やレビュー依頼を表示する方式だ
インストールしてある拡張機能の API 結果を見ると、開発者関連のメタデータが出てくる。
chrome.management.get(id)Chrome API を試してみたが、この情報は返さなかったし、manifest.jsonの内容をプログラムから取得する方法もなさそうだ。したがって、現状この拡張機能がやろうとしていることを実現するには、外部ソースが必要ではあるhttps://github.com/classvsoftware/under-new-management/blob/...
https://api.extensionboost.com/v1/developer?extension_ids=gh...
彼らのコードを自分の拡張機能に入れてほしいという内容で、「あなたが私のものを表示すれば、私もあなたのものを表示する。費用は 0、全員が得をする」と言っていた。怪しく見えたのでスパム扱いにしたし、詐欺師たちから受け取っていた他のスパムメールと違って見えなかった
Firefox 拡張機能には Mozilla の推奨拡張機能プログラムがあり、含まれる前に職員のセキュリティ専門家による厳格な技術レビューを受けるとされている: https://support.mozilla.org/en-US/kb/recommended-extensions-...
ただし、サポート文書だけでは、すべてのアップデートが公開前にレビューされるのかは明確ではない。毎回レビューするなら人気の拡張機能についてはこの問題をある程度解決するだろうが、緊急のセキュリティ更新が必要なときにどの程度遅延が生じるのかも気になる
現在の個人的な方針としては、そうしたキュレーション済み拡張機能だけを、すべてのサイトとタブで実行できるようにしている
どれほど人気があったり、よく知られた組織であったりしても、規則を繰り返し破ったりマーケットプレイスの機能を迂回しようとしたりするなら、禁止され得る仕組みのことだ
本当に悪意がある場合には、拡張機能が譲渡される際に Google 開発者アカウントの認証情報そのものを売ることが多いので、そういうケースは検出できない
ずっと昔に adblock をインストールして、とても気に入っていた
新しいマシンを買って再インストールする必要があり、そのとき初めて権限を見たのだが、正気を失いそうなほどだった。広告をブロックするには、私が見ているものを見られなければならない、というのは論理的には正しいが、それを真剣に考えたことはなかった
今は Pi-hole を使っていて、拡張機能は一つも使っていない
それでも望む人に選択肢があるのは良いことだし、人によってリスクプロファイルや懸念は異なる
ある拡張機能はオープンソースで信頼できるが、そうでないものも多く、人々は検証に苦労しているようだ
ブロックリストを提供すると、ブラウザが直接ブロックする。Firefox でも可能なのかは分からない: https://developer.apple.com/documentation/safariservices/cre...
悪性拡張機能の購入者なら、これを避けるために開発者名をそのまま維持すればよいのではないかと思う。あるいは Chrome Extension Store は開発者名を厳格に管理しているのだろうか?
たとえば悪意ある国家主体が uBlock の作者に数千万ドルを提示し、多くのブラウザへのアクセス権を得ようとする可能性がある。経済性がどうなのかは分からないが、もっとニッチな拡張機能ならはるかに安く狙えるだろう
この問題が他のブラウザよりも Chrome で深刻なのか気になります
私が使っている唯一のブラウザ拡張機能は、試験監督ソフトウェアの HonorLock で、必須なので使わざるを得ません。拡張機能が Chrome 専用なので、HonorLock のために時々 Chrome を使います。Safari でインストールリンクを開くと、Chrome をインストールするよう表示されます: https://app.honorlock.com/install/extension
Chrome 拡張機能にだけ HonorLock のユースケースを可能にしつつ、この記事のツールをより有用にするような特性があるのか気になります