趣味Web 小説 2006-02-07

閲覧者の安全はほどほどに守れば十分だ

XSS 脆弱性対策のみならず、「ブラウザの脆弱性に起因する問題についてもブログサービスは対処すべき=ユーザによる任意のスクリプト利用は禁止すべき」といった考え方に対置する意見を、以下に記します。

(いくつかの不便と引き換えに)なりすまし問題が生じないサービス設計を行っている fc2 ブログでは、ユーザが任意のスクリプトを利用できます。したがって fc2 ブログでは「極悪スクリプト」を貼ることができます。けれども、閲覧者が fc2 ブログで被害にあったとき、script 要素を許可している fc2 が悪いと思う人より、ブラクラを仕掛けたユーザが悪いと考える人が多いでしょう。isweb や geocities や cool でもそうだったように。

ブログサービスは横のつながりを強く意識しています。はてなで言えばキーワードやらトラックバックやブックマークやアンテナやRSSなど、いつでもおいでリンクでつながっています。行った先に罠が待ち構えていれば、それはアウトです。大通りでかっぱらいにあうようなものです。そんな治安の悪いところには人間、近づきたくもありません。

では fc2 は「危険」という理由で忌避されていますか? 有害ブログの出現を許すシステムであっても、取締りが追いつく限り、大多数のユーザが満足するレベルの治安は守られます。

大きな需要があるなら、妥協も考慮すべきです。テーブルレイアウト(崩れない段組)や object 要素のヘンな活用法(p 要素の中にリスト)も有条件で認めます。Nifty_Corners だって、どうしても使いたい人は使えばよい。サイドバーの折り畳みも、ブログペットの記事投稿も、「安全のためなら無視していい」需要だとは思いません。

追記された部分では、ブログサービスにおけるJavaScriptの許容の視点があります。この視点は訪問者=閲覧者の視点ではなく、製作者の視点となっています。すなわち、徳保さんの、製作者がJavaScriptを使えることが優先であるという思想がハッキリしたようです。…ブログサービスの健全な発展において、初心者が安心して巡回できることは必須ですけれど、そうでないようなブログサービスを擁護しています。HTMLやCSSを初心者に御指導されているのですからもっと現実的な公益性について考えていただければと思います。製作者サイドの技術的趣味の満足が優先であって訪問者の益については守らなくて良いというお考え、問題だと思います。…罠ページというと、程度の低いブラクラしかないように御主張なさっているかのように読める文章なのですけれども…ミスリードでしょう。ブラウザの脆弱性があればそれに対応したHTMLをDOM上で組み上げることはいとも簡単です。結果として閲覧者のブラウザを通じて、パソコンの管理者権限を盗られるか、データ破壊されるか、個人情報が無差別にネットワークに流れるか、そんなこともありますので。本来ならばこういった危険性について無自覚でいる多数の訪問者=ユーザを守らなければなりません。製作者サイドの需要は、その次の課題です。需要についての優先順位を履き違えていると思われます。

見解の相違、としかいいようがない。

私は id:hoshikuzu さんが必須と考えている諸条件を必須と考えません。だいたい、現実というなら、初心者は JavaScript も ActiveX も有効な状態のまま、安心して巡回しているじゃないですか。せいぜいネットセキュリティ何とかみたいなソフトウェアを利用している程度ですよ。道を歩けば通り魔にあうかもしれない。赤信号で止まれば後ろの車が居眠り運転で追突されるかもしれない。そういうレベルの話だと私は認識しています。人々が怖い怖いといって家から一歩も出られなくなっているなら、しょうがない、強権発動で人々の自由を奪ったっていいのでしょうが、現状はそうではない。

