簡単にWebを構成する要素を言えば、Webブラウザ、Webサーバーとその間で情報をやり取りする仕組みで構成されていると言えます。
このWebに対する攻撃には、Webサーバーを狙ったものと、Webブラウザを狙ったものがあります。
このうち、Webサーバーに対する攻撃には大きく分けて、Webサーバー自体を使用不能にするために行なわれるDoS/DDoS攻撃と、Webサーバーから重要な情報を取り出すために行なわれる攻撃があります。
DoS/DDoS攻撃
嫌がらせや政治的な意図をもって行なわれるものです。
一時的にWebサーバーの利用ができなくなりますが、多くの場合は比較的短時間で終わります。
DoS攻撃
特定の攻撃者からWebサーバーに対して大量のトラフィックを送り込み、Webサーバーの処理を遅くしたり、ダウンさせてしまう攻撃です。
攻撃側のIPアドレスがわかれば比較的容易に防御することが可能です。
DDoS攻撃
不特定多数のマシンから同じく大量のトラフィックをWebサーバーに対して送り込む攻撃です。
この不特定多数のマシンは、IPアドレスを詐称することで行なわれるリフレクション攻撃の他、ポットといわれる乗っ取られたマシンが使われることも多く、防御は格段に難しくなります。
Webサーバーから情報を抜取る攻撃
重要な情報を抜き出すために行なわれる攻撃は、さらに2種類に分類することができます。
- 一般的な情報システムに対して行なわれるのと類似の方法で行なわれるもの
- Webシステム固有の仕組みを突く攻撃
重要な情報を抜き出すために行なわれる攻撃はその目的もいろいろと考えられ、より深刻な事態に陥ることもあるため、注意が必要です。
一般的な情報システムに対して行なわれるのと類似の方法で行なわれるもの
一般的な情報システムに対するものと類似の典型的な攻撃の方法は、ID、パスワードの窃取です。
インターネット上で公開されている、ECサイトやカスタマーサポートのためのサイトでは、ユーザーごとに重要な情報の入力、出力を行なう目的で、サイトにログインするためにIDとパスワードが設定されています。
これに対して「ブルートフォースアタック(総当たり攻撃)」、「辞書攻撃」、「リスト型攻撃」といわれる攻撃がよく行なわれます。
「ブルートフォスアタック」「辞書攻撃」
シラミ潰しにパスワードを探る方法でそのためのツールが使われます。
パスワードの桁数が6桁程度でかつ数字のみ、といった設定では極めて短時間に破られてしまいます。
「リスト攻撃」
ID、パスワードの使い回しがよく行なわれていることを利用したもので、一度流出したID、パスワードを流用し、他のサイトに対してこれを試すことで侵入を試みる方法です。
これらの攻撃を防ぐには、以下のような方法をとる必要があります。
- 複雑なID、パスワードを利用するとともに使い回しをやめる
- ID、パスワードの投入回数を制限し、その回数を超えると入力をロックする
- ID、パスワードに加えて別の認証用のキーを使う
Webシステム固有の仕組みを突く攻撃
Webサーバーの管理者用の接続経路を突く攻撃もあります。
Webサーバーには運用管理をする目的で、管理者が直接サーバーに操作を行なえるインターフェスが用意されています。
このインターフェースが攻撃者にわかられてしまうと、容易にWebサーバーに侵入されてしまいます。
ID、パスワードで保護すると同時に、このインターフェースは特定の端末からしか利用させないようアクセスできるIPアドレスを制限するといった防御が必要です。
Webシステム固有の仕組みを突く攻撃には、以下のようなものがあります。
- クロスサイトスクリプティング(XSS)
- httpヘッダインジェクション
- SQLインジェクション
クロスサイトスクリプティング(XSS)
クロスサイトスクリプティングは「第三者のサイトに悪意のあるスクリプトやHTMLを埋め込み、ここにアクセスしてきたユーザーに対して、これらのスクリプトやHTMLを実行させること」といえます。
「セッションハイジャック」と呼ばれる攻撃や、HTMLを仕込まれることで、偽のログイン画面を表示し情報を抜き取る、といったことが行なわれます。
このような攻撃に対処するには、Webサーバー側で悪意のあるスクリプトやHTMLを埋め込まれないように制限する仕組みを入れる必要があります。
httpヘッダインジェクション
httpヘッダインジェクションも、クロスサイトスクリプティングに似た手法です。
閲覧しているWebページに、悪意のあるスクリプトやHTMLを埋め込んだURLを表示し、このURLをWebブラウザ側で参照することによって情報を盗みます。
攻撃者がWebサーバー側に悪意のあるスクリプトやHTMLをhttpのリクエストに仕込んで送り込み、Webサーバー側の対応するURLの記述が改ざんされることで実行されます。
SQLインジェクション
SQLインジェクションは、Webサーバーとデータベースが連携して動く場合に、Webサーバーの入力フォームにデータベースを悪意をもって操作するSQL文を入れることで、違法に情報を入手する手法です。
これらが代表的なWebサーバーに対する攻撃手法です。
これらは10年以上も前から行なわれている攻撃ですが、最近でも後を絶ちません。
これはWebサーバーで利用されているアパッチなどのWebサーバーソフト、CGI、CMS、アプリケーションに脆弱性が存在し続けていることに起因しています。
ソフトウェアは常に新しい機能に対応した更新が行なわれます。
しかし、アプリケーションソフトを新たに開発した場合などでも、事前の脆弱性チェックが甘いと、脆弱性をもつことになってしまいます。
攻撃に対処するには、新しいソフトウェアを開発し利用を開始する前に、十分にセキュリティ診断を行なうだけでなく、運用中でも利用しているソフトウェアに対する最新のパッチを適用する、といった注意が必要になります。
WAFの適用
WAFはWebサーバーとインターネットの間に設置され、Webサーバーへの通信をモーター、攻撃と見なされるWebサーバーへの通信を遮断する機能を持っています。
アプリケーションソフトの脆弱性が見つかったり、Webサーバーソフトなどへのパッチの適用が遅くなった場合でも、WAFによって対応する脆弱性に対する攻撃を防ぐことが可能になります。