Skip to content

[ASM] Waf and ruleset update#3087

Merged
anna-git merged 17 commits into
masterfrom
dani/waf_v1_5_0
Sep 16, 2022
Merged

[ASM] Waf and ruleset update#3087
anna-git merged 17 commits into
masterfrom
dani/waf_v1_5_0

Conversation

@dromanol

@dromanol dromanol commented Aug 17, 2022

Copy link
Copy Markdown
Contributor

Summary of changes

Update waf version to 1.5.0 > https://github.com/DataDog/libddwaf/blob/master/UPGRADING.md
Update local ruleset to 1.4.0
Ability to merge rule datas because the rule datas need to be merged before being sent to the waf.

Reason for change

libddwaf has a new version which is needed for blocking requests later on
It is now able to execute rules based on rule datas that can be updated.

Implementation details

libddwaf 1.5.0 has some API breaking changes:

  • ddwaf_context_init no longer needs the FreeFunction argument
  • ddwaf_get_version now returns a string instead of filling up a VersionStruct
  • Changed constants to match new API (DDWAF_GOOD to DDWAF_OK and DDWAF_MONITOR to DDWAF_MATCH)

Test coverage

  • Updated tests to match new waf and ruleset versions
  • added unit tests to test blocking ips waf result
  • added tests to test merging of several rulesets

Other details

@andrewlock

This comment has been minimized.

@andrewlock

This comment has been minimized.

@andrewlock

This comment has been minimized.

@andrewlock

This comment has been minimized.

@github-actions

This comment has been minimized.

@andrewlock

This comment has been minimized.

@github-actions

This comment has been minimized.

@andrewlock

This comment has been minimized.

@andrewlock

This comment has been minimized.

@github-actions

This comment has been minimized.

@anna-git anna-git added area:asm status:do-not-merge Work is done. Can review, but do not merge yet. labels Sep 1, 2022
@andrewlock

This comment has been minimized.

@github-actions

This comment has been minimized.

@andrewlock

This comment has been minimized.

@andrewlock

This comment has been minimized.

@anna-git anna-git changed the title Dani/waf v1 5 0 [ASM] Waf update to 1.5.0-alpha1 Sep 2, 2022
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@andrewlock

This comment has been minimized.

@github-actions

This comment has been minimized.

@andrewlock

This comment has been minimized.

@andrewlock

This comment has been minimized.

@github-actions

This comment has been minimized.

@andrewlock

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

Copy link
Copy Markdown
Contributor

Snapshots difference summary

The following differences have been observed in snapshots. So diff is simplistic, so please check some files anyway while we improve it.

10 occurrences of :

-      _dd.appsec.json: {"triggers":[{"rule":{"id":"ublock","name":"Hello","tags":{"category":"attack_attempt","type":"security_scanner"}},"rule_matches":[{"operator":"match_regex","operator_value":"Hello\\/v","parameters":[{"address":"server.request.headers.no_cookies","highlight":["Hello/V"],"key_path":["user-agent",0],"value":"Mistake Not... Hello/V"}]}]}]},
+      _dd.appsec.json: {"triggers":[{"rule":{"id":"ublock","name":"Hello","tags":{"category":"attack_attempt","type":"security_scanner"}},"rule_matches":[{"operator":"match_regex","operator_value":"Hello\\/v","parameters":[{"address":"server.request.headers.no_cookies","highlight":["Hello/V"],"key_path":["user-agent","0"],"value":"Mistake Not... Hello/V"}]}]}]},

25 occurrences of :

-      _dd.appsec.event_rules.version: 1.3.1,
+      _dd.appsec.event_rules.version: 1.4.0,

20 occurrences of :

-      _dd.appsec.event_rules.version: 1.3.1,
-      _dd.appsec.json: {"triggers":[{"rule":{"id":"crs-942-290","name":"Finds basic MongoDB SQL injection attempts","tags":{"category":"attack_attempt","type":"nosql_injection"}},"rule_matches":[{"operator":"match_regex","operator_value":"(?i:(?:\\[\\$(?:ne|eq|lte?|gte?|n?in|mod|all|size|exists|type|slice|x?or|div|like|between|and)\\]))","parameters":[{"address":"server.request.query","highlight":["[$slice]"],"key_path":["[$slice]"],"value":"[$slice]"}]}]}]},
+      _dd.appsec.event_rules.version: 1.4.0,
+      _dd.appsec.json: {"triggers":[{"rule":{"id":"crs-942-290","name":"Finds basic MongoDB SQL injection attempts","tags":{"category":"attack_attempt","type":"nosql_injection"}},"rule_matches":[{"operator":"match_regex","operator_value":"(?i:(?:\\[?\\$(?:(?:s(?:lic|iz)|wher)e|e(?:lemMatch|xists|q)|n(?:o[rt]|in?|e)|l(?:ike|te?)|t(?:ext|ype)|a(?:ll|nd)|jsonSchema|between|regex|x?or|div|mod)\\]?))","parameters":[{"address":"server.request.query","highlight":["[$slice]"],"key_path":["[$slice]"],"value":"[$slice]"}]}]}]},

