診断の現場からの提言!Webサイトの脆弱性が潜む場所を知る
これまでの記事でWebサイトのセキュリティについてお伝えしてきましたが、実際にWebサイトの診断を行っていると、脆弱(ぜいじゃく)性が発見されるパターンが非常に似通っていて、同じ脆弱性が同じような画面で発見されることがあります。
最終回となる今回は、実際に診断していて発見されるケースについて、紹介したいと思います。
1. こんな場所に発見されるケースが多い
(1)検索画面(トップページや全画面共通)
・発見される脆弱性:XSS(クロス・サイト・スクリプティング)
検索結果を表示する画面で、入力されたキーワードを表示しようとして、XSS(クロス・サイト・スクリプティング)が発生するケースがあります。
汎用的なモジュールを使用する場合は問題がないケースもありますが、自社内や開発業者のハンドメイドの場合には、脆弱性が作り込まれているケースが見受けられます。
(2)入力フォーム(問合せフォームや会員登録など)
・発見される脆弱性: XSS(クロス・サイト・スクリプティング)
問合せフォームや会員情報の登録画面など、「入力画面」→「確認画面」→「完了画面」といった画面遷移を行う場合、「入力画面」で入力した内容を確認するために「確認画面」に入力された内容を表示しようとして、XSSが発生するケースがあります。
いかにもXSSの典型といったパターンなので、今更このようなところに作り込まれないだろうと思いますが、対策漏れの場合も含め、依然として脆弱性が発見されることが多い個所です。
・発見される脆弱性: CSRF(クロス・サイト・リクエスト・フォージェリ)
ログイン後の機能に会員情報の変更や決済機能などがあり、「入力画面」→「完了画面」、または、 「入力画面」→「確認画面」→「完了画面」といった画面遷移を行う場合、「完了画面」で実施する登録や変更・削除といった機能が正規の画面遷移(「入力画面」→「完了画面」)を経ることなく、攻撃者の意図した通りに実行されてしまう脆弱性です。
後半でも説明しますが、CSRFは認知度が低いためか、依然として多くのサイトで発見されています。
図1:CSRF(クロス・サイト・リクエスト・フォージェリ)とは |
・発見される脆弱性: 自動化の停止が不適切
CSRFが存在する場合、多くのケースで「自動化の不適切」という脆弱性も存在します。これは、攻撃者がプログラムなどを使って、同様の攻撃コードを連続的に送信した場合、それを停止することができずに実施し続けてしまう脆弱性です。
この攻撃が実施されると、大量のメールが送信されメール・サーバーの機能が停止してしまったり、データベースに大量の負荷がかかったりして、Webサービスに影響を及ぼす可能性があります。
(3)一覧表の改ページ(ページ番号や次ページの記号など)
・発見される脆弱性: XSS(クロス・サイト・スクリプティング)
検索結果を一覧表形式で表示する際に、1枚の画面で収めきれない場合、ページナビゲーション機能が必要です。
一覧表ページの上部や下部にページ番号や改ページを示す記号などが表示され、それをクリックすると希望するページへ画面遷移するものです。大量のデータを表示したい場合は非常に有用な機能です。
しかし、ページナビゲーションの操作を行う際、XSSが発生する可能性が非常に高いです。検索条件の入力から検索結果を表示するロジックまで慎重に脆弱性対策がなされている場合でも、なぜかページナビゲーションの個所で脆弱性対策が漏れているケースがあります。
過去には、ページナビゲーション処理をフレームワークなどに頼った場合、そのフレームワーク自身に脆弱性があるケースが多かったのですが、最近はページナビゲーション処理を自作されるケースで脆弱性が発見されるようです。一覧表示機能を実装された段階で安心されるのか、後付けで別の方が実装されたのか、ページナビゲーション機能では対策が漏れることが多く見受けられます。
図2:ページナビゲーション機能の例(クリックで拡大) |