Webアプリケーションへの攻撃と防御
Webアプリケーションへの攻撃は、利用者が送る入力データの扱い方の不備を突き、想定していない処理をサーバやブラウザに行わせるものが中心である。防御の基本は、外部からの入力を信用しないことを前提に、通信の検査、入力値の処理方法、実行環境の制限を組み合わせることにある。試験では、個々の攻撃手口と、それに対応する防御策を正しく結び付けられるかが問われる。
攻撃の仕組みと入力データの扱い
Webアプリケーションの多くの攻撃は、入力データが単なる値として扱われず、命令や構文の一部として解釈されることで成立する。SQL文、HTML、OSコマンドといった解釈器に利用者の入力が混ざり込む点が、共通の原因である。
クロスサイトスクリプティング(XSS)は、フォームの入力欄などに悪意あるJavaScriptを含むデータを入力し、そのデータがWebページに出力されることで、閲覧者のブラウザ上でスクリプトを実行させる攻撃である。攻撃者はサーバを直接乱すのではなく、閲覧者の端末で動作させる点に特徴がある。
OSコマンドインジェクションは、アプリケーションがシェルを起動できる言語機能を使って外部コマンドを呼び出す際、利用者の入力がコマンドの一部として解釈される攻撃である。入力の内容によっては、意図しないOSコマンドが実行されるおそれがある。
ドライブバイダウンロードは、利用者がWebサイトを閲覧しただけで、気付かれないまま不正プログラムがPCに転送される攻撃である。利用者が危険なファイルを自ら開く操作を必要とせず、閲覧という日常的な行為が契機となるため、利用者の注意だけでは防ぎにくい。
通信を検査するWAFの役割
WAF(Web Application Firewall)は、WebアプリケーションとのHTTP/HTTPS通信の内容を検査し、攻撃に特徴的なパターンを検知して遮断する仕組みである。Webアプリケーションに向けられた攻撃を阻止することが目的であり、通信の内容そのものを検査する点で、宛先やポートだけを見る一般的なファイアウォールとは役割が異なる。
WAFの防御対象はHTTP/HTTPSのWebアプリケーション向け通信に限られる。このため、REST APIの脆弱性を狙った攻撃には有効だが、DNSキャッシュポイズニング、不正中継されたメール配信、電子メール爆弾のように、Webとは別の通信経路を使う攻撃は防御対象外である。
WAFは、ブラウザ通信の改ざんをPC内で監視する仕組み、サーバOSへの不正ログインを監視する仕組み、ファイルのマルウェア感染を検出する仕組みとは、監視の対象が異なる。Webアプリケーションを守る機能として位置付けて理解することが必要である。
この節の続き
- 入力値の処理による対策
- 実際の場面
- 試験で問われやすい区別
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む