もしもしかめYO!かめさんYO!
みなさん、どうも初めまして。
ヒップホップでの初登場と相成りましたtatsumiでございます。
本日はみなさんとウェブアプリケーションの脆弱性について
少しお勉強していこうかなと思っております。
よろしくお願い致しますー。
1.XSIOとは
突然ですが、みなさんは XSIO をご存知ですか?
「既に知っているよー」という方は以下を読む必要はありませんが、
「新しいデジカメだよね」と笑顔で答えてくれたそこのあなた!
あなたの作ったウェブアプリケーションには危険が潜んでいるかも知れませんので
ここでしっかりと押さえていきましょう。
XSIO とは Cross Site Image Overlaying の略で
その名前の通りに画像を使用した攻撃手法のことです。
具体的にはCSSを使って画像を任意の場所に配置・参照させるのですが、
実際どのように攻撃されるのか?また、それがどのような問題を引き起こすのか?
それらについて基本的な仕組みが同じである XSS(Cross Site Scripting) と比較して説明します。
2.基本的な仕組み
下記のような、フォームから入力された情報を動的に表示するページがあり、
そこで適切なエスケープ処理が施されていないときに発生します。
<span>(入力された情報)</span>
| ●XSSの場合
このとき、フォームにて
を入力すると、実際に生成されるのが
となり、スクリプトが実行されてしまいます。 |
| ●XSIO場合
このとき、フォームにて
を入力すると、実際に生成されるのが
となり、画像の表示位置を自由に指定されてしまいます。 |
3.何が悪いのか?
両者の例を見てどのように感じられたでしょうか?
XSS は動きがあるため直感的に危険だと分かりますが、
XSIO はいまいち何が悪いのか分からない人もいるかと思います。
「ただ画像の表示位置を指定できただけだよね?」と。
しかし、表示位置を指定できることが状況によっては大きな問題につながります。
例えば、このミュートスラボの画面左上には
ブログTOPへのリンクが含まれている
「ミュートス・ラボ Mythos-labo」というタイトルが表示されているのですが、
この上に

のような画像をかぶせたらどうなるでしょう?
いとも簡単にリンク先を変更できますよね。
つまり、しかるべき場所でこのような性質を利用されるとフィッシング詐欺の踏み台になりますし、
いかにも運営者からのお知らせのようにして偽の情報を表示することも可能ですし、
もちろんサイト改変が行なわれる可能性もあるということです。
4.対策
では、どうすればこの XSIO を防ぐことができるのか?
基本的には「style属性をエスケープしてしまうこと」と「CSSを編集できるような状態にしないこと」です。
しかし、注意して頂きたいのがこれだけで安全になる訳ではないということです。
言うまでもないと思いますが、ウェブアプリケーションの脆弱性はこれだけはありません。
本当の安全を維持するためには、他の脆弱性にも対策を施していくことが重要です。
自分の作ったウェブアプリケーションが悪用されないためにも、
しっかりとこういったセキュリティのお話にアンテナをはりましょう。
5.参考
もう少し詳しく知りたい方はXSIO - Cross Site Image Overlaying(PDF)を読んでみてください。
- Newer: Ajaxの基礎
- Older: openCVとかRMagickで画像を加工してみた実験