otiai10です。最近はフロントエンドのTypeScriptを書くお仕事をしています。個人的に艦これウィジェットやtwickというChrome拡張を作ってたりもします。先に言っておきますが、これらはどちらもGithubでソースコードを公開しており、悪いことしようが無いです。
端的に言うと、Chrome拡張はヤバいです。何でもできちゃう。
どんくらいヤバいか知ってもらうためにどうしようか考えた結果、ヤバいChrome拡張を作りました。30分かかんなかったです。
https://github.com/otiai10/chrome-twitter-hijack-sample
(「レポジトリをforkして悪用する人間が出てくるかもしれない」とのご指摘を頂いたので、これを削除します)
git clone
してchrome://extensions
からパッケージ化されていない拡張機能を読み込む
でこのrepoを選択すれば、ヤバい体験ができます。
この30分かからず作った拡張がどんくらいヤバいかというと
はい、Twitterのユーザ名とパスワードひっこぬくChrome拡張できた。
#本当は怖いChrome拡張機能
http://t.co/bQ9XasZXtW pic.twitter.com/X1joE30xCB
— お寿司大好き (@otiai10) 2014, 3月 2
と言っても、ウェブの知識がちょっとある人なら理解できる程度のコードです。
Chrome拡張はヤバいです。悪い事でも何でもできちゃう。
もちろんサーバサイドの情報やセッションIDを抜くことはできませんが、ユーザ名の入力とパスワードの入力がクライアントサイドの機能である以上は「クライアントサイドを拡張できる(クライアントサイドJavaScriptとして紛れ込む)」Chrome拡張は、それを抜き放題です。
ぶっちゃけページに書かれてるHTMLなら取得・書き換え自由自在なので、そういえば最近は「ページ内のamazonリンクを、全部自分のアフィリエイトのリンクに書き換えてたChrome拡張」を作って炎上した案件を見ました。ソースは忘れた。
不特定多数のユーザに対して、不特定多数のウェブサービスで「クライアントサイドを拡張できる(クライアントサイドJavaScriptとして紛れ込むことができる)」というChrome拡張は、なんか存在自体がヤバい気がして来たんですが、実際どうなんでしょう。ちょっと不勉強なので誰か教えてください。
いずれにしても、ホイホイと気軽にChrome拡張をインストールしない方がいいと思います。最低限
- レビューちゃんと見とく
- 開発者ページがあれば見とく
- インストール時に要求される権限を確認する
さらに可能なら
僕はChrome拡張けっこう好きなので使うんですが、ちょっと怖いですね。みんなどういう判断基準でChrome拡張入れてるんだろう。気になる。
Chrome拡張つくる側として、今一度セキュリティとかちゃんと勉強せねばなと思いました。
追記
— なめこ (@nameko_121) 2014, 3月 2