Webにポップアップは必要か?

Webにポップアップは必要か?

備考:かなり古いブログですが公開し忘れしてい分です。

銀行サイトにアクセスすると偽のログイン用のポップアップを掲載するトロイの木馬が現れたそうです。機会があるたびに「ポップアップはしない方が良い」「アドレスバーを隠すのは最悪」と言っていましたがIT Proの写真を見ると「Window」としてポップアップするのではなく、「レイヤー」としてポップアップしているようにも見えます。Windowの部分にはアドレスバーが無いので画面全体のWindowsがポップアップとして表示されるのかも知れません。このようなトロイの木馬は予想はしていましたが実際に現れるのは困ったものです。

以前からログインにポップアップは有害と言っていましたが、海外とは言え実物が出てくるとリスクは以前より大きくなったと言えると思います。例え自分のサイトが価値の高いサービスをしていなくてもWebのデザインとしてポップアップは避けるべきと思います。普通のユーザがポップアップに慣れてしまうと偽のポップアップが開いたときに少しは「あれ?」と思っても偽のポップアップに重要な情報を記入してしまうかも知れません。

# トロイの木馬がインストールされている時点でほとんどアウトですが。
# しかし、こんな事をするよりキー入力をログした方が簡単に思えます。
# キー入力をログするより見つかりづらい、と思ったのでしょうね。多分。

随分前にも書きましたが、例えば振込みなど資金の移動が伴うような処理の場合、別のセキュアなデバイスで送金情報を表示してデジタル署名するような仕組みにしないと、オンラインバンキング等は攻撃対象になり続けるのでしょうね。PCやブラウザは信用できないですかね…

今思いついたのですがより簡易な方法として2重にメッセージダイジェストを取る方法だと、PCと携帯が通信しなくても安全性を確保できますね。

トランザクションのメッセージダイジェストをPCに表示
携帯のアプリでメッセージダイジェストをさらに共通の秘密情報含めた値でメッセージダイジェストを計算
利用者はダイジェスト値も入力してトランザクションを送信

と言った感じで処理すればよいですね。実際にPCと携帯が通信しなくてもよい分、今すぐにでも実装できますね。

またNHKニュースでウィルス

昨日の夜7時のNHKニュースで山田オルタナティブウィルスの件が報道されていました。IPAの方(多分IPAの方)が「基本に立ち返る必要があります。出所が不明なファイルを開いてはなりません」と言われていました。何故今頃このような報道が?と思ったら、1日300台のペースで感染が広がっているいるようです…

PCがWebサーバになってしまってHDDの中身が丸見えになる様子、リモートデスクトップ機能を無条件に許可して操作状態がわかってしまう様子が報道されていました。

ところで今山田オルタナティブの感染が拡大しているのは「ウィルスに感染しないためにはWinnyをPCにインストールしない」という対策を啓蒙した事が原因で

「WinnyをPCにインストールしなけれウィルスに感染しない」
 ↓
「WinnyをインストールしていないPCでファイルを開けば安全!」

と勘違いしたユーザ増えた?!という事なのかも知れませんね。

少しコンピュータに詳しい方には笑い話なのですが、ブラックボックスとして使用している方がどう対応する可能性があるか理解した上でセキュリティ教育をしなければならない良い例なのかもしれません。

【追記】

数日前(4/11ごろ)の朝のNHKニュースで「映画等の不正コピーの90%以上はWinnyではなくShareで行われている」と報道していました。これを見て「Shareに乗り換えよう」と思った人も多いのではないでしょうか…. この報道も「なんだかなぁ」と思わされました。

クロスドメインのHTML読み取り(IEのバグ CSSXSS)とCSRF