5 occurrences of :

-      _dd.appsec.event_rules.version: 1.3.1,
-      _dd.appsec.json: {"triggers":[{"rule":{"id":"crs-942-290","name":"Finds basic MongoDB SQL injection attempts","tags":{"category":"attack_attempt","type":"nosql_injection"}},"rule_matches":[{"operator":"match_regex","operator_value":"(?i:(?:\\[\\$(?:ne|eq|lte?|gte?|n?in|mod|all|size|exists|type|slice|x?or|div|like|between|and)\\]))","parameters":[{"address":"server.request.query","highlight":["[$slice]"],"key_path":["[$slice]"],"value":"[$slice]"}]}]}]},
-      _dd.appsec.waf.version: 1.3.0,
+      _dd.appsec.event_rules.version: 1.4.0,
+      _dd.appsec.json: {"triggers":[{"rule":{"id":"crs-942-290","name":"Finds basic MongoDB SQL injection attempts","tags":{"category":"attack_attempt","type":"nosql_injection"}},"rule_matches":[{"operator":"match_regex","operator_value":"(?i:(?:\\[?\\$(?:(?:s(?:lic|iz)|wher)e|e(?:lemMatch|xists|q)|n(?:o[rt]|in?|e)|l(?:ike|te?)|t(?:ext|ype)|a(?:ll|nd)|jsonSchema|between|regex|x?or|div|mod)\\]?))","parameters":[{"address":"server.request.query","highlight":["[$slice]"],"key_path":["[$slice]"],"value":"[$slice]"}]}]}]},
+      _dd.appsec.waf.version: 1.5.0,

5 occurrences of :

-      _dd.appsec.event_rules.loaded: 126.0,
+      _dd.appsec.event_rules.loaded: 131.0,

35 occurrences of :

-      _dd.appsec.json: {"triggers":[{"rule":{"id":"crs-942-290","name":"Finds basic MongoDB SQL injection attempts","tags":{"category":"attack_attempt","type":"nosql_injection"}},"rule_matches":[{"operator":"match_regex","operator_value":"(?i:(?:\\[\\$(?:ne|eq|lte?|gte?|n?in|mod|all|size|exists|type|slice|x?or|div|like|between|and)\\]))","parameters":[{"address":"server.request.query","highlight":["[$slice]"],"key_path":["arg",0],"value":"[$slice]"}]}]}]},
+      _dd.appsec.json: {"triggers":[{"rule":{"id":"crs-942-290","name":"Finds basic MongoDB SQL injection attempts","tags":{"category":"attack_attempt","type":"nosql_injection"}},"rule_matches":[{"operator":"match_regex","operator_value":"(?i:(?:\\[\\$(?:ne|eq|lte?|gte?|n?in|mod|all|size|exists|type|slice|x?or|div|like|between|and)\\]))","parameters":[{"address":"server.request.query","highlight":["[$slice]"],"key_path":["arg","0"],"value":"[$slice]"}]}]}]},

1 occurrences of :

-      _dd.appsec.waf.version: 1.3.0,
+      _dd.appsec.waf.version: 1.5.0,

15 occurrences of :

-      _dd.appsec.json: {"triggers":[{"rule":{"id":"crs-942-290","name":"Finds basic MongoDB SQL injection attempts","tags":{"category":"attack_attempt","type":"nosql_injection"}},"rule_matches":[{"operator":"match_regex","operator_value":"(?i:(?:\\[\\$(?:ne|eq|lte?|gte?|n?in|mod|all|size|exists|type|slice|x?or|div|like|between|and)\\]))","parameters":[{"address":"server.request.query","highlight":["[$slice]"],"key_path":["param",0],"value":"[$slice]"}]}]}]},
+      _dd.appsec.json: {"triggers":[{"rule":{"id":"crs-942-290","name":"Finds basic MongoDB SQL injection attempts","tags":{"category":"attack_attempt","type":"nosql_injection"}},"rule_matches":[{"operator":"match_regex","operator_value":"(?i:(?:\\[\\$(?:ne|eq|lte?|gte?|n?in|mod|all|size|exists|type|slice|x?or|div|like|between|and)\\]))","parameters":[{"address":"server.request.query","highlight":["[$slice]"],"key_path":["param","0"],"value":"[$slice]"}]}]}]},