レンタルサーバサービスがユーザの JavaScript 使用をまったく制限せずに十分に発展を遂げてきたことは周知の通りです。私には幸い大した技能がないが、もし一定の知識があれば、このサイトに id:hoshikuzu さんが心配されているようなスクリプトを設置することに何ら制限はない。FTP でアップロードすれば、そのまま動く。tripod.com なんて、匿名のメールアドレスだけで簡単にサーバを確保できるわけだから、tripod.com を利用しているサイトを閲覧する際には、スクリプトを無効化しておかねば危険じゃないかということになるわけですが、みんな平気でリンクを辿ってしまう。いちいち心配しないのが常識になっている。

なぜそうなっているか。3つリンクを踏んで、1つがブラウザの脆弱性を突く悪魔だというレベルなら、みんな気をつけている。1年間、あちこち見て回って、それで1回も悲劇に遭遇しない、そういうレベルの話だから、それくらい悪党が少ないから、みんな平気なんです。

そして逆に、悪党が少ないことがわかっているから、レンタルサーバサービスの事業者は、利用者がアップロードした JavaScript を無効化せず、そのまま利用できるようにしているわけです。object 要素の利用を容認しているわけです。

製作者サイドの技術的趣味の満足が優先であって訪問者の益については守らなくて良いというお考えと仰るけれども、そう単純じゃないですよ。object 要素を禁止したら FLASH 文化は育ちようもなかったのだし、スクリプトだって、それなりに喜ぶ読者がいるから利用されているという面があるのです。サイドバーの折り畳みなんて、私はあまり評価しませんけれども、あれだって「便利で使い易い」と思う閲覧者がいる。「追記部分の折り畳み」も同様です。スタイル切替スクリプトや「こんにちは**さん」「今このサイトを閲覧しているのは**人です」といったスクリプトだって、喜ぶ読者がいるのです。そういった人々の思いが JavaScript 利用欲の源泉となっています。

私にもすぐ理解できるほど簡単な方法でセッションハイジャックできる状況において、スクリプトを禁止する理由は理解できます。犯罪の果実は大きく、技術的障壁は低いとなれば、悪党がうようよ集まってくる可能性は無視できないほど高い。だからその対策は必要なのでしょう(注:ただし管理画面を表示画面と別のドメインに置くといった対策が可能ならユーザのスクリプト使用を禁止する必要はない)。けれども、ブラウザの脆弱性を突いて云々という話になれば、これはもはやブログサービスの責任の範囲外だと思う。

例えば fc2 ブログのユーザ約20万人の中に、悪党が1人もいないとは限らない。これは危ない、危ないから全員のスクリプト利用を停止しよう……それが「公益を考える」ということなんですか。私は断固、違うといいたい。一般庶民のスクリプト利用を閲覧者には無益と斬って捨て、非常に僅かな極悪人が仕掛ける罠の危険を潰すため、全員の行動を制約することが公益重視の姿勢だとは思えない。id:hoshikuzu さんの議論はアンバランスです。

はてなダイアリーがスクリプトを禁止するのはかまいません。スクリプトを使いたければ fc2 へ行けばいい。閲覧者には選択肢がある。だからこれ以上、はてなに何かいうつもりはない。ただ、問題提起の意義はあったと思う。はてなユーザの少なからずは、決して悪用などしないのに、スクリプトを自由に使えない。だから、はてなは戦略ミスをしていると思うのです。いくつかの仕様を変更すれば、はてなダイアリー本文でのスクリプト利用を認めても、簡単ななりすましは防止できそうなのです。無論、それによって失うものはあります。しかし現状、どちらを喜ぶ人が多いか(注:とはいうものの、現在のユーザは現在の仕様に満足している、あるいは我慢できるユーザなので、現ユーザ内で多数決すると……?)。

私は100%の安全性なんか必要ないと思っています。安全だって、程度問題でしょう。

そう思う理由は、ずいぶんたくさん書きました。でも id:hoshikuzu さんは、全然、説得されないでしょう。だから虚しいといえば虚しいのですが、価値観対立による議論なんて、そんなものですよね。

