[アップデート]AWS WAFのBot Controlルールグループに検査レベル「Targeted」が追加され、新たに4つのインテリジェントなルールが利用可能になりました

AWS WAFのBot Controlルールグループがアップデートがされ、一般的なBot攻撃だけでなく標的型Bot攻撃からも対象のシステムを保護出来るようになりました。
2022.11.24

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

こんにちは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。

先月AWS WAFのBot Controlルールグループがアップデートがされ、一般的なBot攻撃だけでなく標的型Bot攻撃からも対象のシステムを保護出来るようになりました。

ざっくりまとめ

  • AWS WAFのBot Controlルールグループがアップデートされて、Botからの攻撃をよりインテリジェントに保護出来るようになった
  • Bot Controlルールグループで「検査レベル(inspection level)」という項目が設定可能になった
    • 今までのレベルは Common で、標的型Bot攻撃からの防御もしたいなら Targeted を選択する
    • Targeted には Common のルールも含まれる
  • 追加されたルールは全部で4つ
    • 追加されたルール名には TGT_ というprefixが付いている

標的型Bot(Targeted Bot)とは

ここで指している標的型Botとは、何かしらの目的を持って特定のWebサイトや特定のWebページを攻撃するBotです。

例えば、転売目的で商品を購入するために商品の在庫が復活するまで商品ページにアクセスし続けるようなBotがこれに当てはまります。

アップデート内容

今回のアップデート内容は以下です。

※本記事の冒頭に記載したアップデートページには「AWS WAF Bot Control for Targeted Bots は、米国東部 (バージニア北部)、米国西部 (北カリフォルニア)、欧州 (アイルランド)、欧州 (パリ)、オーストラリア (シドニー) の 5 つのリージョンでご利用いただけます。」という旨の記載がありますが、記事執筆時点(2022/11/24)では東京リージョンや大阪リージョンでも利用可能になっているようです。

「検査レベル(inspection level)」という設定項目の追加

Bot Controlルールグループに「検査レベル(inspection level)」という設定項目が追加されました。

アップデート前までのレベルは Common とされ、今回新たに Targeted というレベルが追加されました。

CommonTargeted の差異(東京リージョン)を下表にまとめてみました。

Common Targeted
概要 既存のルールが使用可能 Commonのルールに加え、新たに4つのルールが使用可能
料金 ・月額10.0 USD(サブスクリプション料金なので、短期利用の場合は1時間単位で按分)
・リクエスト100万件あたり 1.00 USD
・Captcha:分析するキャプチャ試行1,000回あたり 0.40 USD
・チャレンジ:分析するキャプチャ試行10,000回あたり 0.40 USD
・月額10.0 USD(サブスクリプション料金なので、短期利用の場合は1時間単位で按分)
・リクエスト100万件あたり 10.00 USD
・Captcha:利用料に含まれるため追加料金無し
・チャレンジ:利用料に含まれるため追加料金無し
キャパシティ 50 WCUs 50 WCUs

ということで、少し利用コストは上がりますが新たに4つのインテリジェントなルールが使用可能になります。ただ、キャパシティは同じ数値です。

料金の詳細は下記をご参照ください。

料金 - AWS WAF | AWS - https://aws.amazon.com/jp/waf/pricing/

また、 Targeted レベルを選択すると新たに使えるようになる4つのルールの詳細は下表をご確認ください。

ルール名 概要
TGT_VolumetricIpTokenAbsent 有効なChallengeトークンを含まないクライアントからのリクエストが5件以上あるかどうかを検査します。
TGT_VolumetricSession クライアントセッションからのリクエスト数が異常に多いかどうかを検査します。評価は、過去のトラフィックパターンを使用してAWS WAFが維持する標準的なボリュームベースラインとの比較に基づいて行われます。
TGT_SignalAutomatedBrowser ブラウザ自動化フレームワークを検査します。
TGT_SignalBrowserInconsistency ブラウザの問い合わせデータに矛盾がないかどうかを検査します。

引用: AWS WAF Bot Control rule group - AWS WAF, AWS Firewall Manager, and AWS Shield Advanced - https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-bot.html

やってみた

今回はTargetedレベルでAWS WAF Bot Controlを設定し、4つの新ルールのうち、TGT_VolumetricIpTokenAbsentというルールを検証してみました。今回の検証ではバージニア北部リージョンのALBにAWS WAFを関連づけました。

まずはAWS WAFのWeb ACLを作成し、Bot Controlルールグループを設定します。Bot Controlルールグループの編集画面に飛ぶと、確かにinspection levelが設定出来るようになっていました。今回はここで Targeted を選択します。

そして、 RulesでTGT_VolumetricIpTokenAbsent検知時のアクションをChallengeに設定し、それ以外をCountにします。

この状態で保護しているWebページにWebブラウザ経由で何度かアクセスしましたが、レスポンスは正常でした。

しかし、curlコマンドで同じWebページにリクエストを飛ばすと4,5回目でレスポンスが返ってこなくなりました。Botだと判断され、Challengeが発生したようです。

curlでレスポンスが返ってこなくなった直後にWebブラウザで再度リクエストを投げたところ、一度Challengeを経由した後正常なレスポンスが返ってきました。

その後、試してみてわかったことは以下です。

  • curlでリクエストが拒否された後、20分~30分ぐらい経過するとリクエストが通る
  • curlでリクエストが拒否された後、自分(接続元)のIPアドレスを変更するとリクエストが通る

まとめ

今回のアップデートでAWS WAFのBot Controlがさらに使いやすくなったのではないでしょうか。

決めうちでなく、細かく設定せずともIPやCookieなどの情報をもとに良い感じににBotを検知してくれるインテリジェントなルールは個人的に好きです。

少し検証部分が薄くなってしまいましたが、本記事がどなたかのお役に立てれば幸いです。

以上、べこみんでした。