@andrewlock

Copy link
Copy Markdown
Member

Benchmarks Report 🐌

Benchmarks for #3087 compared to master:

  • All benchmarks have the same speed
  • All benchmarks have the same allocations

The following thresholds were used for comparing the benchmark speeds:

  • Mann–Whitney U test with statistical test for significance of 5%
  • Only results indicating a difference greater than 10% and 0.3 ns are considered.

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net472 719μs 769ns 2.98μs 0.359 0 0 3.18 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 453μs 174ns 675ns 0 0 0 2.59 KB
#3087 WriteAndFlushEnrichedTraces net472 720μs 461ns 1.66μs 0.357 0 0 3.18 KB
#3087 WriteAndFlushEnrichedTraces netcoreapp3.1 471μs 159ns 615ns 0 0 0 2.58 KB
Benchmarks.Trace.AppSecBodyBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net472 182ns 0.148ns 0.534ns 0.0675 0 0 425 B
master AllCycleSimpleBody netcoreapp3.1 238ns 0.252ns 0.978ns 0.00588 0 0 424 B
master AllCycleMoreComplexBody net472 184ns 0.213ns 0.767ns 0.0638 0 0 401 B
master AllCycleMoreComplexBody netcoreapp3.1 235ns 0.214ns 0.771ns 0.00552 0 0 400 B
master BodyExtractorSimpleBody net472 257ns 0.244ns 0.944ns 0.0573 0 0 361 B
master BodyExtractorSimpleBody netcoreapp3.1 231ns 0.263ns 1.02ns 0.00369 0 0 272 B
master BodyExtractorMoreComplexBody net472 14.6μs 12.7ns 49.2ns 1.21 0.0218 0 7.62 KB
master BodyExtractorMoreComplexBody netcoreapp3.1 11.9μs 13.2ns 49.3ns 0.0892 0 0 6.75 KB
#3087 AllCycleSimpleBody net472 180ns 0.128ns 0.462ns 0.0676 9.07E-05 0 425 B
#3087 AllCycleSimpleBody netcoreapp3.1 239ns 0.226ns 0.875ns 0.00587 0 0 424 B
#3087 AllCycleMoreComplexBody net472 180ns 0.0514ns 0.192ns 0.0637 0 0 401 B
#3087 AllCycleMoreComplexBody netcoreapp3.1 235ns 0.238ns 0.921ns 0.00553 0 0 400 B
#3087 BodyExtractorSimpleBody net472 258ns 0.289ns 1.12ns 0.0573 0 0 361 B
#3087 BodyExtractorSimpleBody netcoreapp3.1 215ns 0.292ns 1.13ns 0.00372 0 0 272 B
#3087 BodyExtractorMoreComplexBody net472 14.4μs 11.3ns 42.2ns 1.21 0.0216 0 7.62 KB
#3087 BodyExtractorMoreComplexBody netcoreapp3.1 11.6μs 9.4ns 35.2ns 0.0923 0 0 6.75 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
master SendRequest netcoreapp3.1 180μs 130ns 487ns 0.269 0 0 20.6 KB
#3087 SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
#3087 SendRequest netcoreapp3.1 181μs 291ns 1.13μs 0.182 0 0 20.59 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net472 1.86μs 0.747ns 2.79ns 0.15 0.000937 0 947 B
master ExecuteNonQuery netcoreapp3.1 1.45μs 0.863ns 3.34ns 0.0123 0 0 936 B
#3087 ExecuteNonQuery net472 1.84μs 1.84ns 6.63ns 0.15 0.000916 0 947 B
#3087 ExecuteNonQuery netcoreapp3.1 1.44μs 1.08ns 4.17ns 0.0129 0 0 936 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net472 2.55μs 1.8ns 6.96ns 0.183 0 0 1.16 KB
master CallElasticsearch netcoreapp3.1 1.48μs 0.907ns 3.51ns 0.0147 0 0 1.1 KB
master CallElasticsearchAsync net472 2.66μs 1.87ns 7.23ns 0.204 0 0 1.29 KB
master CallElasticsearchAsync netcoreapp3.1 1.64μs 0.451ns 1.75ns 0.0164 0 0 1.22 KB
#3087 CallElasticsearch net472 2.65μs 1.29ns 4.84ns 0.183 0 0 1.16 KB
#3087 CallElasticsearch netcoreapp3.1 1.55μs 0.632ns 2.28ns 0.0148 0 0 1.1 KB
#3087 CallElasticsearchAsync net472 2.62μs 2ns 7.74ns 0.205 0 0 1.29 KB
#3087 CallElasticsearchAsync netcoreapp3.1 1.56μs 0.703ns 2.63ns 0.0166 0 0 1.22 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net472 2.73μs 3ns 10.8ns 0.225 0 0 1.42 KB
master ExecuteAsync netcoreapp3.1 1.69μs 3.84ns 14.9ns 0.0183 0 0 1.34 KB
#3087 ExecuteAsync net472 2.72μs 6.58ns 25.5ns 0.225 0 0 1.42 KB
#3087 ExecuteAsync netcoreapp3.1 1.76μs 3.98ns 15.4ns 0.018 0 0 1.34 KB
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net472 5.69μs 10.8ns 42ns 0.439 0 0 2.77 KB
master SendAsync netcoreapp3.1 3.54μs 6.96ns 27ns 0.0353 0 0 2.6 KB
#3087 SendAsync net472 5.64μs 11.2ns 43.4ns 0.437 0 0 2.77 KB
#3087 SendAsync netcoreapp3.1 3.65μs 10.5ns 39.2ns 0.0349 0 0 2.6 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 3.17μs 2.57ns 9.95ns 0.288 0 0 1.81 KB
master EnrichedLog netcoreapp3.1 2.55μs 1.8ns 6.72ns 0.0255 0 0 1.85 KB
#3087 EnrichedLog net472 3.17μs 2.91ns 11.3ns 0.288 0.00157 0 1.81 KB
#3087 EnrichedLog netcoreapp3.1 2.51μs 1.55ns 6ns 0.0249 0 0 1.85 KB
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 150μs 185ns 717ns 0.674 0.225 0 4.65 KB
master EnrichedLog netcoreapp3.1 119μs 156ns 604ns 0 0 0 4.49 KB
#3087 EnrichedLog net472 150μs 147ns 550ns 0.675 0.225 0 4.65 KB
#3087 EnrichedLog netcoreapp3.1 116μs 173ns 672ns 0.0574 0.0574 0 4.49 KB
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 5.82μs 9.81ns 38ns 0.568 0.00288 0 3.59 KB
master EnrichedLog netcoreapp3.1 4.31μs 8.01ns 28.9ns 0.0542 0 0 3.91 KB
#3087 EnrichedLog net472 5.88μs 8.08ns 31.3ns 0.567 0.00292 0 3.59 KB
#3087 EnrichedLog netcoreapp3.1 4.51μs 13.6ns 51ns 0.0536 0 0 3.91 KB
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net472 2.18μs 2.84ns 10.6ns 0.217 0 0 1.37 KB
master SendReceive netcoreapp3.1 1.8μs 0.558ns 2.09ns 0.018 0 0 1.32 KB
#3087 SendReceive net472 2.25μs 3.35ns 13ns 0.217 0 0 1.37 KB
#3087 SendReceive netcoreapp3.1 1.79μs 1.1ns 4.13ns 0.0178 0 0 1.32 KB
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 5.02μs 2.8ns 10.5ns 0.353 0.00249 0 2.23 KB
master EnrichedLog netcoreapp3.1 4.27μs 3.15ns 12.2ns 0.0253 0 0 1.8 KB
#3087 EnrichedLog net472 5.21μs 2.86ns 10.7ns 0.353 0 0 2.23 KB
#3087 EnrichedLog netcoreapp3.1 4.22μs 5.63ns 21.1ns 0.0249 0 0 1.8 KB
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net472 1.09μs 0.672ns 2.6ns 0.129 0 0 810 B
master StartFinishSpan netcoreapp3.1 924ns 0.357ns 1.38ns 0.0102 0 0 760 B
master StartFinishScope net472 1.48μs 0.863ns 3.34ns 0.141 0 0 891 B
master StartFinishScope netcoreapp3.1 1.14μs 1.12ns 4.33ns 0.0118 0 0 880 B
#3087 StartFinishSpan net472 1.17μs 0.705ns 2.73ns 0.129 0 0 810 B
#3087 StartFinishSpan netcoreapp3.1 968ns 0.572ns 2.22ns 0.0102 0 0 760 B
#3087 StartFinishScope net472 1.43μs 1.81ns 7ns 0.141 0 0 891 B
#3087 StartFinishScope netcoreapp3.1 1.06μs 0.5ns 1.94ns 0.0121 0 0 880 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net472 1.42μs 1.23ns 4.75ns 0.141 0 0 891 B
master RunOnMethodBegin netcoreapp3.1 1.16μs 0.289ns 1.08ns 0.0121 0 0 880 B
#3087 RunOnMethodBegin net472 1.42μs 0.818ns 3.06ns 0.142 0 0 891 B
#3087 RunOnMethodBegin netcoreapp3.1 1.21μs 0.552ns 2.07ns 0.0115 0 0 880 B

