AWS - WAF Enum

AWS - WAF Enum

HackTricksをサポートする

AWS WAF

AWS WAFは、ウェブアプリケーションファイアウォールであり、ウェブアプリケーションやAPIをさまざまなウェブの脅威から保護するために設計されています。これにより、ユーザーはSQLインジェクションやクロスサイトスクリプティングなどの一般的な攻撃ベクトルを軽減するセキュリティルールを設定し、カスタムフィルタリングルールを定義することで、受信トラフィックを制御できます。

主要な概念

Web ACL (アクセス制御リスト)

Web ACLは、ウェブアプリケーションやAPIに適用できるルールのコレクションです。Web ACLをリソースに関連付けると、AWS WAFはWeb ACLで定義されたルールに基づいて受信リクエストを検査し、指定されたアクションを実行します。

ルールグループ

ルールグループは、複数のWeb ACLに適用できる再利用可能なルールのコレクションです。ルールグループは、異なるウェブアプリケーションやAPI全体で一貫したルールセットを管理および維持するのに役立ちます。

各ルールグループには関連するキャパシティがあり、ルール、ルールグループ、およびWeb ACLを実行するために使用されるオペレーティングリソースを計算および制御するのに役立ちます。作成時にその値が設定されると、変更することはできません。

ルール

ルールは、AWS WAFが受信ウェブリクエストを検査するために使用する条件のセットを定義します。主に2種類のルールがあります:

  1. 通常のルール:このルールタイプは、指定された条件を使用してウェブリクエストを許可、ブロック、またはカウントするかどうかを判断します。

  2. レートベースのルール:特定のIPアドレスからのリクエストを5分間カウントします。ここで、ユーザーはしきい値を定義し、IPからのリクエスト数がこの制限を超えると、そのIPからの後続のリクエストはしきい値が下回るまでブロックされます。レートベースのルールの最小しきい値は2000リクエストです。

管理されたルール

AWS WAFは、AWSおよびAWS Marketplaceの販売者によって維持される事前構成された管理ルールセットを提供します。これらのルールセットは、一般的な脅威からの保護を提供し、新しい脆弱性に対処するために定期的に更新されます。

IPセット

IPセットは、許可またはブロックしたいIPアドレスまたはIPアドレス範囲のリストです。IPセットは、IPベースのルールを管理するプロセスを簡素化します。

正規表現パターンセット

正規表現パターンセットには、ウェブリクエストで検索するパターンを定義する1つ以上の正規表現(regex)が含まれています。これは、特定の文字列のシーケンスをフィルタリングするなど、より複雑なマッチングシナリオに役立ちます。

ロックトークン

ロックトークンは、WAFリソースの更新時に同時実行制御に使用されます。これにより、複数のユーザーまたはプロセスが同時に同じリソースを更新しようとした場合に、変更が誤って上書きされないようにします。

APIキー

AWS WAFのAPIキーは、特定のAPI操作へのリクエストを認証するために使用されます。これらのキーは暗号化され、安全に管理され、アクセスを制御し、認可されたユーザーのみがWAF構成を変更できるようにします。

  • :CAPTCHA APIの統合。

権限ポリシー

権限ポリシーは、AWS WAFリソースに対して誰がアクションを実行できるかを指定するIAMポリシーです。権限を定義することで、WAFリソースへのアクセスを制御し、認可されたユーザーのみが構成を作成、更新、または削除できるようにします。

スコープ

AWS WAFのスコープパラメータは、WAFルールと構成が地域アプリケーションまたはAmazon CloudFrontディストリビューションに適用されるかどうかを指定します。

  • REGIONAL:アプリケーションロードバランサー(ALB)、Amazon API Gateway REST API、AWS AppSync GraphQL API、Amazon Cognitoユーザープール、AWS App Runnerサービス、AWS Verified Accessインスタンスなどの地域サービスに適用されます。これらのリソースが存在するAWSリージョンを指定します。

  • CLOUDFRONT:グローバルなAmazon CloudFrontディストリビューションに適用されます。CloudFrontのWAF構成は、コンテンツが提供される場所に関係なく、us-east-1リージョンを通じて管理されます。

