Home > Latest topics

Latest topics > 署名されていないスクリプトで各種の特権を取得する方法

宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

署名されていないスクリプトで各種の特権を取得する方法 - Jun 27, 2006

JavaScriptで危険な事や妙ちきりんな事をしてみたい人のための覚え書き。一般的なユーザの立場の人はあんまり見ない方がいい話。興味本位で触ると痛い目を見かねない話。

JavaScriptで親ウィンドウや最後のウィンドウを閉じようとしたり、他のドメインへの通信、XPConnectなどなど危険な操作をしようとすると、Firefoxではエラーになる。これはFirefoxに備わった最も基本的なセキュリティ機構の一つだ。

拡張機能やFirefox自身のコードもJavaScriptだけれども、これらはChrome URLでアクセスされる登録済みのスクリプトなので、特別に権限が与えられている。そのため、上記のような操作を何の制限もなしに行える。

登録されていないリソースでは、その都度「これこれこういう操作を行っても良いですか?」とユーザにお伺いを立てて(特権を取得して)からでないと、上記のような操作ができない。そのお伺いを立てるのが、netscape.security.PrivilegeManager.enablePrivilege()というコードだ。

このコード、file://といったFile URLで読み込むリソース(つまりローカルファイル)では動くのだけれども、いつの頃からかhttp://といったURIでアクセスするようなリソースでは使えなくなってしまった。これはセキュリティ向上のために施された変更によるものらしい。

署名されたスクリプトと特権についてのmozilla.orgの技術文書(2006.6.27現在では英語版のみ)によれば、先のような特権の取得を求めるコードは、現在は電子署名済みのスクリプトでしか利用できなくなったそうな。しかし、Codebase Principal(s)といういくらか弱いセキュリティ機構を使うことによって、署名されていないリモートのスクリプトでも特権を取得できるようになるらしい。

やりかたはというと、隠し設定の「signed.applets.codebase_principal_support」の値を「true」にするだけ(デフォルトでは「false」)。これでCodebase Principalが有効になる。

ただし言うまでもないけれども、リモートのあらゆるスクリプトで特権を取得できるようにするということは、悪意ある攻撃者が用意した罠についうっかりで引っかかってしまう危険性を高めてしまう。ましてや、ウザいからって「以後確認しない」チェックボックスをチェックしてしまうなんてのは問題外なわけで。

まあ、一つの非常手段といったところ。

分類:Web技術 > JavaScript, , , , , , 時刻:23:05 | Comments/Trackbacks (4) | Edit

Comments/Trackbacks

no title

 うっかりして、コメントに失敗してしまいました orz

 実は私はピロさんも執筆に参加した、上の本の appendix を読んでいろんな危機感を持っている人です。

> このコード、file://〜といったFile URLで読み込むリソース(つまりローカルファイル)では動くのだけれども、いつの頃からかhttp:://〜といったURIでアクセスするようなリソースでは使えなくなってしまった。これはセキュリティ向上のために施された変更によるものらしい。

 ということで、まことに結構な仕様変更なのですけど、ピロさんが以前 Mozilla Party でデモしたように、拡張って何でもできるじゃないですか。

 いわば拡張をインストールする行為って、Firefox や Thunderbird を改造しているのと全く変りがないじゃないですか。

 つまりうっかり悪意ある拡張をインストールしてしまったら、その時点で拡張内のスクリプトは chrome 特権で実行されてしまい Firefox や Thunderbird は脆弱になってしまうわけで、ピロさんが今回エントリされている機能の改善も回避されてしまう恐れがあると思うんです。

 それに現在、拡張で署名されているものって一つもありませんよね。もちろん署名されているからって、その拡張が安全な拡張であることであることを担保しているわけでもないし。

 なんでみんな安易に「拡張が便利」だ、と拡張をインストールするリスクについて一言も触れずに勧める現在の状況に疑問を感じてるんです。

 自分のサイトでも、安易に拡張をインストールしちゃダメだよ、拡張のインストールは慎重にね、とアピールしてるんですけど、弱小サイトなのでたぶん誰も見てない....

 それでそういった警告をもじら組フォーラムなんかに書くと、あそこでは絶対に寄ってたかって叩かれるし。

 どうしたらいいんだろう、と結構悩んでいます。

 私の言ってることが単なる心配性のたわごとだったらいいんですけどね。

Commented by おおやま at 2006/06/28 (Wed) 05:53:41

no title

そんなに酷いんでしょうか、も組のフォーラム……自分は見てないのでよく知らないんですが。
も組でも、btmさん(くみちょ)とかは、僕と同じような懸念を持たれてるようです。ある程度知識のある人にとっては常識と言ってもいい事ですし。

フォーラムでは、そこまで事情をよく飲み込めていない、普通の人よりFirefoxに肩入れしてる人が、過剰反応してしまっているのかもしれませんね。

自分の配布している物も署名されていないものばかりなので、手が空き次第早急に、署名の方法をしっかり調べたいとは思っています。

ちなみに、Google Toolbarなど、拡張機能の中にも署名された物はいくつかあります。

Commented by Piro at 2006/06/28 (Wed) 11:13:31

no title

日記を拝見しました。

Mozilla/Firefoxの場合、支えてきた人間が「中・上級者」「技術系」であったということが、現在の状況につながっているように思います。

そもそもの出自が技術者のオモチャなのであって、プロダクトもコミュニティも自己完結してるんですよね。最新のIEに比べれば穴だらけのセキュリティ機構も、自己完結した開発者且つ利用者の人達にとっては、それで必要充分なのでしょう。「よくわからないのに安易に許可してしまう」ような人を、そもそも利用者としてきちんと想定していない(少しずつ改善されてはいるのかな……どうなんだろ)。

ただ、ユーザにプロダクトを使ってもらうこと・ユーザの心を掴むことに必死にならざるを得ない営利企業と同等の対応を、使っても使わなくても構わないよというスタンスのMozilla陣営に求めることが、そもそもの間違いなんじゃないかなあとも思います。手厚いサポートは決して善意からのものではなく、手厚いサポートをしなければ営利企業は飢えてしまうから、そうせざるを得ない。そうしなくても食えてしまう(と、短期的には思える)人ばかりで動いているMozilla陣営にとっては、手厚いサポートをする動機が無い。

日本でMozillaを支えている人はまだまだ、Mozillaが普及することが自分の現実の利益に結び付いてない人の方が多いんですよね。Mozilla Japanスタッフと、提携しているサポート企業の人くらいじゃないでしょうか、Mozillaの将来を本気で憂える動機があって、より良い・手厚いサポートの必要性を真剣に考える必要に迫られているのは。

Commented by Piro at 2006/06/28 (Wed) 13:28:01

no title

http://〓は駄目でもhttps://〓なら行けるのだ。

Commented by ('〓`) at 2006/06/28 (Wed) 17:32:06

TrackBack ping me at


の末尾に2020年11月30日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2006-06-27_unsinged-script.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2020年11月30日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のコメント

最近のつぶやき