WAFって何してくれるの？をAzureベースで紹介してみた②

# 1.はじめに

[前回の記事](https://qiita.com/takuya_tsurumi/items/db85fce7914c3191ec9d)でWAFの簡単な概要と対策してくれるサイバー攻撃の一部について紹介しました。
今回はWAFが対策してくれるサイバー攻撃の残りについて記載していきたいと思います。
とりあえず、適応させておけばセキュリティ面でも安全だから、適応させてるよ！みたいな方や、
WAFの適応を検討中の方向けに、WAFが何をしてくれているのか、書いていきます。

# 2.WAFが対応しているサイバー攻撃一覧
※[AzureのApplicationGateway(WAF付)](https://docs.microsoft.com/ja-jp/azure/application-gateway/overview#web-application-firewall)が使用している、[OWASP CRS 3.0](https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project)を元に書きます。
以下のサイバー攻撃からアプリケーションを保護します。
　・クロスサイトスクリプティング
　・SQLインジェクション
　・DoS攻撃
　・ポートスキャナー
　・ヘッダーインジェクション、リクエストスマグリング
　・フェイル攻撃、パス攻撃
　・リモートファイルインジェクション
　・リモートコード実行
　・PHPインジェクション
　・セッション固定攻撃
　・ブラックリストに登録されているIP、危険度の高い国からのアクセスを拒否

前回は上記の上から3つ、「DoS攻撃」まで紹介したので、
今回は「ポートスキャナー」以下のサイバー攻撃について紹介します。


## 2.1.ポートスキャナーを用いた攻撃
ポートスキャナーとは、指定先のIPアドレスに対し、開いているポート番号を確認することができるツールです。
脆弱性診断等に使用されますが、悪意のあるユーザーはサイバー攻撃にも使用しているそうです。
このツールを外部から使用される事によって、脆弱性を探られ、その脆弱性に対する攻撃を仕掛けられます。

脆弱性診断ツールとして「[masscan](https://github.com/robertdavidgraham/masscan)」等のソフトがあります。
※こちらのツールを使用する際は、不正アクセス行為の禁止等に関する法律に触れる可能性があるため、ご自身の環境に対してのみ実行される事を推奨します。

ポートスキャナーに対して、Application Gatewayでは、
ツールの使用を検知した時点で403エラーを返します。

## 2.2.ヘッダインジェクション、リクエストスマリング
HTTPレスポンスヘッダの出力処理に関する攻撃手法です。
この脆弱性が存在する場合、「任意のクッキーがセットされる」、
「任意のURLへリダイレクトされる」などの問題が発生する可能性があります。
各攻撃の詳細は以下をご参照ください。
HTTPヘッダーインジェクション：https://www.shadan-kun.com/blog/measure/1387/
HTTPリクエストスマリング：https://www.owasp.org/index.php/Testing_for_HTTP_Splitting/Smuggling_%28OTG-INPVAL-016%29

Application Gatewayでは、ヘッダインジェクション・リクエストスマリングに対して、
URLへリダイレクト処理を挿入したり、改行を挿入したり等のURLに変更を検知した時点で
403エラーを返します。

## 2.3.ファイル攻撃、パス攻撃(Local File Include)
絶対パス(「../」など)を使い、アプリケーションが意図していないファイルを読み込ませ、
ユーザー情報などを抜き取る攻撃手法です。
外部から意図しないコードをサーバ上へアップできる状態の場合、
簡単にこの攻撃が実現してしまいます。

Application Gatewayでは、ファイル攻撃に対して、
絶対パスで意図しないファイルへのアクセスを実行させようとした時点で403エラーを返します。

## 2.4.リモートファイルインジェクション(Remote File Include)
phpのinclude関数等を用い、外部のファイルを参照させ、
危険性のあるサイトに誘導する攻撃手法です。

ちなみに2.3ファイル攻撃と2.4リモートファイルインジェクションの攻撃手法の違いは、
ファイルの読込先が同じサーバ内か外かの違いで、どちらもやっていることはファイルの参照です。

Application Gatewayでは、リモートファイルインジェクションに対して、
意図しない外部URLを読み込ませた時点で403エラーを返します。

## 2.5.リモートコード実行(shellshock)
Bashの脆弱性を利用し、外部からBashコマンドを実行させ、内部のファイルを消去したり、
意図しない操作を実行したりする攻撃手法です。

Application Gatewayでは、リモートコード実行に対して、
Bashコマンドを外部から検知した時点で403エラーを返します。

## 2.6.PHPインジェクション
PHPの脆弱性を利用した攻撃手法です。
2.4リモートファイルインジェクションにも記載しましたが、
phpのinclude 関数等を外部から使用できる状態になっているとPHPの脆弱性を突かれてしまいます。

以下サイトに記載されている関数は気をつけて使用しないと
脆弱性を突かれて攻撃されてしまいます。
https://wepicks.net/phpsecurity-notice_func

Application Gatewayでは、PHPインジェクションに対して、
外部からPHPの関数を実行された時点で403エラーを返します。

## 2.7.セッション固定攻撃
セッションの脆弱性を用いた攻撃手法です。
攻撃の流れについては、以下サイトの「Session Fixation攻撃」がわかりやすいため、
ご参照ください。
https://www.atmarkit.co.jp/ait/articles/0307/09/news001.html

Application Gatewayでは、セッション固定攻撃に対して、
URLにセッションIDを打ち込んでアクセスしようした時点で403エラーを返します。


## 2.8.ブラックリストに登録されているIP、危険度の高い国からのアクセスを拒否
危険度の高い場所からのアクセスを拒否するものです。
2017年の記事ではありますが、危険度の高い国ランキングが公開されているサイトがありましたので、気になる方はご参照ください。
https://scan.netsecurity.ne.jp/article/2017/06/22/39880.html


# 3.まとめ
引き続き、WAFが対応しているサイバー攻撃についてまとめました。
前回も記載しましたが、実際にどんなことから守ってくれているのかを知れると
有用性が見えてくるかと思います。

また、サイバー攻撃について調査をしていると、様々なものが便利になる一方で、
サイバー攻撃も簡単に実行できる環境でもあるのだなという事を感じます。
やはり日頃からセキュリティ意識を持つ必要があるという事を実感させられたので、
意識し続けるためにも日々調査をしていこうと思います。


以下サイトに実際に使用されているルールが記載されているため、調査等を行う際はご活用ください。
・Core Rule Set Inventory
https://www.netnea.com/cms/core-rule-set-inventory/