主要な機能

モニタリング基準(条件)

条件は、AWS WAFが監視する受信HTTP/HTTPSリクエストの要素を指定します。これには、XSS、地理的位置(GEO)、IPアドレス、サイズ制約、SQLインジェクション、およびパターン(文字列およびregexマッチング)が含まれます。国に基づいてCloudFrontレベルで制限されたリクエストはWAFに到達しないことに注意することが重要です。

各AWSアカウントは次のように構成できます:

  • 各タイプに対して100条件(Regexの場合は10条件のみ許可されますが、この制限は増加可能)。

  • 100ルールおよび50 Web ACL

  • 最大5レートベースのルール

  • アプリケーションロードバランサーと共にWAFが実装されている場合、1秒あたり10,000リクエストのスループット。

ルールアクション

アクションは各ルールに割り当てられ、オプションは次のとおりです:

  • 許可:リクエストは適切なCloudFrontディストリビューションまたはアプリケーションロードバランサーに転送されます。

  • ブロック:リクエストは即座に終了します。

  • カウント:ルールの条件を満たすリクエストを集計します。これは、ルールのテストや、許可またはブロックに設定する前にルールの正確性を確認するのに役立ちます。

  • CAPTCHAおよびチャレンジ:リクエストがボットから来ていないことを確認するために、CAPTCHAパズルやサイレントチャレンジを使用します。

Web ACL内のいずれのルールにも一致しないリクエストは、デフォルトアクション(許可またはブロック)を受けます。Web ACL内で定義されたルールの実行順序は重要で、通常は次の順序に従います:

  1. ホワイトリストに登録されたIPを許可します。

  2. ブラックリストに登録されたIPをブロックします。

  3. 有害なシグネチャに一致するリクエストをブロックします。

CloudWatch統合

AWS WAFはCloudWatchと統合されており、AllowedRequests、BlockedRequests、CountedRequests、PassedRequestsなどのメトリクスを提供します。これらのメトリクスはデフォルトで毎分報告され、2週間の期間保持されます。

列挙

CloudFrontディストリビューションと対話するには、リージョンUS East(N. Virginia)を指定する必要があります:

  • CLI - CloudFrontスコープを使用する際にリージョンUS Eastを指定します:--scope CLOUDFRONT --region=us-east-1

  • APIおよびSDK - すべての呼び出しでリージョンエンドポイントus-east-1を使用します。

地域サービスと対話するには、リージョンを指定する必要があります:

  • リージョンヨーロッパ(スペイン)の例:--scope REGIONAL --region=eu-south-2

# Web ACLs #

## Retrieve a list of web access control lists (Web ACLs) available in your AWS account
aws wafv2 list-web-acls --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve details about the specified Web ACL
aws wafv2 get-web-acl --name <value> --id <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

## Retrieve a list of resources associated with a specific web access control list (Web ACL)
aws wafv2 list-resources-for-web-acl --web-acl-arn <value> # Additional permissions needed depending on the protected resource type: cognito-idp:ListResourcesForWebACL, ec2:DescribeVerifiedAccessInstanceWebAclAssociations or apprunner:ListAssociatedServicesForWebAcl
## Retrieve the Web ACL associated with the specified AWS resource
aws wafv2 get-web-acl-for-resource --resource-arn <arn> # Additional permissions needed depending on the protected resource type: cognito-idp:GetWebACLForResource, ec2:GetVerifiedAccessInstanceWebAcl, wafv2:GetWebACL or apprunner:DescribeWebAclForService

# Rule groups #

## List of the rule groups available in your AWS account
aws wafv2 list-rule-groups --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve the details of a specific rule group
aws wafv2 get-rule-group [--name <value>] [--id <value>] [--arn <value>] [--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>]
## Retrieve the IAM policy attached to the specified rule group
aws wafv2 get-permission-policy --resource-arn <rule-group-arn> # Just the owner of the Rule Group can do this operation

# Managed rule groups (by AWS or by a third-party) #

