AWS WAFv2 determine header order

0

I am wondering if it is possible to determine the header key order in the request then use this value in rules?

For example the header object would contain the following

HeadHead
httpRequest.headers.0.nameHost
httpRequest.headers.0.valueapi.test.com
httpRequest.headers.1.nameuser-agent
httpRequest.headers.1.valueMozilla/5.0 (Linux; Android 10; SM-A217F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36

I want to check httpRequest.headers.1.name to see if this was user-agent

HieuVu
質問済み 2年前424ビュー
2回答
0

Hello HieuVu,

Well, the order your seeing is a interpret format of the request for log view (ie., For Reading purpose and Filtering purpose in CW or Athena).

Thus, at any point of time WAF only sees Key:Value (Ie., User-Agent:Mozilla/5.0...) header components NOT the order of the HTTP components.

https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-fields.html

Regards, CK

profile pictureAWS
回答済み 2年前
  • Hi Chethan,

    I understand that it is an interpret format, my questions is, if it is possible to determine the order that headers are in the headers, so either see what the second header is or determining what order did user-agent get sent in.

0

Hello HieuVu,

AWS WAF now supports Header Order match statement for request inspection

https://aws.amazon.com/tw/about-aws/whats-new/2023/06/aws-waf-header-order-match-statement-request-inspection/

AWS WAF separates the header names in the string using colons and no added spaces, for example

host:user-agent:accept:authorization:referer

In your use case, you can configure WAF rule like this:

host:user-agent with PositionalConstraint STARTS_WITH

Here is example WAF rule JSON

{
  "Name": "testheaderorder",
  "Priority": 0,
  "Action": {
    "Count": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "testheaderorder"
  },
  "Statement": {
    "ByteMatchStatement": {
      "FieldToMatch": {
        "HeaderOrder": {
          "OversizeHandling": "CONTINUE"
        }
      },
      "PositionalConstraint": "STARTS_WITH",
      "SearchString": "host:user-agent",
      "TextTransformations": [
        {
          "Type": "NONE",
          "Priority": 0
        }
      ]
    }
  }
}

To find more information regrading HeaderOrder , see:

HeaderOrder

https://docs.aws.amazon.com/waf/latest/APIReference/API_HeaderOrder.html

AWS Web Application Firewall (WAF): Header Order Match Statement | Amazon Web Services

https://www.youtube.com/watch?v=gZtGBhXlgIo

profile pictureAWS
Mark_W
回答済み 9ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