私は根本的に、閲覧者が製作者より絶対に優位だと思っていない。製作者の一方的な我慢の上に閲覧者の安全を築くことが正しいと考えない。ブログサービスの健全な発展において、初心者が安心して巡回できることは必須ですというご意見ですが、私の見るところ、スクリプトの利用を許可している fc2 ブログの読者だって安心しているでしょう、と。もし私の見立てが間違っているなら、fc2 ブログやこれまでのレンタルサーバを舞台とした個人サイトの世界は不健全な発展をしてきたことになりますが、これが不健全だというなら、私は不健全でいい。閲覧者としても製作者としても、私は現在までのウェブの発展に概ね満足しているもの。

悪党はこれまでもいたし、これからもいます。悪党が捕まるのは、数人が被害に遭った後の話です。それは許せない、一人の犠牲者も出してはいけない、と仰りたいのかもしれませんが、私にはついていけない。僅かな悪人を封じ込めるために、善良な人々の行動を過度に制約するのはおかしい。たしかに、たかがスクリプト、たかが object 要素ですが、だから利用を制限してよいと、私はそうは思いません。

マイノリティ・リポート―ディック作品集 マイノリティ・リポート マイノリティ・リポート スペシャル・エディション

連想しました、ということで。深い意味はありません。

これは「コメントにscriptタグを書いてみたら有効になっちゃった」というのはまずいでしょ、という話ですよね。

Fuktommy さん、それは違います。id:hoshikuzu さんは、「悪いブログ製作者が悪いスクリプトを書けないようにするべきだ」と主張されているのです。他のユーザが悪い製作者のブログを閲覧すると危険だからです。

少なからずという書き方に私なりの慎重さを込めたつもりです。(関連:はてなアイデア - タグ javascript

どうみてもXSSではありません。本当にありがとうございました。この脆弱性を何と呼ぶのかと聞かれても「任意のスクリプトを実行できる脆弱性」としか言えません。

現在のはてなダイアリーでは、任意のスクリプトを実行できればセッションハイジャックが可能です。だから任意のスクリプトが実行できることが XSS 脆弱性と認識されています。はまちやさんのいたずら自体は XSS ではないとしても、XSS 脆弱性があったことは間違いない。

それはJavaScriptを使用させてもXSSにならない仕様だからであって(もしかしたらJavaScriptでXSSできること自体がはてなの脆弱性かもしれないが)今回の問題とは何の関係もない。

id:hoshikuzu さんはブラウザの脆弱性を突いて計算機を乗っ取るような行為についても心配されていることに注意してください。そこまで気にするなら、レンタルサーバの利用者にも制限を掛けるべきだということになります。

JavaScriptでXSSできること自体がはてなの脆弱性……というのが(少なくとも現在の)私の見方に近い。はてなは記事編集、プライベートモード閲覧、ログインコメントなどにいちいちパスワードを必要としない設計となっており、それゆえ任意のスクリプトの実行許可が即ち XSS 脆弱性となります。他に選択肢がある以上、はてなのようなサービスはあっていいのだけれど、はてなのサービス設計を単に「不便」と捉えるユーザも相当数いるだろう、と私は指摘したのです。

悪質な(本来警戒すべき)XSSによる攻撃は、認証情報を盗み、それを利用して認証情報で保護されたはずの情報を盗み、あるいは認証情報で保護されたはずの機能を利用し、それでいて利用者にはそのようなことが起こっていることをまったく気づかせない、というものだ。そのような攻撃はそう簡単には発覚せず、発覚しない間に被害は広がっていく。そのような攻撃でも、(攻撃が見つかったら)その仕掛けたユーザーを排除すればそれで対策は十分?

ブラウザの脆弱性を突いて行われる攻撃については、「その通り」と回答します。

一方、ブラウザが仕様通りの動作を行っても、サービスの設計のまずさゆえに可能となってしまう攻撃に関しては、(私の価値観においても)なるほど許容範囲外だと思いました。そんなこんなで、誤解を広げめられると迷惑だの件、一定の対応を取りました。

Information

注意書き