## List the managed rule groups that are available
aws wafv2 list-available-managed-rule-groups --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## List the available versions of the specified managed rule group
aws wafv2 list-available-managed-rule-group-versions --vendor-name <value> --name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve high-level information about a specific managed rule group
aws wafv2 describe-managed-rule-group --vendor-name <value> --name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--version-name <value>]
## Retrieve high-level information about all managed rule groups
aws wafv2 describe-all-managed-products --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve high-level information about all managed rule groups from a specific vendor
aws wafv2 describe-managed-products-by-vendor --vendor-name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

# IP sets #

## List the IP sets that are available in your AWS account
aws wafv2 list-ip-sets --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve the specific IP set
aws wafv2 get-ip-set --name <value> --id <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve the keys that are currently being managed by a rate-based rule.
aws wafv2 get-rate-based-statement-managed-keys --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>\
--web-acl-name <value> --web-acl-id <value> --rule-name <value> [--rule-group-rule-name <value>]

# Regex pattern sets #

## List all the regex pattern sets that you manage
aws wafv2 list-regex-pattern-sets --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieves the specified regex pattern sets
aws wafv2 get-regex-pattern-set --name <value> --id <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

# API Keys #

## List API keys for the specified scope
aws wafv2 list-api-keys --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve decrypted API key
aws wafv2 get-decrypted-api-key --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> --api-key <value>

# Logs #

## List of logging configurations (storage location of the logs)
aws wafv2 list-logging-configurations --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--log-scope <value>]
## Retrieve the logging configuration settings associated with a specific web ACL
aws wafv2 get-logging-configuration --resource-arn <value> [--log-scope <CUSTOMER | SECURITY_LAKE>] [--log-type <value>]

# Miscelaneous #

## Retrieve a list of the tags associated to the specified resource
aws wafv2 list-tags-for-resource resource-arn <value>

## Retrieve a sample of web requests that match a specified rule within a WebACL during a specified time range
aws wafv2 get-sampled-requests --web-acl-arn <value> --rule-metric-name <value> --time-window <value> --max-items <1-500> --scope <value>

## Obtains the web ACL capacity unit (WCU) requirements for a specified scope and ruleset
aws wafv2 check-capacity --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> --rules <value>

## List of available releases for the AWS WAFv2 mobile SDK
aws wafv2 list-mobile-sdk-releases --platform <IOS | ANDROID>
## Retrieves information for the specified mobile SDK release
aws wafv2 get-mobile-sdk-release --platform <value> --release-version <value>

Post Exploitation / Bypass

攻撃者の視点から見ると、このサービスは攻撃者がWAFの保護やネットワークの露出を特定するのに役立ち、他のウェブを侵害する手助けとなる可能性があります。

しかし、攻撃者はこのサービスを妨害して、ウェブがWAFによって保護されないようにすることにも関心を持つかもしれません。

多くの削除および更新操作では、ロックトークンを提供する必要があります。このトークンはリソースに対する同時実行制御に使用され、変更が複数のユーザーまたはプロセスによって同時に同じリソースを更新しようとする際に偶発的に上書きされないようにします。このトークンを取得するためには、特定のリソースに対して対応するリストまたは取得操作を実行することができます。

wafv2:CreateRuleGroup, wafv2:UpdateRuleGroup, wafv2:DeleteRuleGroup

攻撃者は、影響を受けたリソースのセキュリティを侵害することができます:

  • 正当なIPアドレスからの正当なトラフィックをブロックするルールグループを作成し、サービス拒否を引き起こすことができます。

  • ルールグループを更新し、例えばそのアクションをブロックから許可に変更することができます。

  • 重要なセキュリティ対策を提供するルールグループを削除することができます。

# Create Rule Group
aws wafv2 create-rule-group --name <value> --capacity <value> --visibility-config <value> \
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--description <value>]
# Update Rule Group
aws wafv2 update-rule-group --name <value> --id <value> --visibility-config <value> --lock-token <value>\
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--description <value>]
# Delete Rule Group
aws wafv2 delete-rule-group --name <value> --id <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

