GoogleChrome拡張のコンテンツスクリプトでUIを追加することについて

ViChromeというGoogleChrome拡張機能がある。この拡張のセキュリティリスクを一つ発見した話。

問題は既にversion 0.6.2 で解決されているので、話に出しても大丈夫だよね。

既知のノウハウなのかもしれないが、個人的には「おお、なるほど!」と思ったので、拡張を作る人に重要な工夫点なのではないかと思い周知の意味を込めて。

ViChromeという拡張はFirefoxのVimperatorの様なことを目指した拡張機能だ。vimの様なキーバインドコマンドラインの機能を備えている。んで、問題はコマンドラインの実装部分。GoogleChrome拡張では、Chrome自身のUIの変更は限られている。コマンドラインの様な特殊なUIを実装するにはどうしてもコンテンツ側にDOM要素を追加する必要が出てくる。

コンテンツ側にDOM要素を追加するということは、コンテンツ側のスクリプト等でアクセスが可能になるということだ。これは場合によってはセキュリティリスクとなる。ViChromeで言えば、コマンドラインとしてテキストボックスがあり、そこへのアクセスを許してしまうと勝手にコマンドを実行される可能性がでてくる。

それを実例で示したのが上記Issueとなる。

細かいことは僕はGoogleChrome拡張に詳しくないし、ViChromeのコードはCoffeeScriptで書かれていて読むこともできないが、コメントにあるとおり、

今までコンテンツに直接追加していた要素をiframeに移動しました。iframeのsrcはchrome-extensions://内なのでドメイン不一致によりコンテンツ側からアクセスできなくなります。

ということをして解決させている。