AWS WAF AWS マネージドルール が3/3に更新され、複数のURLを含むURIの動作に変更が入っていました

2021.03.04

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

以下のAWS WAF AWS マネージドルール が3/3日付で、更新されています

https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-changelog.html

(日本語版のドキュメント更新が遅れる場合がありますので、最新の情報を確認したい方は英語版で確認をしてください)

ルールグループ  ルールグループ名 影響を受けるルール 説明 日付
Core rule set (CRS) AWSManagedRulesCommonRuleSet GenericRFI_QUERYARGUMENTS Added double URL decode. Mar 03, 2021
Core rule set (CRS) AWSManagedRulesCommonRuleSet RestrictedExtensions_URIPATH Improved the configuration of the rules and added an extra URL decode. Mar 03, 2021
Admin protection AWSManagedRulesAdminProtectionRuleSet AdminProtection_URIPATH Added double URL decode. Mar 03, 2021
Known bad inputs AWSManagedRulesKnownBadInputsRuleSet ExploitablePaths_URIPATH Improved the configuration of the rules and added an extra URL decode. Mar 03, 2021
Linux operating system AWSManagedRulesLinuxRuleSet LFI_QUERYARGUMENTS Improved the configuration of the rules and added an extra URL decode. Mar 03, 2021

変更内容

適用されるパスは、各ルールによります。また検出の詳細については非公開になりますが、URIの中に2重にhttpsがある場合、URIの途中や、クエリ文字列中に別のURL https://www.hoge.com/aaa などが含まれる場合などが、追加検出の対象となるようです

例: https://wwww.hoge.com/aaa.index.html?path=https://www.fuga.com/bbbb/

どうしたらいい?

AWS マネージドルールをWAFに適用していれば、ルールは自動的に更新されますので、特に更新作業などの対処は不要になります

検出されているかどうかの確認

直近3時間程度であれば、AWSコンソールのAWS WAFのページで確認できます。

https://console.aws.amazon.com/wafv2/homev2/web-acls?region=global

コンソールから該当のルール(ACL)を選択し、(この場合はAWSManagedRulesCommonRuleSet)、該当するルースセットをリストから選んで、検出状況を確認してください

3時間以前の状況を確認したい場合は、WAFのログを出力することを検討し、実施してください

AWS WAFのログをFirehoseでS3に出力しブロックログをS3Selectで確認してみた

AWS WAFのLogを保存するKinesis FirehoseをCloudFormationでさくっと作ってみた

ログでの検知方法

WAF ログをご確認いただき、当該ルールで Block されたログフィールドの "httpRequest" 内の "URI" 項目に、2回 URL エンコードされた内容が出力されているかどうかでご確認できます

WAF ログ例:

"action": "BLOCK",
"ruleGroupList": [
  {
    "ruleGroupId": "AWS#AWSManagedRulesCommonRuleSet",
    "terminatingRule": {
      "ruleId": "RestrictedExtensions_URIPATH",
      "action": "BLOCK",
      "ruleMatchDetails": null
    },
  }
"httpRequest": {
  "uri": "/test%252Eini" <<< test.ini を 2 回 URL エンコードした際の例

誤検出の疑いがある場合

該当するルールのみ個別に検出からカウントに動作を変更する事ができます。

AWS WAFのコンソールを開き、該当するルールを選択し、[Override rules action]のトグルをONに変更してください

※GenericRFI_QUERYARGUMENTS の場合です、今回該当する他のルールも併せて実施する場合はそれぞれのルールグループセットより該当のルールに対して実施してください

AWSManagedRulesCommonRuleSet

  • GenericRFI_QUERYARGUMENTS
  • RestrictedExtensions_URIPATH

AWSManagedRulesAdminProtectionRuleSet

  • AdminProtection_URIPATH

AWSManagedRulesKnownBadInputsRuleSet

  • ExploitablePaths_URIPATH

AWSManagedRulesLinuxRuleSet

  • LFI_QUERYARGUMENTS

動作をカウントに変更した場合の今後の対応

脆弱性のブロック動作を検知からカウントするように変更した場合、該当するルールの必要な予防対応が実施されていない状況になりますので WAFログの出力や定期的な確認を行い、該当する脆弱性を利用したような攻撃が実施されていないか確認する必要があります。

また、誤検出したアクセス方法の変更が可能であれば修正を実施し、検出されてなければ検出を有効にし、検知することをお勧めします。