追記:このブログを記載する理由となったURLを記載された方が内容を削除されたようです。「間違っている」と言われるのは心外である、と思ったことは確かですがページの内容が削除されるのは私の本意ではありません。書かれていた情報はとても役に立つ情報だと思います。非常に残念なので再度掲載されることを望みます。(本当
—–

セキュリティ対策ではよくあることですが、条件の見落としによりセキュリティ対策を行っていても脆弱性が発生することがあります。「Webアプリセキュリティ対策入門」に書かれているCSRF対策にも「クロスドメインのHTML読み取り(IEのバグ)」の問題が修正されていない為、書籍に記載した対策を行ってもバグを持つIEに対してはCSRFに脆弱になります。

しかし、このバグの影響を持って「Webアプリセキュリティ対策入門」のCSRF対策を「間違った対策」と書かれても困ります。妥当な表現はバグがあるブラウザに対して「不十分な対策」ではないでしょうか。

このブログを書くきっかけは以下のURLです。

http://www.jumperz.net/texts/csrf.htm

問題点を整理してみます。(IEのCSSXSSバグ問題として知られる問題)

IEはスタイルシートとしてCSS以外のファイル、例えばHTMLファイル、を外部サイトから読み込めてしまうバグがある。

つまり、HTML等に埋め込まれた情報は第三者のサイトから盗む事が可能となる。

つまり、HTML等に秘密情報(トークン等)が記載されていると意図しないフォーム送信(CSRF)を行える。

同じくIEのバグが原因のXST(Cross Site Tracing)に似ている問題と言えると思います。
汎用性(複数のページを開いている場合)の考慮はされていませんが

http://www.jumperz.net/texts/csrf.htm

に利用可能な対策が紹介されています。重要なのは以下の2つです。

  • HTMLにトークン(フォーム送信を一意に特定できる値)を書かない
  • トークンをセッションIDと紐付ける

この2つを実行することでIEのバグを回避し、CSRFを防止することがWebサイト側で可能になります。

ところで、この問題の本質はセキュリティの基本中の基本であるCIAをブラウザが守れない事に原因があります。(Confidentiality, Integrity, Availavility – の内のConfidentiality(機密性)が守られていない。)マイクロソフトも直すつもりはあるようで

http://d.hatena.ne.jp/hoshikuzu/20051204#P2005204MATANGILLON

に、直すつもりがある旨が記載されています。実際現在のIEはCSSファイルのように見えなければHTMLの中身が読み取れない状態らしく半分直した(?)ような状態になっているようです。(前にSJISは使わない方が良い、とブログで書きましたがこの件でもSJISをページのエンコーディングに使うのは危険なようです)

jumperz.netの対策はバグを持つIEユーザ向けCSRFの対策としては使用できますが、ページに表示されている情報を盗み見れて困るのはCSRF(CSRFの場合、hiddenタグのトークン情報)だけではありません。様々な情報には他人に見られるだけでも困る物も多くあります。例えば、メールや銀行/証券/保険会社の口座情報を広く公開しても気にしない、と言う人は少ないと思います。

セッションIDをページに記載する手法は、キャッシュ制御をしっかりしないとプロキシ等のキャッシュ(どんなヘッダを送ってもキャッシュする、しないはプロキシ次第ですが)にセッションIDが記録されるので簡易な対策として紹介しています。この方法はCSRF対策を行っていないアプリが、普通のブラウザと環境においてCSRF対策を行う場合、問題も少なく、最も対策が簡単だからです。

本来外部サイトのHTMLページはコンフィデンシャルな情報であり、それが守れない状態であるIEが根本的な問題です。重要な情報をページに表示できないのであれば、重要な情報を表示するアプリはインターネットに公開する事はできません。

CSRFだけ考えても、数え切れないほどの開発者が開発しているWebサイトより、MSが開発しているIEのバグを直す方が速いのは明らかと思います。この手のバグに対する対処は仮りに書籍に書くとしても注意事項として小さく書く程度が限界かと思います。出版した頃にはもう解決済みの問題となっている可能性も高いですから。このあたりは紙メディアの限界ですね。

マイクロソフトはPassportアカウントのメールアドレスがvbscriptでどのサイトからでも参照できるバグを長期間放置していた実績があり、今回のバグが長い間放置される可能性も少なくありません。もしかしてIE7では直っている、とアドバイザリを出すつもりなのかも知れません?!火が付けばパッチ出す!?と言うことで、広く知れた事なので騒ぐが勝ちかも知れません。

とは言っても、MSは昨年に分かっていた問題に対して未だに完全なパッチを提供していない事は事実なようです。このような状況ではWebサイト側でも対策しないとMSがいつ対応してくれるか分かりません。情報を盗み見られるも困りますが情報を改竄される方が大きな被害である事に議論の余地は無いと思います。jumperz.netにはクッキーとJavaScriptを使った対策が紹介されていますが、これにはもう少しスマート(汎用的)なやり方もあります。

JavaScriptの使用を前提とするなら「Webアプリセキュリティ対策入門」書かれているフォームID(フォームのトークン – hiddenタグに記載)とセッションID(クッキーに保存)でMD5でメッセージダイジェストを取り、フォームにセットして送信します。サーバ側ではCSRFが行われていないかメッセージダイジェストを比較するロジックを追加するだけでOKです。この手法の場合、複数のページを同時に開いても問題無く処理でき、同じフォームの複数回送信も防げます。

作業量はさておき、この変更自体は簡単ですよね? フォームの方はhiddenタグの追加と簡単なJavaScriptを追加するだけ、サーバ側はMD5の値を作って追加されhiddenタグと値を比べるだけです。hiddenタグの値が無い場合は、CAPTCHAまたはパスワード入力方式にfallbackしても良いかも知れません。本を読んだ方でこの説明で対処方法がよく解から場合はコメントをお願いします。

# MD5関数はJavaScriptにはありませんが、探せば沢山実装が見
# 付かります。
#
# 個人的には、自前のフォームクラスを使っているアプリの場合、
# 上記の修正を加えるにはを少しフォームクラスを修正するだけ
# で対応できました。
#
# ところで.NET ASPで作ったWebサイトはViewState等の為(?)
# このIEのバグによるCSRFの影響は受けないのでしょうか?
# MSの腰が重い理由はこのあたりあるのかな?と疑いを持って
# いる次第です。識者の方、コメント頂ければ幸いです。

Web開発者としては過去のブラウザバグまで考慮して開発するのは困った物です。ユーザとしてもJavaScriptとクッキーを使ったフォーム送信がデフォルトになるとFirefoxのNoScript拡張を使っていると面倒が一つ増えます、IEでもActiveScriptを無効に設定している人も同じ面倒が増えます。仮りにIEのバグが直ったとしてもまた同じ問題が他のブラウザや新しいIEでも発生する事も考えられます。直したハズの問題がまた表れるのもよくある事です。

多分少しするとIEのバグも修正されると思います。JavaScriptとクッキーを使ったCSRF対策を次の書籍等の著作物に入れるべきなのか、省略すべきなのか、悩ましい所です。

蛇足:
Session IDのクッキーに非標準のHttpOnly属性を使いたい方は、Sessionを初期化する場合に別のCSRFチェック用のHttpOnly属性無しクッキーを初期化して使用します。

蛇足2:
時々「IEを使うのは止めときましょう」と、このブログにも書いていますがこの問題もIEを使わない理由の一つですね。2004年はIEが安全に使えた日は7%日しかなかったという調査もあります。2005年は多少まし(?)かも知れませんが、2006年は2004年に似たような数値になるのかも知れませんね。

蛇足3:
PHPの透過的セッション管理(trand_sid)は利用しない、といつも言っていますがtrans_sidを行っているサイトの場合、フォーム送信ページをリクエストする事によりセッションIDを簡単に盗まれます… セッションIDをフォームに記載したCSRF対策も同様にセッションIDを盗まれます。念のため。

PEAR AUTHのSQLインジェクション

ちょっと古いネタなのですが古いPEAR AUTHにはSQLインジェクションに対して脆弱です。Blogに書くか迷ったのですがPEARのサイトにはセキュリティ情報のページが無いので書いておきます。PEARをアップデートして使っていれば大丈夫なのですが、運用環境で理由無くライブラリをアップデートしながら使う、と言うことは考えられません。

私はPEARライブラリのヘビーユーザではなく詳しくPEARのセキュリティ情報を収集していませんが、気になったPEARの脆弱性情報はWikiの

PHP/脆弱性リスト/PEAR

に記載しています。このリストには漏れが沢山あると思います。正確なセキュリティ情報がどこかにまとめてあった方が良いですね。でないと知らない間に重要なセキュリティ上の修正があるようでは怖くて使えませんよね。

# Wikiへ変更箇所はメールで受け取っています。
# 追加・修正はご自由に行っていただいても構いません。
# と、いうよりWikiとはそういう物なのでよろしくお願
# いします。

Wikiのページランクが復活

私のWikiはGoogleのページランクが表示されないなと思ったらSEOの基本を忘れていました。
セキュリティなども考えてwikiのURLを

http://www.ohgaki.net/wiki/

から

http://wiki.ohgaki.net/

に変えた際、手っ取り早くApacheのmod_rewriteで旧URLから新URLに書き換えた(Redirectさせた)のですが、これはSEO的にはやってはならない事の一つです。Redirectによるページの更新をするとサーチエンジンスパムが可能になるのでこういった仕様になっているのだと思います。エラーページハンドラを作り「新しいページはこちらです」と新URLへのページを表示する方法を取ればページランクを落とすこと無く引越しできます。しかし、ページランクが表示されていても、されていなくても私のWikiの場合はGoogle検索の順位はあまり変わらなかったようです。新旧ページがほとんど同じだったので救済策(?)として検索結果順位は変わらなかったのかもしれません。世の中にはRedirectによる引越しでGoogle八分状態になったサイトもあるようなので商用サイトの場合はRedirectによる引越しには注意しましょう。

Googleのクローラは毎日来ているようなのですが、Redirectを止めてからページランクが復活するまでにかなり時間がかかります。これは私のWikiの場合に限らず時間がかかるようです。顧客のサイト/ページでやってしまうと面倒なことにもなりかねないので注意が必用ですね。

嘘のような本当の話?

CentOSのApacheのデフォルトページが表示され、クラックされたと思い込んだユーザとCentOSプロジェクトスタッフとのやり取りの話。わざわざ嘘を載せたりするとは思えないので本当なのでしょう…

英語のメールを読む方はどうぞ。

GoogleのAdWords広告の問題

GoogleのAdWordsにおかしな広告が載っている、という話。
確かに日本ではあまり話題になっていなかったです。本当にAdWordsに掲載する方法は振り込め詐欺にも似た感じを持ちます。Googleも全ての広告主がまっとうな広告主なのか、低コストで、検証する方法は無いでしょうからおかしな広告主がいる事は簡単に予想できます。あまりに酷いと「不正な広告主をレポート!」の様な仕組みを作るかもしれませんが、このような機能は心無い競争相手により悪用されてしまう事が容易に想像できます。難しいですね。

ところでスパイウェアの中にはWebページのAdWords広告を書き換える物もある、と聞いた事があります。こちらの場合は丸っきり書き換えているのでGoogleとは関係ありません。

Web Hacking Incidents Database

Web Application Security ConsortiumがWeb Hacking Incidents Database (whid)のアナウンスがありました。Defacement(ページ改ざん)データベースで有名なZone-Hとは異なるアプローチのデータベースです。全てのインシデントを記録する、と言うよりメンテナが気になった(気が付いた?)問題を記録しているようです。例えば、2006年のエントリではGoogleのHTTP Response Splitting問題は記載されていますがgmailのXSS問題は記載されていません。コントリビュータが2人となっているので単なるリソース不足が問題のような気がします。興味がある方はコントリビュータとして立候補されてはいかがでしょうか?

それでもIEを使いますか?

IEは危険すぎるので使わない方が良いと言っています。過去の実績から言っても明らかです。2004年には1年の内、98%の期間、既知のセキュリティホールに対して脆弱だったとされています。

MSIE was 98% unsafe. There were only 7 days in 2004 without an unpatched publicly disclosed security hole.

Firefox was 15% unsafe. There were 56 days with an unpatched publicly disclosed security hole. 30 of those days were a Mac hole that only affected Mac users. Windows Firefox was 7% unsafe.

さすがにセキュリティホールのレポートが少なくなってきたかな、と昨年末頃には思っていたのですが、最近はすごい事になっています。危険なIEのセキュリティホールが次々に発見されています。

セキュリティ系MLでも書かれていましたが明日にもセキュリティパッチがリリースされる模様です。

Firefoxでは参照できないサイトもIE Viewをインストールしていればさほど困りません。

注意しなければいけないのはFirefoxを使っていても一年の内15%ほど期間な期間があった事です。エンドユーザ教育として「Winnyをインストールしない・使わない」と教えるのも良いですが「ブラウザは危険です」と教える必用があるかと…

# 多くのWebサイトがかなり危険な状態である事も教える必用がありますね…

電子政府は使えない

Slashdotに

25日の朝日新聞に電子政府も縦割り弊害 各種申請、同一PCで無理という記事が出ている。記事には日本行政書士会連合会の話として、新車登録のための設定をしたパソコンでは不動産・商業登記の申請や国交省の電子入札ができなくなり、公的個人認証を使用するパソコンでは不動産登記ができなくなるそうだ。

こんなのは随分前から分かっていて、入札システムなど使っている方にはVMWareを使うようにアドバイスしています。しかし、素人が新しいVMを作るのは結構難しいと思います。

本当は最新版のJREで動作するようにメンテナンスするべきですけどね…

Internetを使った株価操作

私が受信する最近のSPAMメールの傾向に、株価操作を狙ったSPAMメールが増えています。

ほとんどは単価が安い数ドルの株で、「現在の株価は3ドルで1週間後のターゲットは5ドル!」とか書いてあります。このようなSPAMで株価が変動すると困るのですが、投資家も馬鹿ではないのでこのようなメールを送っても株価の変動はほとんど無いようなので一安心です。

気が向いたのでNSLT(よくSPAMメールに記載されている会社)をGoogle Financeで検索してみると結果が表示されません。もしかしてもう潰れたかな?と思いつつYahoo Financeで検索すると表示されました。

株価操作を狙ったSPAMメールを送信するとGoogle Finance八分される(?)のかも知れませんね。# それとも単純にデータ登録がないだけかな?

遅いWindowsの共有フォルダ

前にもクライアント側でWebClientが有効な場合、Windowsの共有フォルダへのアクセスが遅くなる、と書きました。

なんだか最近Windows 2003 Serverの共有が耐え難い程遅くなってきていたので、久しぶりに様子を見てみると自動のWindowsアップデートに何故か失敗していました。再起動が必用かな、と思い再起動後に手動でWindowsアップデート(正確にはMicrosoft Updateにバージョンアップした後Microsoftアップデート)を実行したところ全てのパッチが正常に適用されました。

ついでということでWindows 2003 Server SP1も導入する事にしました。正常にインストールできたようですが、再起動すると起動中の画面でフリーズしてしまいました。SFUを入れている以外は素のWindows Serverでプリント・ファイルサーバとしてしか使っていないのに… と思いつつ強制的に再起動すると今度は普通に立ち上がって来ました。

しかし、ログインしてみるとspxss.exeがクラッシュしたとメッセージが… 何度再起動してもこのサービスはクラッシュしますが、POSIXサブシステムのプロセスらしいのでとりあえず無視。

クライアントから共有ファイルへアクセスしてみると、何故か共有フォルダへのアクセス速度が「普通」に戻っていました。SP1を当てていなかったことが共有フォルダへのアクセスが遅い原因(?)だったようです。# 少なくとも私の環境では。