Barracuda Vulnerability Manager (BVM)を試してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。
くコ:彡がトレードマークの阿部です。

今回は、Barracuda Vulnerability Manager (BVM)をご紹介します。

概要

Barracuda Vulnerability Manager (BVM)とは

BVMは、Barracuda社が提供するウェブアプリの脆弱性スキャンサービスです。
グラフや表によるレポートの出力を行えるほか、検知した脆弱性をWAFに連携する事が出来ます。
BVMはSaaSとして提供され、アカウントを作成すればすぐに使い始める事が出来ます。
プレスリリースによると、期限付きで無償との事で2015年5月現在は無償で利用する事が出来ます。

スキャン対象(試験サイト)の準備

試験用のWEBサイト

こちらの記事でご紹介した、SQLインジェクション脆弱性を持つWebサイトを用意しました。
BVMを使って、SQLインジェクション脆弱性を検知出来るかを確認してみます。

セキュリティグループ

試験サイトに設定するセキュリティグループでBVMからのアクセスを許可します。
BVMが持つアドレス帯はこちらで公開されています。
サービス開始前のサイトであっても、安心してスキャン出来ますね。
今回設定したセキュリティグループは以下の通りです。

タイプ 送信元
HTTP 64.235.153.133
HTTP 64.235.153.134
HTTP 64.235.153.135
HTTP 64.235.153.136
HTTP 64.235.150.121

DNSドメイン

Route53を使ってhttp://www.○○○.classmethod.infoにて、WEBサイトにアクセスできるようにします。
Hosted zoneを作成し、Aレコードを登録します。

1

BVM設定

CloudControlのユーザ登録

BVMはCloudControlの機能として提供されます。CloudControlのユーザ作成を行いましょう。
http://login.barracuda.comに接続し、[ユーザの作成]を選択します。
ユーザ登録の手順は一般的なウェブサイトと同様です。

CloudControlにログインし、左メニューから[Vulnerability Manager]を選択します。
電話番号、国、郵便番号を入力し、SIGN UPします。

4

5

スキャンには認証が必要

BVMの[Active Scans]タブ -> New Scanを選択します。
Scan名とScan URLを入力した所、ドメインがverifyされていない旨のエラーメッセージが表示されました。
悪意のあるユーザーが、むやみに他のWEBサイトをスキャン出来てしまったら問題です。
スキャンを行うドメイン宛てのverifyメールを受信出来る場合に、BVMを利用出来る仕組みになっています。

21

verifyメールの受信

ドメインにメールサーバがありメール受信が可能な場合、本作業は不要です。
テストに利用した○○○.classmethod.infoドメインにはメールサーバが無いため、SESを利用してs3にメール受信出来るようにしました。

手順はDevIOの[新機能]Amazon SES でメール受信が出来るようになりました!または、Amazon Simple Email Service 開発者ガイドをご参照下さい。

受信したverifyメールは以下の通りです。該当のURLをコピー&ペーストすると、verifyが実行されます。

22

Scan設定

一度verifyしてしまえば、以降はverify無しでもスキャン出来るようです。
verify済みのURLを指定すると、緑のチェックマークが表示されました。

1

Generalタブでは、スキャン開始時刻やレポートを受け取るメールアドレスの指定などを行えます。

項目 内容
When to Scan スキャンの即時実行 or スケジュール実行
Maximum Length of Scan (Hours) スキャンの最大実行時間。
スキャンが終わっていなくても、時間に達したら終了する
Email Report/Email Address スキャン完了時のメール通知

Crawlingタブでは、クロールに利用するブラウザなどの指定を行います。

項目 内容
Browser(s) to crawl as クロールに利用するブラウザの指定(FirefoxやIE等)
iPhoneやAndroidの指定も可能
Requests 秒間あたりのリクエスト数
Maximum crawl depth スタートページからのクロールの深さ
 evasion techniquesの有効or無効

Authenticationタブでは、サイトの認証情報を設定します。
ログイン処理を伴うサイトであっても、認証情報を指定する事でスキャンが可能です。

対応する認証方式
Basic
Digest
NTLM
HTMLフォーム

こちらの記事で紹介したサイトの場合、以下のように設定します。
「Authentication test succeeded.」と表示されれば、OKです。

2