return ret == DDWAF_RET_CODE.DDWAF_OK;
}

internal static List<object> MergeRuleDatas(IEnumerable<RuleData[]> res)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here we receive several files of content

 "rules_data": [
        …,
        {
            "id": “blocklist”,
            "type": “data_with_expiration”,
            "data": [
                 …,
                 { “value”: “127.0.0.1”, “expiration”: … },
                 …,
            ]
        },
        …
    ]

As a result, multiple Rule Data may use the same DATA_ID and DATA_TYPE. In this case, all values must be merged
When a value is associated with an expiration date, the latest date takes precedence

For the sake of readability and convenience, I used linq here, I believe without linq it would be very long and cumbersome 😅

@andrewlock

Copy link
Copy Markdown
Member

Code Coverage Report 📊

✔️ Merging #3087 into master will not change line coverage
✔️ Merging #3087 into master will not change branch coverage
⛔ Merging #3087 into master will will increase complexity by 8

master #3087 Change
Lines 17842 / 24564 17866 / 24585
Lines % 73% 73% 0% ✔️
Branches 10481 / 15054 10497 / 15062
Branches % 70% 70% 0% ✔️
Complexity 16280 16288 8

View the full report for further details:

Datadog.Trace Breakdown ✔️

master #3087 Change
Lines % 73% 73% 0% ✔️
Branches % 70% 70% 0% ✔️
Complexity 16280 16288 8

