第3回 [柔軟すぎる]IEのCSS解釈で起こるXSS
はせがわようすけ
ネットエージェント株式会社
2009/6/4
XSSにCSRFにSQLインジェクションにディレクトリトラバーサル……Webアプリケーションのプログラマが知っておくべき脆弱性はいっぱいあります。そこで本連載では、そのようなメジャーなもの“以外”も掘り下げていきます (編集部)
なぜか奥深いIEのXSSの話
- - PR -
皆さんこんにちは、はせがわようすけです。
第1回「[これはひどい]IEの引用符の解釈」と第2回「[無視できない]IEのContent-Type無視」でInternet Explorer(IE)の独自の機能がクロスサイトスクリプティング(XSS:cross-site scripting)を引き起こす可能性があるということについて説明してきました。
第3回でも引き続き、IE特有の機能がXSSを引き起こす例ということで、“スタイルシートを利用したクロスサイトスクリプティング”という攻撃方法を紹介しましょう。
スタイルシートを利用したXSSとは
IEにおいてスタイルシート内にJavaScriptを含める方法はいくつかありますが、最も柔軟性が高いのは、「expression(JavaScript文)」という表記方法でしょう。IEではスタイルシート内にこのような記述を含めることで、スタイルの評価時にJavaScriptを実行させることができます。
例えば、以下のように記述すれば、スタイルシートの評価のたびにJavaScriptが実行され、背景色を午前中は赤色に、午後は青色にすることができます。
<div style='background-color:expression(
(function(){
var now = new Date();
if( now.hour < 12 ){
return "red";
}else{
return "blue";
}
})()
)' > |
この例のように、自由にJavaScriptを記述することができるので、例えばWebメールなどのように、ユーザーからスタイルシートの入力を許容しているようなWebアプリケーションは、攻撃者に目を付けられることになります。
仮に、攻撃者が以下のようなスタイルを指定したHTMLメールを被害者のWebメールアカウントあてに送ったとします。
<div style='background-color:expression( |
被害者がこのようなメールをWebブラウザ上で開くと、セッション情報を格納しているCookieの値が、攻撃者の用意したサーバに送られてしまうことになります。
1/3 |
| Index | |
| [柔軟すぎる]IEのCSS解釈で起こるXSS | |
| Page1 なぜか奥深いIEのXSSの話 スタイルシートを利用したXSSとは |
|
| Page2 IEにおけるスタイルシートの“柔軟過ぎる”解釈 |
|
| Page3 スタイルシートのXSS対策の方針は? 正しい未来のために声を上げるべし |
|
| 教科書に載らないWebアプリケーションセキュリティ |
| Coding Edgeお勧め記事 |
| いまさらアルゴリズムを学ぶ意味 コーディングに役立つ! アルゴリズムの基本(1) コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう |
|
| Zope 3の魅力に迫る Zope 3とは何ぞや?(1) Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか? |
|
| 貧弱環境プログラミングのススメ 柴田 淳のコーディング天国 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く? |
|
| Haskellプログラミングの楽しみ方 のんびりHaskell(1) 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう |
|
| ちょっと変わったLisp入門 Gaucheでメタプログラミング(1) Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう |
|
TechTargetジャパン
- 実例で学ぶRailsアプリのテスト方法 (2011/12/22)
具体的なWebアプリを例に簡単なテストを使ったリファクタリングについ
て解説する - Railsの人気テストフレームワーク6選! (2011/8/18)
今回からテストを使ったリファクタリングを解説する。まずはRailsで人
気のあるテストフレームワークをいくつか紹介する - ActiveRecordの更新系操作 (2011/6/27)
Railsのモデル層を担当するActiveRecordを使った登録、更新、削除
など、更新系の機能を中心に見ていきます - 実例アプリで学ぶ“Railsらしさ”の基礎 (2011/5/26)
Ruby on Railsで書かれた実例アプリを取り上げて、初心者が陥りがちなコードの書き方を指摘します。より「Railsらしい」コードとは?
|
|