Exclusionsタブでは、除外設定が可能です。

項目
Exclude hostnames or IP addresses
Exclude URL patterns
Exclude file extensions

Scan設定を行い、[Start Scan]を選択します。しばらく待つと、Scanが開始されます。

3

スキャン結果

メール通知

スキャン時にメール通知を有効にしている場合、以下のようなメールが送信されます。

4

スキャン結果のダウンロード

スキャン結果はBVM画面から確認出来るほか、「PDF」「XML」「CSV」の形式でエクスポートする事が出来ます。

5

スキャン結果の閲覧

BVM画面からスキャン結果を確認してみましょう。
Criticalな脆弱性が2件見つかりました。

6

検知した内容ごとに、重要度と確度が表示されます。

重要度
Critical
High
Medium
Low
False Positiv
確度
Certain
Likely
Possible

SQLインジェクションは、「Critical」「Likely」として検知されました。

7

WAFセットアップ

EC2作成

脆弱性のあるサイトに対して、Barracuda WAFを導入してみます。
AWS Marketplaceにて、WAFのAMIが提供されています。今回はこちらのBYOL版を使用しました。
EC2作成後、EIPを付与します。

セキュリティグループ

  • Barracuda WAFに適用するセキュリティグループ(sg_waf)
タイプ プロトコル ポート範囲 送信元
HTTP TCP 80 0.0.0.0/0
カスタムTCPルール TCP 8000 拠点IPアドレス
  • WebServerに適用するセキュリティグループ(sg_webserver)
タイプ プロトコル ポート範囲 送信元
HTTP TCP 80 sg_waf

初期設定

Webブラウザからhttp://WAF-EIP:8000/にアクセスします。
ライセンス設定画面表示されます。TokenとDefault Domainを入力し、Provisionを選択します。

ログイン画面が表示されますので、ユーザ[admin]、パスワード[インスタンスID]を入力します。

サービス登録

[基本設定] -> [サービス] を選択します。
サービス名(MyWebSite)及び、WAFとWebサーバのPrivateIPアドレスを入力し、[追加]を選択します。

13

DNSの切り替え

http://www.○○○.classmethod.infoに接続した時に、WAFを経由するようにDNSレコードを変更しましょう。
wwwのValueをWAFが持つEIPに設定します。

8

アクティブモード

WAFの検知モードを変更します。
基本設定 -> サービス -> MyWebSite(登録したサービス名) -> Edit -> 基本せュリティ -> モード -> アクティブを選択します。
デフォルトのパッシブモードは、侵入をロギングしますがブロックを行いません。
アクティブモードに変更し、攻撃をブロックします。

WAF経由でWEBサイトに接続してみる

パスワード欄に'OR 'A' = 'Aを指定してみましょう。
こちらの記事でご紹介した通り、WEBサイト単体の場合、全てのユーザーのメールアドレスが表示されました。
WAF経由でアクセスでは、The specified URL cannot be found.と表示されました。

12

13

WAFのログを確認すると、SQLインジェクション攻撃をブロックした事がわかります。
WAFを導入した事でSQLインジェクションの被害を防ぐ事が出来ました。

14

スキャン結果のインポート

BVMでエクスポートとしたXMLファイルを、WAFにインポートしてみます。

ファームウェアアップデート

XMLのインポートはVersion8.1以上で対応しています。
お使いのファームウェアバージョンが古い場合、高度な設定 -> ファームウェア更新にてアップデートします。

インポート

高度な設定 -> 脆弱性レポートから、インポートする事が出来ます。
スキャナにBVMを指定して、XMLファイルを指定します。評価名はTestScanとしました。

15

インポートが完了したら、評価名と適用するサービスを指定します。

16

BindSQLInjectionについて、適用しました。重要度や内容を確認し必要なものを適用すると良さそうです。

17

インポート結果の確認

WEBサイト -> Webサイトプロファイルを確認すると、先ほどインポートした内容が作成されていました。
コメント欄には、BVMレポートによって作成された旨が記載されています。

18

19

参考

以下のページを参考にさせて頂きました。

おわりに

BVMによる脆弱性スキャンと、WAFへの設定インポートを試してみました。
スキャン結果をWAFにインポート出来るなんて、かなりイケてますね。
では、また。