The following classes have significant coverage changes.

File Line coverage change Branch coverage change Complexity change
Datadog.Trace.AppSec.Waf.Waf -21% -11% 7
Datadog.Trace.Activity.DiagnosticSourceEventListener -6% 0% ✔️ 0 ✔️
Datadog.Trace.AppSec.Waf.Result -6% 0% ✔️ 2
Datadog.Trace.AppSec.Waf.NativeBindings.WafNative -4% ⚠️ 7% ✔️ 2
Datadog.Trace.Ci.CIVisibility 5% ✔️ 6% ✔️ 0 ✔️

1 classes were removed from Datadog.Trace in #3087

View the full reports for further details:

@andrewlock andrewlock left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with my limited knowledge 😄

span.kind: server,
_dd.appsec.event_rules.version: 1.3.0,
_dd.appsec.json: {"triggers":[{"rule":{"id":"ublock","name":"Hello","tags":{"category":"attack_attempt","type":"security_scanner"}},"rule_matches":[{"operator":"match_regex","operator_value":"Hello\\/v","parameters":[{"address":"server.request.headers.no_cookies","highlight":["Hello/V"],"key_path":["user-agent",0],"value":"Mistake Not... Hello/V"}]}]}]},
_dd.appsec.json: {"triggers":[{"rule":{"id":"ublock","name":"Hello","tags":{"category":"attack_attempt","type":"security_scanner"}},"rule_matches":[{"operator":"match_regex","operator_value":"Hello\\/v","parameters":[{"address":"server.request.headers.no_cookies","highlight":["Hello/V"],"key_path":["user-agent","0"],"value":"Mistake Not... Hello/V"}]}]}]},

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just checking, is the change in user-agent from a number to a string correct?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes indeed, it's been something that changed with waf 1.5 and that has been changed accordingly in the system tests

@anna-git
anna-git merged commit e6eba6d into master Sep 16, 2022
@anna-git
anna-git deleted the dani/waf_v1_5_0 branch September 16, 2022 12:15
@github-actions github-actions Bot added this to the vNext milestone Sep 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants