«前の日記(2006-05-01 (月)) 最新 次の日記(2006-05-05 (金))»  

まちゅダイアリー


2006-05-02 (火)

Greasemonkey の危険性

FireFox には、 JavaScript を使って Web ブラウザ(で見ている Web ページ)の機能を拡張する Greasemonkey という拡張機能がある。 この Greasemonkey 用スクリプトの一つに、Web ページ内の Amazon アソシエイト ID をスクリプト作者のものに書き換える機能が入っていたらしい

この行為(クライアントのプログラムなどが Web ページのアソシエイトIDを書き換えること)自体は Amazon アソシエイトの規約違反らしいので別にどうでもいい。 でも、これを発端に「greasemonkeyスクリプトは危険なことができるので、自分でソースを読んで安全性を確認できる人以外は使用しないで」という意見がでている(以下引用)。

greasemonkeyというのはソースを読むのが前提なので、今回の件について言えばソースを読まずに使っていて文句を言うのはお門違いだと思います。

Greasemonkey はソースを読める人しか使うべきではないというのは同意。 Greasemonkey のスクリプトをインストールすることは、実行形式 (.exe) のプログラムをインストールするのと同じくらいの危険性があると思っている。 もちろん、 JavaScript を使って Web ブラウザの中で動くものなので、 exe ファイルと違ってハードディスクのフォーマットができるわけじゃない。 でも、 Web 上で入力したパスワードを盗み出したりということは、簡単にできてしまう。 JavaScript と聞くと安全なイメージがあるけど、 Greasemonkey に限ってはインストールは慎重になったほうがいい。

でも、だからと言って「文句を言うのはお門違い」というのは言いすぎだと思う。 インターネットから取得した実行ファイルやメールの添付ファイルの危険性は散々言われていることで、適切な対策をせずに被害にあった場合は利用者にも過失があると言えるけど、 Greasemonkey についてはその便利さだけに焦点が当てられていて、危険性や「greasemonkeyというのはソースを読むのが前提」というのがちゃんと周知されていない。 そういう状況で、 Greasemonkey を使った人が被害を受けたとしても、その人だけの責任とは言えないだろう。

個人的には、使う前にソースを読まなきゃいけないような Greasemonkey は使えないと思っているし、使っていない。 そもそも、ソースを読めるからといって、そのプログラムの安全性を評価できる訳じゃないしね。 これは別に Greasemonkey スクリプトに限った話ではなくて、一般的なソフトウェア(例えば FireFox の拡張機能や IE の ActiveX )についても同じなんだけど、 FireFox の拡張機能や ActiveX などが署名を使ってプログラムの安全性を担保しようとしているのに対して、 Greasemonkey にはそういう仕組みが無いことが問題かと。

Greasemonkey の危険性が周知されていない件

Greasemonkey で検索すると、Mozilla Firefox まとめサイトが先頭に出てくる。 このページに書かれている Greasemonkey の説明を以下に引用する。

Greasemonkeyは指定ドメイン・URIに対しJavaScriptによるユーザーサイドスクリプトを追加することの出来る拡張です。ユーザースタイルシートではできない細かな動作指定が出来ます。

これ以外に、古い Greasemonkey に脆弱性があることは書かれているけど、 Greasemonkey スクリプトの危険性への言及は無い。

次がはてな - Greasemonkeyのページ。

ウェブページの見た目や機能をブラウザ側でカスタマイズできるFirefoxの拡張機能です。好みのユーザースクリプトを追加することでページを読みやすくしたり、便利な機能を利用することができます。 Greasemonkeyを使えば、今まで出来なかったサイトの使い方も可能になります。

こっちも危険性の説明は無い。

その次に出てくるのが CNET Japan の Firefox拡張の「Greasemonkey」が人気上昇中--セキュリティリスクという記事。 最初の方は Web サイトの広告を消すようなスクリプトの是非への言及がメインで、セキュリティリスクの具体的な危険性は2ページ目の後半に入ってから。

「素性もわからず信用できない人間がつくったスクリプトは、絶対にインストールしたり利用したりしてはいけない。もし疑わしいものを見つけたら、Operaの掲示板やニューズグループ、メーリングリストで質問し、自分が使って見たいと考えているスクリプトの出来映えや、そのスクリプトに悪用される可能性がないかどうかを確かめるように」

「悪い連中が、このツールを利用して、ログインフォームでユーザー名やパスワードを盗むためのスクリプトを作成する可能性が高い。」

GreasemonkeyをつくったのはAaron Boodmanというシアトル在住の26歳のプログラマだ。同氏はこのエクステンションのセキュリティに関する問題についてはコメントを差し控えた。

検索結果の上位サイトでセキュリティに言及しているのはここくらいだった。 はてなキーワードでも、危険性の言及は無い。

Firefoxでユーザーサイドスクリプトを実現するためのエクステンション(拡張機能?)の一つで、読み込んだウェブページをクライアント(ユーザー)側でカスタマイズ可能にするもの。他のブラウザでは同様の機能が、Opera8では標準で、IEではTrixieを導入することで、実現出来る。

とりあえず、はてなキーワードに追記しておこうかな。

追記

ajiyoshi さんの所に続きの話が。

さて、僕は本気でソース読めないならグリモン使うな!と思ってるわけではありません。そういうことを言い出すとWindowsなんて絶対使えないし、Linuxでもソース全部読んで把握しなきゃ怖くてつかえたもんじゃないです。

うーん。釣られたかも…。

追記2

話題の発端となった Greasemonkey スクリプトは、他の人のアソシエイトIDを上書きしないという話もある。 スクリプトのソースを読むと、以下のURLにマッチした場合に作者のアソシエイトIDを付与している。

uri.match(/https?:\/\/[^\/]*amazon\.co\.jp\/.*ASIN\/(\w{10})([\/&].*|)$/);
!uri.match(/(\-22\/|authorized)/)

でもこれって、 yuco さんのページの Amazon リンク(下記)にもマッチしちゃう(yuco さんのアソシエイトIDがスクリプト作者のアソシエイトIDに置き換えられる)んじゃないかな?

http://www.amazon.co.jp/exec/obidos/redirect?tag=yuconet0c-22&creative=2251&camp=19&adid=1RW7XDVA4WTKA54PT9CR&link_code=bn1&path=ASIN/477580376X
Tags: security memo
本日のツッコミ(全2件) [ツッコミを入れる]
Tiger (2006-05-02 (火) 16:13)

『URL中に -22/ が含まれている場合、既にIDが付与されているものと判断していたのですが、URLが -22 で完結している場合は置き換えてしまってました。とりあえずこの問題には修正を行いました。』だそうです。<br><br>http://d.hatena.ne.jp/kusigahama/20060322#1143002228 のコメント欄参照。

まちゅ (2006-05-05 (金) 17:25)

発端は作者のうっかりだったのですね。<br>ともあれ、これが Greasemonkey の危険性について考えるキッカケになったのは良かったと思います。