• Yahoo! メールを狙った ウイルスメールが発生
手法の解説
クロスサイトスクリプティング
98
フィッシングの手口
•
攻撃者は、スクリプトを含むHTML
メールを 送信•
メールを表示すると、攻撃者のスクリプトが実 行され、ページの内容がひそかに改竄される– iframe要素が挿入され、yahoo!メールの本物サ イトの中に攻撃者の用意したコンテンツが表示さ れた
– ブラウザのアドレスバーの URL は本物のまま
ウイルスメールの手口
•
メールを開くと、やはりスクリプトが実行される•
そして、自動的に他のユーザにメールを送信 してしまう•
そのメールにもやはりスクリプトが……
。増殖
100
何故スクリプトが動いた ?
•
通常、HTML
メールに含まれるスクリプトは実 行されないようにする必要がある• Yahoo!
メールでも、原則としてスクリプトは実 行されないような処理をしていた•
しかし、その処理に欠陥があり、スクリプトが 実行されてしまったクロスサイトスクリプティングとは
• Cross Site Scripting / XSS
– 「CSS」と略すと Cascading Style Sheet と混同 されるので「XSS」と呼ぶ
•
ウェブサイト上に外部からスクリプトを挿入さ れ、そのスクリプトが動作してしまうこと– 攻撃者の用意したスクリプトが、ターゲットのドメ イン上で実行される
– 広義には、スクリプトを含んでいない HTML の改
102
何がまずいのか
•
普通、スクリプトで別ドメインのコンテンツを操 作することはできない• XSS
脆弱性があるとターゲットのドメイン上でスクリプトが動くので、さまざまな攻撃ができ てしまう
– フィッシング
– 不正な操作 (ウイルスメール送信)
– Cookie読み出しによるセッションハイジャック
注意点
104
注意点
•
外部から入力された値をそのままHTML
に 出力しないこと!
•
文字参照に変換すればだいたいOK
– 「<」→「<」 「>」→「>」 「”」→「"」
「&」→「&」
• PHP
の場合、htmlspecialchars()
– addslashes() では駄目! (というか意味が無い)
•
文脈によってはさらに難しい場合も……
特に難しい場合
• HTML
メールを「安全に」表示するのは非常に難しい
!!
•
スクリプトが動作するような記述は無数にあ るが、その全てを考慮する必要がある– イベントハンドラ、javascript: スキーム、url()
•
ブラウザの挙動まで考慮する必要がある– expression() 、全角の expression()
106
Dreamweaver の場合
おわりに
108
知っておいてほしいこと
• Dreamweaver
を使うと、PHP
のアプリケー ションがとても簡単に作れる•
しかし安全に動くものを作るとなると、必ずしも簡単ではない
•
脆弱性のあるアプリケーションを公開し、悪用されると大変なことが起きる
•
公開するアプリケーションは、安全性に注意して実装するべき
おすすめサイト ( 技術情報 )
•
安全なウェブサイトの作り方 改訂第2
版– http://www.ipa.go.jp/security/vuln/websecurity.
html
• IPA ISEC
セキュア・プログラミング講座– http://www.ipa.go.jp/security/awareness/vend or/programming/
• SecurIT
産業技術総合研究所 グリッド研究 センター セキュアプログラミングチーム110
昨日の常識は今日の非常識
•
次々に発覚する脆弱性•
どんどん出現する新手法•
時代の変遷、手法の変遷常に最新情報を追う必要がある
どうやって情報を集めるか
•
主にWeb
サイト– やはり Web サイトの方が情報が早い
– Webのセキュリティに関しては、そもそも Web サ
イトが一次情報源であることが多い
•
セキュリティ系、IT
ニュース系のサイトをこま めにチェックするのが吉112
おすすめサイト ( 最新情報 )
セキュリティホール