システム管理者にとって、サイバー攻撃対策は必須事項です。仮にデータ流出やシステム破損などを起こせば、企業の社会的信用は大きく失われるからです。たとえば、SQLインジェクションはサイバー攻撃の代表例で、この攻撃によって深刻な被害が出る可能性もあります。対策を立てるにあたって、攻撃者の手口を研究しておくことが必要です。この記事ではWebアプリケーションの脆弱性や攻撃の種類について解説させていただきます。
パソコンでインターネットを利用している以上、ほとんどのユーザーが何らかのWebアプリケーションを使っています。そして、Webアプリケーションには脆弱性が発覚することも珍しくありません。脆弱性とは、「攻撃に対する弱さ」を意味します。ネットユーザーの中には不正に他者の端末、システムへとアクセスしようとするサイバー攻撃者もいます。彼らは攻撃をする前に、Webアプリケーション上の脆弱性を調べ、ピンポイントで突いてくることが定番の手口です。つまり、脆弱性をそのままにしておくとサイバー攻撃を受ける確率が高まるので、対策が必須なのです。
有名メーカーの開発したWebアプリケーションであれば、「対策を立てなくても最初から安全ではないのか」と考える人もいるでしょう。しかし、有名メーカーが設計ミスを起こさないという確証はどこにもありません。脆弱性を抱えたままリリースされたアプリケーションの事例はいくつもあります。
また、仮に、まだ発見されていない脆弱性に攻撃者が先に気づいてしまったら、安全と信じられていたWebアプリケーションまで脅威にさらされてしまいます。有名無名に関係なく、全てのWebアプリケーションでは脆弱性対策が必要なのです。
もしも企業がサイバー攻撃を受けて被害を生んでしまった場合、世間からきびしい批判が向けられるのは避けられません。特に、もともと脆弱性が発見されていたWebアプリケーションを無防備のまま使い続けていたケースでは言い逃れができないでしょう。情報セキュリティへの意識、ネット社会での倫理観などが欠如していたとして、大きく社会的信用は失墜します。ときには、企業に致命的なダメージを与えることすらありえるのです。こうした事態を招かないためにも、脆弱性対策は真剣に取り組んでおくべきテーマです。
Webアプリケーションの脆弱性対策が重要な理由として、ファイアウォールで防ぎきれない攻撃がすでに報告されている点も挙げられます。これらの攻撃にはWebアプリケーションで対応するしかありません。当然ながら、無策のままだと容易にアプリケーションへの攻撃を許してしまい被害は拡大します。以下、代表的なWebアプリケーションの脆弱性を突いたサイバー攻撃を紹介します。
アプリケーションのキャパシティをはるかに超えたデータを送りつけ、誤作動を起こさせる手法です。そのままパソコン本体を乗っ取り、ネットワーク上の他の端末へと攻撃を移していきます。
ヘッダなどに埋め込まれた不正なデータがHTMLとして表示されることで、攻撃的なスクリプトが実行される手口です。機密性の高いデータを盗むときなどに用いられます。
意図的にWebアプリケーションでエラーを起こさせ、情報を取得する攻撃です。
データを入力する際、プログラムに与えるパラメータ中にOSへの攻撃命令を忍ばせておく方法です。マルウェアを用いたサイバー攻撃のほか、データを意図的に改ざんするときなどに採用されます。
Webアプリケーションの脆弱性を利用し、ユーザーに偽のページを取得させるサイバー攻撃です。偽ページは攻撃者の制御下に置かれており、ユーザーは気づかないままシステムを操作されてしまいます。
データベースと連動しているサイトを狙った手法です。本来ならパスワードやIDを入力する領域で、あえてサーバーの命令文である「SQL」を打ち込みます。サイトに脆弱性があると入力者にデータベースを更新する権利が与えられ、改ざんや破壊活動が可能になります。
そのほかにも、Webアプリケーションに向けられたサイバー攻撃の種類はたくさんあります。脆弱性を克服する方法が見つかったとしても、攻撃者がまた新しい手法を開発する繰り返しが起こっているといえるでしょう。そのため、Webアプリケーションの脆弱性対策は一度行っただけで安心とはいきません。攻撃者がいかなる手口を用いたとしても、早急に対処できるようセキュリティを意識し続けることが大事です。
Webアプリケーションの脆弱性対策では、ベンダーのリリースを待つことが基本といえます。なぜなら、ユーザー側が脆弱性に気づけるだけの知識を有していないケースが大半だからです。また、偶然脆弱性を見つけられたとしても、それを修正できる技術者を雇っている企業はごく少数です。そこで、ベンダーの開示している情報を日々チェックする必要があります。脆弱性対策は、具体的な方法がホームページに掲載されたり、修正パッチが発表されたりして伝えられます。ただ、これらの発表で攻撃者も脆弱性を認識することが珍しくありません。修正前のWebアプリケーションを狙われないよう、すぐアナウンスに反応することが肝心です。
入力フォームで値をチェックする機能を「バリデーション」と呼びます。バリデーション機能の搭載されているWebアプリケーションは、想定外の文字や文字列を受け付けません。つまり、その領域で本来入力されることのない文字を使用することができないのです。バリデーションは入力コマンドによって脆弱性を引き出そうとする攻撃に対し有効です。Webアプリケーションを選定するうえで、バリデーションの有無は基準のひとつになりえます。
Webアプリケーションを自社で開発して使用する企業もあります。このとき、開発段階で動作確認のテストが重要なのは当然です。ただ、アプリケーションの脆弱性を確かめるためにもテストは大きな役割を果たします。
担当者はテストの段階で不正な入力値を完全に排除する作業を行わなくてはなりません。なぜなら、排除しないままアプリケーションを実用化すると不正アクセスに対してエラーメッセージを返してしまいます。メッセージにはデータベース言語をはじめとして、脆弱性のヒントになる情報が満載です。攻撃者によってはわざとエラーメッセージを表示させて脆弱性を確認しようとします。こうした悪意を跳ね返すためにも、アプリケーションのテストは肝心です。
多くのユーザーに支持されているWebアプリケーションですら、絶対的な安全性は保証されていません。いつ脆弱性が発覚してサイバー攻撃の標的にされるかは予測がつかないのです。だからこそ、脆弱性があるという前提で対策を立てることは非常に重要です。セキュリティへの意識を高く持ってWebアプリケーションを運用しましょう。
サイバーセキュリティクラウドが提供する「攻撃遮断くん」はWebサイト・Webサーバへのサイバー攻撃を可視化し、遮断するセキュリティサービスです。
ブルートフォースアタック、クロスサイトスクリプティング、Webスキャンと言ったサイバー攻撃をリアルタイムで検知・遮断しています。
ユーザーごとに提供される管理画面で、契約したWebサーバへの攻撃の情報を確認することができます。
この記事と一緒に読まれています
Webアプリケーションのセキュリティのために読んでおきたい記事
2019.11.01
セキュリティ対策
Webアプリケーションのセキュリティ対策を学ぶときに便利なスライドまとめ
2019.09.02
セキュリティ対策
Webアプリケーションのセキュリティ対策を行うべき5つの理由
2020.03.29
セキュリティ対策
2019.10.12
セキュリティ対策
2019.09.11
セキュリティ対策
Webアプリケーションの脆弱性対策が必要な理由と起こりうるトラブルについて
2020.02.10
セキュリティ対策