メニュー

WAF(Web Application Firewall)とは:WAFの基礎知識1

WAFの基礎知識

更新日:2020年2月21日(初回投稿)
著者:増井技術士事務所 代表 増井 敏克

少し古いWebアプリケーションを現在も使っているが、開発元の会社がもう存在していない。Webアプリケーションを狙った攻撃が高度化しているという話を聞くものの、どう対応していいのか分からない。脆弱(ぜいじゃく)性が見つかったが、すぐに修正できない。そんな中、少しでもセキュリティを高めるために、WAFを検討している人は多いでしょう。本連載では、全6回にわたりWAFの基礎知識について解説します。第1回は、実際にWAFを使うと、どのような効果があるのかを説明します。

今すぐ、技術資料をダウンロードする!(ログイン)

1. Webアプリケーションの脆弱性

「コンピュータ、ソフトがなければただの箱」という言葉があるように、コンピュータを使うときにはソフトウェアが不可欠です。WindowsなどのOSだけでなく、WordやExcelといったオフィスソフト、WebブラウザやPDF閲覧ソフトに加えて、画像処理ソフトや年賀状作成ソフトなどを使っている人も多いでしょう。そして、インターネット経由で使用するWebアプリケーションも、ソフトウェアです。

便利なソフトウェアが多く開発されているなか、これらには、必ずといっていいほど不具合が存在します。Windowsなどのように大規模なソフトウェアでは、毎月のように修正プログラムが提供されています。また、スマートフォンアプリでも、機能追加だけでなく不具合の修正がよく行われます。利用者が想定している機能と異なる動作をするような不具合であれば誰もが気付きますが、不具合の内容はこれだけではありません。ここで取り上げるのは、セキュリティ上の不具合のことで、脆弱性と呼ばれます。多くの人は、その存在に気付くことはありません。しかし、攻撃者がそれに気付いて悪用すると、ウイルス感染や情報漏えい、改ざんなどさまざまな被害が発生します(図1)。

図1:不具合と脆弱性の違い

図1:不具合と脆弱性の違い(引用:増井敏克、図解まるわかりセキュリティのしくみ、翔泳社、2018年、P.97)

この脆弱性は、攻撃者だけでなく、セキュリティの研究者などが発見することもあります。その内容が開発者に報告されると、開発者が該当箇所を修正し、修正プログラムを公開します。利用者がこの修正プログラムを適用することで、問題点を解消できます。Windowsやスマートフォンアプリなどの場合は、端末内にあるアプリケーションに対して更新を適用するため、自動的に更新する仕組みを備えたものが増えてきました。

一方、Webアプリケーションの場合、Webブラウザから送信するリクエストに、攻撃者が悪意のあるコードを入力することで、不正な処理が実行されます。一般の利用者は、リクエストを送信して結果を受け取るだけなので、サーバ側に脆弱性が存在しても、対処できることはほとんどありません(図2)。

図2:Webアプリケーションでの不正な処理

図2:Webアプリケーションでの不正な処理(引用:増井敏克、おうちで学べるセキュリティのきほん、翔泳社、2015年、P.250)

セキュリティの研究者やサーバの管理者が脆弱性に気付き、不具合を修正する作業を行わないと、個人情報の漏えいや改ざんなどを防ぐことはできません。そこで必要になってくるのが、次に紹介する脆弱性診断であり、WAFなのです。

2. 脆弱性診断で守れるもの

ソフトウェアの開発時には、開発者がテストを行います。一般的なテストは、想定した操作が正しく動作することを確認する作業です。つまり、一般的な使用における不具合であれば、テストで検出できます。しかし、セキュリティ上の不具合である脆弱性は、検出できません。そこで、通常のテストに加えて、攻撃者の視点から脆弱性が残っていないかをチェックする作業が必要になります。これが、脆弱性診断です(図3)。今回は、Webアプリケーションに対する脆弱性診断を中心に解説しますが、実際にはデスクトップアプリやスマホアプリについても、脆弱性診断が行われます。

図3:脆弱性診断

図3:脆弱性診断(引用:増井敏克、図解まるわかりセキュリティのしくみ、翔泳社、2018年、P.113)

脆弱性診断には、ツールを使って機械的に実行する自動診断と、専門家が攻撃者の視点に立って手作業で試す手動診断があります。自動診断では、一般的によく使われる攻撃手法を、ツールが順に試します。フォームなどの入力欄に不正な文字を埋め込んだり、URLを書き換えたり、といった典型的な攻撃を順に試すことで、SQLインジェクションやクロスサイトスクリプティングなどの基本的な脆弱性であれば、漏れなく発見できます。SQLインジェクションやクロスサイトスクリプティングについては第5回で詳しく説明します。

ただし、人間にしか判断できない脆弱性も存在します。例えば、あるユーザーがログインしているときに、URLを書き換えるだけで他人がログインしている状況に変わってしまうような場合です。それが正しい動作なのか、コンピュータが判断することは困難です。また、特殊な作りになっているアプリケーションの場合、ツールでは見つけられないため、専門家が怪しいと思った部分を手作業で診断することもあります。このように、自動診断と手動診断を組み合わせて、さまざまな攻撃パターンを防御する必要があります。

3. WAFの効果

開発時に生じてしまう脆弱性は、開発者が気を付けていれば防ぐことができるのかもしれません。実際、脆弱性を少しでも減らすため、テストやレビューといった作業を行います。しかし、開発者も人間である以上、全ての脆弱性を取り除くことはできません。また、開発時は問題なくても、新しい攻撃手法の登場によって脆弱な部分ができてしまう可能性もあります。

自動診断や手動診断などの脆弱性診断を実施することで、多くの脆弱性を発見できます。それでも、実際には漏れがあるかもしれません。脆弱性が存在した場合、それを指摘することは簡単ですが、見つからないからといって存在しないとは言い切れないのです。「悪魔の証明」ともいわれるように、ないことを証明するのは難しいものです。脆弱性が見つかっても、修正できない場合があります。そのWebアプリケーションを開発した会社が既に存在しない、修正にかかる費用を工面できない、修正までに時間がかかるなど、さまざまな理由が考えられます。

そこで検討されるのが、WAF(Web Application Firewall)の導入です。WAFは名前のとおり、Webアプリケーションに特化したファイアウォールで、Webアプリケーションに対するさまざまな攻撃を防ぐために使われます。一般的なファイアウォールとは異なり、通信の中身をアプリケーションレベルで解析して防御できるのが特徴です。WAFを導入することで、脆弱性診断でのチェックに漏れた脆弱性を狙っての攻撃を防げる可能性があります。また、修正できない脆弱性があった場合にも、取りあえず一時的に導入する、という方法が考えられます。このため、脆弱性診断を行うことはもちろん必要ですが、さらにセキュリティを高めるという目的で、WAFを導入することが多くなっています(図4)。

図4:WAFを使う場面

図4:WAFを使う場面(引用:増井敏克、図解まるわかりセキュリティのしくみ、翔泳社、2018年、P.115)

~Tech Note編集部からのコメント~

いかがでしたか? 今回は、Webアプリケーションのセキュリティを高めるWAFについて説明しました。次回は、さまざまな種類のWAFを解説します。お楽しみに!

  • セミナー3月
  • カタログバナー
  • 販促_無料出展

ピックアップ記事

tags

  • 特集バナー0323_01
  • 特集バナー0323_02
  • 特集バナー0323_03
  • 特集バナー0323_04
  • 特集バナー0323_05
  • 特集バナー0316_01
  • 特集バナー0316_02
  • 特集バナー0316_03
  • 特集バナー0316_04
  • 基礎知識一覧