以下の例は、特定のIPアドレスからの正当なトラフィックをブロックするルールグループを示しています:

aws wafv2 create-rule-group --name BlockLegitimateIPsRuleGroup --capacity 1 --visibility-config SampledRequestsEnabled=false,CloudWatchMetricsEnabled=false,MetricName=BlockLegitimateIPsRuleGroup --scope CLOUDFRONT --region us-east-1 --rules file://rule.json

rule.jsonファイルは次のようになります:

[
{
"Name":"BlockLegitimateIPsRule",
"Priority":0,
"Statement": {
"IPSetReferenceStatement": {
"ARN": "arn:aws:wafv2:us-east-1:123456789012:global/ipset/legitIPv4/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}
},
"Action":{
"Block":{}
},
"VisibilityConfig":{
"SampledRequestsEnabled":false,
"CloudWatchMetricsEnabled":false,
"MetricName":"BlockLegitimateIPsRule"
}
}
]

潜在的な影響: 不正アクセス、データ漏洩、及び潜在的なDoS攻撃。

wafv2:CreateWebACL, wafv2:UpdateWebACL, wafv2:DeleteWebACL

これらの権限を持つ攻撃者は以下のことが可能です:

  • 新しいWeb ACLを作成し、悪意のあるトラフィックを通過させるか、正当なトラフィックをブロックするルールを導入し、WAFを無効にするか、サービス拒否を引き起こす。

  • 既存のWeb ACLを更新し、以前はブロックされていたSQLインジェクションやクロスサイトスクリプティングなどの攻撃を許可するようにルールを変更したり、正当なリクエストをブロックすることで正常なトラフィックの流れを妨げる。

  • Web ACLを削除し、影響を受けたリソースを完全に無防備にし、広範囲なウェブ攻撃にさらす。

ManagedByFirewallManagerがfalseの場合にのみ、指定されたWebACLを削除できます。

# Create Web ACL
aws wafv2 create-web-acl --name <value> --default-action <value> --visibility-config <value> \
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--captcha-config <value>] [--description <value>]
# Update Web ACL
aws wafv2 update-web-acl --name <value> --id <value> --default-action <value> --visibility-config <value> --lock-token <value>\
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--captcha-config <value>] [--description <value>]
# Delete Web ACL
aws wafv2 delete-web-acl --name <value> --id <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

以下の例は、特定のIPセットからの正当なトラフィックをブロックするためにWeb ACLを更新する方法を示しています。オリジンIPがこれらのIPのいずれとも一致しない場合、デフォルトのアクションもブロックとなり、DoSを引き起こすことになります。

元のWeb ACL:

