DRYな備忘録

Don't Repeat Yourself.

本当は怖いChrome拡張機能(作ってみたら確かにヤバかった)

otiai10です。最近はフロントエンドのTypeScriptを書くお仕事をしています。個人的に艦これウィジェットやtwickというChrome拡張を作ってたりもします。先に言っておきますが、これらはどちらもGithubでソースコードを公開しており、悪いことしようが無いです。

端的に言うと、Chrome拡張はヤバいです。何でもできちゃう。

どんくらいヤバいか知ってもらうためにどうしようか考えた結果、ヤバいChrome拡張を作りました。30分かかんなかったです。

https://github.com/otiai10/chrome-twitter-hijack-sample (「レポジトリをforkして悪用する人間が出てくるかもしれない」とのご指摘を頂いたので、これを削除します)

git cloneしてchrome://extensionsからパッケージ化されていない拡張機能を読み込むでこのrepoを選択すれば、ヤバい体験ができます。 この30分かからず作った拡張がどんくらいヤバいかというと

と言っても、ウェブの知識がちょっとある人なら理解できる程度のコードです。

Chrome拡張はヤバいです。悪い事でも何でもできちゃう。

もちろんサーバサイドの情報やセッションIDを抜くことはできませんが、ユーザ名の入力とパスワードの入力がクライアントサイドの機能である以上は「クライアントサイドを拡張できる(クライアントサイドJavaScriptとして紛れ込む)」Chrome拡張は、それを抜き放題です。

ぶっちゃけページに書かれてるHTMLなら取得・書き換え自由自在なので、そういえば最近は「ページ内のamazonリンクを、全部自分のアフィリエイトのリンクに書き換えてたChrome拡張」を作って炎上した案件を見ました。ソースは忘れた。

不特定多数のユーザに対して、不特定多数のウェブサービスで「クライアントサイドを拡張できる(クライアントサイドJavaScriptとして紛れ込むことができる)」というChrome拡張は、なんか存在自体がヤバい気がして来たんですが、実際どうなんでしょう。ちょっと不勉強なので誰か教えてください。

いずれにしても、ホイホイと気軽にChrome拡張をインストールしない方がいいと思います。最低限

  • レビューちゃんと見とく
  • 開発者ページがあれば見とく
  • インストール時に要求される権限を確認する

さらに可能なら

僕はChrome拡張けっこう好きなので使うんですが、ちょっと怖いですね。みんなどういう判断基準でChrome拡張入れてるんだろう。気になる。

Chrome拡張つくる側として、今一度セキュリティとかちゃんと勉強せねばなと思いました。

追記

*1:ソースコード見る方法 on MacOS: ここを開きます~/Library/Application\ Support/Google/Chrome/Default/Extensions/