WAF(Web Application Firewall)は、ウェブアプリケーションの脆弱性を悪用する攻撃を検出・防御し、ウェブサイトを保護するためのセキュリティ製品です。
本ページでは、ウェブサイトを取り巻く脅威と対策、WAFの概要とその必要性について説明します。

狙われるウェブアプリケーションの脆弱性

個人情報の窃取やサイト改ざんなど、ウェブサイトを狙った攻撃による事件・事故が後を絶たず、ウェブサイトのセキュリティ対策が求められています。これらの事件・事故の原因は、SQLインジェクションやクロスサイトスクリプティングといったウェブアプリケーションの脆弱性を悪用した攻撃によるものが代表的であり、その脅威は、ウェブサイトの規模や企業・個人に関係なく、身近なこととして意識する必要があります。攻撃による被害を受けないようにするだけでなく、改ざんによるマルウェア配布サイトへの悪用など、加害者と見られないようにするためにも意識して対策することが重要です。

重要インシデントの内訳

 

ウェブアプリケーションの脆弱性を悪用した攻撃による被害の一例:

  • 情報漏洩ウェブサイトを経由してデータベースサーバー等へ不正にアクセスされ、個人情報をはじめとする機密情報が窃取される被害です。
    ECサイトなど、クレジットカード情報を含む個人情報を大量に扱うサイトにとっては特に深刻であり、信用の低下やサイト停止による機会損失、顧客への補償といった様々な損害を被る恐れがあります。
    脆弱なウェブアプリケーションを介して不正にデータベースへアクセスするSQLインジェクション攻撃による被害が代表的ですが、Apache Struts2 S2-045のようにリモートコード実行(RCE)の脆弱性を悪用されるケースも増えています。
  • 改ざん
    ウェブサイトのコンテンツが不正に書き換えられてしまう被害です。
    近年の改ざん被害では、主義主張などのメッセージ性のある画像を挿入するといった目に見えてわかりやすい改ざんだけでなく、スクリプトを埋め込んでウェブサイトを訪れたユーザーを不正なサイトへ誘導し、マルウェア感染させたりするなどの手法も用いられています。
    このほか、偽の決済ページを表示させることでクレジットカード情報を詐取するなど、ユーザーへの影響が大きい被害も報告されています。ひとたび改ざんが発生すると、そのサイトの信用は著しく低下するだけでなく、加害者として見られてしまう恐れもあります。
    実際の攻撃には、ウェブアプリケーションの脆弱性を悪用するSQLインジェクション攻撃により、データベースに格納されたデータを不正に改ざんする方法やCMS(Content Management System)などのソフトウェアの脆弱性悪用などがあります。

安全なウェブサイト・アプリケーションの構築は、セキュア設計・セキュアプログラミングが基本であり、それを完璧に行うことができれば何の心配もありません。しかしながら、常にセキュアプログラミングのノウハウを持つ自社スタッフや開発委託先を確保できるとはかぎらず、また人が関わる作業であるため、対策漏れなどが生じることも考えられます。また、CMSなどのソフトウェアを使用してウェブサイトを構築している場合、通常自ら脆弱性を修正するといったことは困難です。
内部的な自主検査はもちろんのこと、運用開始前に第三者による脆弱性診断を受ける取り組みは一般化していますが、脆弱性が見つかった場合の対応については、運用上の理由(サイトを停止できない、バージョンアップできないなど)により修正が困難であったり、修正までに長い時間が必要になることもあります。

このような実情から根本的な対策を基本としつつ、別のアプローチでの対策が求められるようになり、ウェブアプリケーションの脆弱性有無とは独立したかたちで攻撃を防御できるWAFの活用が急速に進んでいます。

WAF(Web Application Firewall)

WAFは、ウェブアプリケーションの保護に特化したセキュリティ製品です。同じファイアウォールという名称を含んでいますが、一般的なファイアウォールとは異なり、データの中身をアプリケーションレベルで検査することができます。HTTPプロトコルでやり取りされる要求行や要求ヘッダ、要求本文(パラメータの名前、パラメータの値)などを検査し、不正なアクセスからウェサイトを保護します。

WAFとは

WAFを導入することで、以下のような様々な脅威からウェブサイトを保護することができます。

代表的な脅威・攻撃手法一覧:

SQLインジェクション SQL文を含んだ入力データを送信してデータベースに不正にアクセスする。データベース内の機密情報の漏洩やデータ改ざんにより、大きな被害を受ける恐れがある。
クロスサイトスクリプティング 脆弱な標的サイトにアクセスするように仕向けることで、ウェブサイトが本来想定していない機能(スクリプト実行など)をブラウザ側で実行させる。Cookieのセッション情報が盗まれるなどの恐れがある。
クロスサイトリクエストフォージェリ 対象ウェブサイトの投稿や登録といった重要な機能について、他のサイトから本来の手順を経ずにクライアントに実行させる。なりすまし投稿などに悪用される恐れがある。
OSコマンドインジェクション OSコマンドを含んだ入力データを送信してサーバー上のリソースに不正にアクセスする。サーバー上で任意のコマンドが実行された結果、大きな被害を受ける恐れがある。
ディレクトリトラバーサル ディレクトリパスを遡ってサーバー上のファイルに不正にアクセスする。本来公開を意図していないファイルへの参照・実行の恐れがある。
改行コードインジェクション
(HTTPヘッダ、メールヘッダ)
改行コードを含んだ入力データを送信して、HTTPレスポンスヘッダやHTTPレスポンスを改ざんする。クライアントは偽りのCookieやページ内容による影響を受ける可能性がある。任意のメールヘッダの挿入や本文の改変、不正なメール送信に悪用される可能性もある。

 

ウェブサイトで使用されるソフトウェアやフレームワークに深刻な脆弱性が見つかった場合など、上記の対策以外にもWAFが有効なケースがあります。2017年に脆弱性が公開され、国内でも数多くの被害が発生したApache Struts2の脆弱性(S2-045)では、日本時間の3月6日に脆弱性が公開されると、短時間でPoC(Proof of Concept)が確認されました。※
国内での被害発生は、3月8日に確認されていますが、多くのWAFメーカーは3月7日の時点でS2-045を悪用する攻撃に対応したシグネチャをリリースしていました。(Apache Struts2の脆弱性(S2-045)を狙った攻撃と「SiteGuard」シリーズの対応
ウェブサイトで使用しているソフトウェアやフレームワークについて、脆弱性に対応するための更新が公開されたとしても、すぐにバージョンアップすることは困難であるという運用上の課題は多いと考えられ、このようなケースにおいてもWAFが有効だという一つの事例となりました。WAFを活用することで、単に攻撃を防御できる・ウェブサイトを保護できるという面だけでなく、攻撃を検出することで、自身のサイトに対するサイバー攻撃の状況を把握することにもつながります。

※ PoC(Proof of Concept):実際に攻撃が成立することを実証しているコードのこと。一般的には「概念実証」の意味があります。

WAFの機能と種類へ