連載
» 2005年12月22日 00時00分 公開

星野君のWebアプリほのぼの改造計画(3):Webアプリ、入力チェックで万事OK? (5/5)

[杉山俊春, Illustrated by はるぷ,三井物産セキュアディレクション株式会社]
前のページへ 1|2|3|4|5       

星野君、牧野さんにクロスサイトスクリプティングを仕掛ける

 しかし、星野君は納得したわけではなかった。根本的な対策になっていないような気がして釈然としないのだ。調べてもよく分からなかったので、仕方なくまこと先輩にアドバイスを求めることにした。

 まこと先輩からはすぐに返事が届いた。

まことです。

お、そんな仕事頼まれてるんだ。楽しそうだ。
しかも結構自分で勉強した感じだね。ちょっと感心。

Refererチェックがちゃんとしている場合、なかなか攻撃を成立させるのは難しいかもしれない。ただ、不完全なチェックの場合が結構あって「部分一致」でチェックしてるかも。その場合は、URLに対象のサイトが含まれるようにすると回避ができてしまう。

例えばこんな感じ。
http://(攻撃者のサイト)/attack.html?http://www.example.com/toiawase.cgi

ちゃんとチェックされてる場合は確かに攻撃に対しては大丈夫。けど、Refererってブラウザによって扱いが違うから、Refererで画面遷移を管理すること自体がお勧めできないな……。


 なるほど、「部分一致だと回避できてしまう」というのは全然思い付かなかった。早速試してみたところ、Refererのドメインが違ってもチェックを回避することができた。

 今度こそ牧野さんを説得しなければならない。星野君はクロスサイトスクリプティングのためのわなページを別のPCに用意して、実際に攻撃が成立することを牧野さんに体験させようと思った。

星野君 「牧野さん、ちょっとここにアクセスしてみてください」

 星野君は牧野さんにわなが設置してあるページを指定した。

牧野さん 「またまた。ちゃんとチェックしてあるから大丈夫だって……。うお、スクリプト動いた。なんで?」

 星野君はRefererで画面遷移を管理する際の問題を説明した。

牧野さん 「うーん。じゃあWebアプリ側でも入力チェックをやればいいってこと?」

星野君 「はい。あと、HTMLを出力する部分でサニタイジングをすればいいですかね」

牧野さん 「へぇ〜。なるほどねぇ〜。じゃあよろしくね」

星野君 「えっ??」

牧野さん 「ん?問題見つけて直してくれるって聞いてるけど?」

星野君 「(直すのも僕なのか……)」

セキュリティについて考える星野君

 結局、クロスサイトスクリプティング以外は見つからなかったので、Webアプリケーション側での入力チェックとHTML出力時のサニタイジング処理を追加する修正を行った。

 これまでWebアプリケーション検査といっても簡単なパターンを試してみることくらいしか知らなかった。今回の件で、星野君はそれだけでは不十分だということを感じた。検査を行う際には、Webアプリケーションの中の作りまで考えてやらなければ、安全性を確保することはできないのである。

次回予告:

 会社のWebアプリケーションの穴はふさいだ。しかし、星野君は忘れていた。ほかにも彼が管理すべきWebアプリケーションが存在することを……。

まこと先輩のWebアプリ・チェックポイント!

まこと先輩?

Check!
検査ツールを使いこなすことが安全なWebアプリケーションを作る

ユーザーが直接入力を行わない場所に脆弱性が潜んでいることが多い。Webアプリケーションの安全性を高めるためには、検査補助ツールを使い、必ず不正入力のテストを行おう

Check!
入力チェックは必ずWebアプリケーション側で行う

JavaScriptによる入力チェックは簡単に回避できてしまう。安全性を確保するためには必ずWebサーバ側で入力チェックを行おう


Profile

杉山 俊春(すぎやま としはる)

三井物産セキュアディレクション株式会社
テクニカルサービス事業部検査グループ
コンサルタント

セキュリティコンサルタントとして、主にWebアプリケーションのセキュリティ検査などに従事している。大手就職活動支援サイト、ショッピングサイトなどの検査実績を持つ。



前のページへ 1|2|3|4|5       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。