{
"WebACL": {
"Name": "AllowLegitimateIPsWebACL",
"Id": "1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f",
"ARN": "arn:aws:wafv2:us-east-1:123456789012:regional/webacl/AllowLegitimateIPsWebACL/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f",
"DefaultAction": {
"Allow": {}
},
"Description": "",
"Rules": [
{
"Name": "AllowLegitimateIPsRule",
"Priority": 0,
"Statement": {
"IPSetReferenceStatement": {
"ARN": "arn:aws:wafv2:us-east-1:123456789012:regional/ipset/LegitimateIPv4/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}
},
"Action": {
"Allow": {}
},
"VisibilityConfig": {
"SampledRequestsEnabled": false,
"CloudWatchMetricsEnabled": false,
"MetricName": "AllowLegitimateIPsRule"
}
}
],
"VisibilityConfig": {
"SampledRequestsEnabled": false,
"CloudWatchMetricsEnabled": false,
"MetricName": "AllowLegitimateIPsWebACL"
},
"Capacity": 1,
"ManagedByFirewallManager": false,
"LabelNamespace": "awswaf:123456789012:webacl:AllowLegitimateIPsWebACL:"
},
"LockToken": "1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}

Web ACLを更新するためのコマンド:

aws wafv2 update-web-acl --name AllowLegitimateIPsWebACL --scope REGIONAL --id 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --lock-token 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --default-action Block={} --visibility-config SampledRequestsEnabled=false,CloudWatchMetricsEnabled=false,MetricName=AllowLegitimateIPsWebACL --rules file://rule.json --region us-east-1

rule.jsonファイルは次のようになります:

[
{
"Name": "BlockLegitimateIPsRule",
"Priority": 0,
"Statement": {
"IPSetReferenceStatement": {
"ARN": "arn:aws:wafv2:us-east-1:123456789012:regional/ipset/LegitimateIPv4/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}
},
"Action": {
"Block": {}
},
"VisibilityConfig": {
"SampledRequestsEnabled": false,
"CloudWatchMetricsEnabled": false,
"MetricName": "BlockLegitimateIPRule"
}
}
]

潜在的な影響: 不正アクセス、データ漏洩、及び潜在的なDoS攻撃。

wafv2:AssociateWebACL, wafv2:DisassociateWebACL

wafv2:AssociateWebACL 権限は、攻撃者がリソースにウェブACL(アクセス制御リスト)を関連付けることを可能にし、セキュリティ制御を回避して不正なトラフィックがアプリケーションに到達することを許可し、SQLインジェクションやクロスサイトスクリプティング(XSS)などの脆弱性を引き起こす可能性があります。逆に、wafv2:DisassociateWebACL 権限を持つ攻撃者は、セキュリティ保護を一時的に無効にし、リソースを検出されることなく脆弱性にさらすことができます。

保護されるリソースの種類に応じて、追加の権限が必要になります:

  • 関連付け

  • apigateway:SetWebACL

  • apprunner:AssociateWebAcl

  • appsync:SetWebACL

  • cognito-idp:AssociateWebACL

  • ec2:AssociateVerifiedAccessInstanceWebAcl

  • elasticloadbalancing:SetWebAcl

  • 関連解除

  • apigateway:SetWebACL

  • apprunner:DisassociateWebAcl

  • appsync:SetWebACL

  • cognito-idp:DisassociateWebACL

  • ec2:DisassociateVerifiedAccessInstanceWebAcl

  • elasticloadbalancing:SetWebAcl

# Associate
aws wafv2 associate-web-acl --web-acl-arn <value> --resource-arn <value>
# Disassociate
aws wafv2 disassociate-web-acl --resource-arn <value>

潜在的影響: 侵害されたリソースのセキュリティ、悪用のリスクの増加、およびAWS WAFによって保護されたAWS環境内でのサービス中断の可能性。

wafv2:CreateIPSet , wafv2:UpdateIPSet, wafv2:DeleteIPSet

攻撃者はAWS WAFによって管理されているIPセットを作成、更新、削除することができる。これは、新しいIPセットを作成して悪意のあるトラフィックを許可したり、正当なトラフィックをブロックするためにIPセットを変更したり、悪意のあるIPアドレスを含めるために既存のIPセットを更新したり、信頼されたIPアドレスを削除したり、重要なリソースを保護するために意図された重要なIPセットを削除したりすることができるため、危険である。

# Create IP set
aws wafv2 create-ip-set --name <value> --ip-address-version <IPV4 | IPV6> --addresses <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
# Update IP set
aws wafv2 update-ip-set --name <value> --id <value> --addresses <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
# Delete IP set
aws wafv2 delete-ip-set --name <value> --id <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

以下の例は、希望するIPセットで既存のIPセットを上書きする方法を示しています:

aws wafv2 update-ip-set --name LegitimateIPv4Set --id 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --addresses 99.99.99.99/32 --lock-token 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --scope CLOUDFRONT --region us-east-1

潜在的な影響: 不正アクセスと正当なトラフィックのブロック。

wafv2:CreateRegexPatternSet , wafv2:UpdateRegexPatternSet, wafv2:DeleteRegexPatternSet

これらの権限を持つ攻撃者は、特定のパターンに基づいて受信トラフィックを制御およびフィルタリングするためにAWS WAFで使用される正規表現パターンセットを操作することができます。

  • 新しい正規表現パターンを作成することで、攻撃者は有害なコンテンツを許可することができます。

  • 既存のパターンを更新することで、攻撃者はセキュリティルールを回避することができます。

  • 悪意のある活動をブロックするために設計されたパターンを削除することで、攻撃者は悪意のあるペイロードを送信し、セキュリティ対策を回避することができます。

# Create regex pattern set
aws wafv2 create-regex-pattern-set --name <value> --regular-expression-list <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--description <value>]
# Update regex pattern set
aws wafv2 update-regex-pattern-set --name <value> --id <value> --regular-expression-list <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
# Delete regex pattern set
aws wafv2 delete-regex-pattern-set --name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> --id <value> --lock-token <value>

潜在的影響: セキュリティ制御をバイパスし、悪意のあるコンテンツを許可し、潜在的に機密データを露出させたり、AWS WAFによって保護されたサービスやリソースを妨害する可能性があります。

(wavf2:PutLoggingConfiguration & iam:CreateServiceLinkedRole), wafv2:DeleteLoggingConfiguration

wafv2:DeleteLoggingConfiguration の権限を持つ攻撃者は、指定されたWeb ACLからログ設定を削除することができます。その後、wavf2:PutLoggingConfigurationiam:CreateServiceLinkedRole の権限を持つ攻撃者は、ログ設定を作成または置き換えることができ(削除した後)、ログを完全に防止するか、Amazon S3バケット、Amazon CloudWatch Logsロググループ、または制御下のAmazon Kinesis Data Firehoseなどの不正な宛先にリダイレクトすることができます。

作成プロセス中、サービスは指定されたログ宛先にログが書き込まれるために必要な権限を自動的に設定します:

  • Amazon CloudWatch Logs: AWS WAFは指定されたCloudWatch Logsロググループにリソースポリシーを作成します。このポリシーは、AWS WAFがロググループにログを書き込むために必要な権限を持っていることを保証します。

  • Amazon S3バケット: AWS WAFは指定されたS3バケットにバケットポリシーを作成します。このポリシーは、AWS WAFが指定されたバケットにログをアップロードするために必要な権限を付与します。

  • Amazon Kinesis Data Firehose: AWS WAFはKinesis Data Firehoseと対話するために特にサービスリンクロールを作成します。このロールにより、AWS WAFは構成されたFirehoseストリームにログを配信することができます。

Web ACLごとに1つのログ宛先のみを定義することが可能です。

# Put logging configuration
aws wafv2 put-logging-configuration --logging-configuration <value>
# Delete logging configuration
aws wafv2 delete-logging-configuration --resource-arn <value> [--log-scope <CUSTOMER | SECURITY_LAKE>] [--log-type <value>]

潜在的な影響: セキュリティイベントの可視性が不明瞭になり、インシデントレスポンスプロセスが困難になり、AWS WAFで保護された環境内での隠れた悪意のある活動を助長する。

wafv2:DeleteAPIKey

この権限を持つ攻撃者は、既存のAPIキーを削除でき、CAPTCHAが無効になり、それに依存する機能(フォーム送信やアクセス制御など)が妨げられます。このCAPTCHAの実装によっては、CAPTCHAのバイパスや、リソースでのエラーマネジメントが適切に設定されていない場合、DoSにつながる可能性があります。

# Delete API key
aws wafv2 delete-api-key --api-key <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

潜在的な影響: CAPTCHA保護を無効にしたり、アプリケーションの機能を妨害したりすることで、セキュリティ侵害やデータ盗難の可能性が生じます。

wafv2:TagResource, wafv2:UntagResource

攻撃者は、Web ACL、ルールグループ、IPセット、正規表現パターンセット、ログ設定などのAWS WAFv2リソースからタグを追加、変更、または削除することができるようになります。

# Tag
aws wafv2 tag-resource --resource-arn <value> --tags <value>
# Untag
aws wafv2 untag-resource --resource-arn <value> --tag-keys <value>

潜在的影響: リソースの改ざん、情報漏洩、コスト操作、運用の中断。

参考文献

HackTricksをサポートする

Last updated