前回は、情報セキュリティの脅威シリーズの第1回として、ウイルス・ワーム・トロイの木馬・ランサムウェアなどのマルウェアの種類を確認した。今回は、Webサイトやアプリケーションの脆弱性を悪用する「Webアプリケーションへの攻撃」を取り上げる。ECサイトや会員制サービスなど、Webアプリケーションが業務の中心となっている組織にとっては、特に重要度の高いテーマである。
Webアプリケーションへの攻撃とは
Webアプリケーションへの攻撃とは、Webサイトやシステムのプログラムに存在する脆弱性(実装上の不備)を悪用して、不正に情報を取得したり、Webサイトの内容を改ざんしたりする攻撃を指す。マルウェアのように端末に感染するタイプの脅威とは異なり、サーバ側やブラウザ側のプログラムの「作り方の甘さ」につけこむ点が特徴である。
代表的なWebアプリケーションへの攻撃には、以下のようなものがある。
1. SQLインジェクション
Webアプリケーションが、利用者の入力値をそのままデータベースへの命令文(SQL文)に組み込んでしまう不備を悪用し、想定外のSQL文を実行させる攻撃である。これにより、本来は見えないはずのデータベースの内容を盗み見たり、データを改ざん・削除したりすることが可能になる。例えば、ログインフォームの入力欄に特殊な文字列を入力することで、パスワードを知らなくてもログインを突破されてしまうケースなどがある。対策としては、入力値をそのままSQL文に組み込むのではなく、あらかじめ用意した命令のひな型に値を当てはめる「プレースホルダ(バインド機構)」を用いることが基本となる。
2. クロスサイトスクリプティング(XSS)
Webサイトの入力フォームや掲示板などに、悪意のあるスクリプト(プログラムの断片)を埋め込み、そのページを閲覧した別の利用者のブラウザ上でスクリプトを実行させる攻撃である。実行されたスクリプトによって、利用者のCookie情報(ログイン情報を含むことがある)が盗まれたり、偽の入力フォームが表示されて情報を騙し取られたりする被害が生じる。対策としては、利用者が入力した内容をそのままページに表示するのではなく、HTMLタグとして解釈される特殊文字(<や>など)を無害な文字列に変換する「エスケープ処理」を行うことが基本となる。
3. クロスサイトリクエストフォージェリ(CSRF)
利用者が、あるWebサイトにログインしたままの状態で、攻撃者が用意した別のWebサイトや悪意のあるリンクを開いてしまうことで、利用者が意図していないリクエスト(退会処理や送金処理など)を、ログイン中のサイトに対して勝手に送信させられる攻撃である。利用者本人の意思に基づかない操作が、正規のログインセッションを使って実行されてしまう点が特徴である。対策としては、正規のフォームから送信されたリクエストであることを確認するための「トークン」をフォームに埋め込み、リクエストごとに照合する方法が代表的である。
4. ディレクトリトラバーサル
Webアプリケーションが、ファイル名をパラメータとして受け取る際に、「../」(親ディレクトリへの移動を意味する文字列)などを含む入力を適切にチェックしていないことを悪用し、本来アクセスを許可していないディレクトリ(フォルダ)内のファイルに不正にアクセスする攻撃である。設定ファイルやパスワードファイルなど、公開を意図していないファイルの内容が閲覧されてしまう危険がある。
3種類の攻撃の関係を整理する
SQLインジェクション・XSS・CSRFは、いずれもWebアプリケーションのセキュリティ上の不備を悪用する攻撃であるが、狙う対象と被害の向かう先が異なる。
- SQLインジェクション:狙う対象はデータベース。被害はサーバ側の情報漏えい・改ざん
- XSS:狙う対象は他の利用者のブラウザ。被害は閲覧者側の情報漏えい
- CSRF:狙う対象はログイン中の利用者の権限。被害は利用者本人になりすました不正操作
この「どこが狙われ、誰に被害が及ぶか」という整理は、試験の事例問題を解くうえでの判断材料になる。
試験対策のポイント
- SQLインジェクション・XSS・CSRFの3つを、狙う対象(データベース/閲覧者のブラウザ/ログインセッション)で区別できるようにしておく
- 「入力値の検証・エスケープ処理」がXSS対策、「プレースホルダの利用」がSQLインジェクション対策というように、対策名と攻撃名を正しく結びつけて覚える
- CSRFは、利用者が別サイトを閲覧しただけで被害が発生しうる点(利用者自身が不正な操作をしたつもりがない点)を押さえておく
- 事例文中の「入力フォームに不正な文字列を入力したところ…」「別のサイトのリンクをクリックしたところ、意図しない処理が実行された…」といった表現から、該当する攻撃の種類を判断する練習をしておくとよい
まとめ
今回は、情報セキュリティの脅威シリーズの第2回として、SQLインジェクション、クロスサイトスクリプティング(XSS)、クロスサイトリクエストフォージェリ(CSRF)、ディレクトリトラバーサルといったWebアプリケーションへの攻撃を確認した。次回は、組織を標的として持続的に行われる「標的型攻撃とAPT」を取り上げる。


コメント