Forum Discussion
ASM irule to disable attack signature authorization header with specific value
hello is there an irule to DISABLE ASM attack signature on the Authorization header if value contains "Bearer" but still check attack signature on rest of the payload
Hi f5learner,
Can you try this iRule?
when ASM_REQUEST_DONE { if { [ASM::violation names] contains "VIOLATION_ATTACK_SIGNATURE_DETECTED" && [HTTP::header Authorization] starts_with "Bearer" } { ASM::unblock } }
Trigger ASM iRule Events Mode should be set Normal on the WAF policy.
Note that if the request has any violations other than "attack signature detected", the request will be completely unblocked.
Hi,
When more than one violation occurs, if "Block" is active in one violation, but not in the other violation, the request_status for ASM::violation_data does not occur individually. It is defined as "block".
A separate control is required for violations that are not in the block. I think, rather than using such an iRule, a simple policy should be preferred.
https://clouddocs.f5.com/api/irules/ASM__violation_data.html
Hi f5learner,
Can you try this iRule?
when ASM_REQUEST_DONE { if { [ASM::violation names] contains "VIOLATION_ATTACK_SIGNATURE_DETECTED" && [HTTP::header Authorization] starts_with "Bearer" } { ASM::unblock } }
Trigger ASM iRule Events Mode should be set Normal on the WAF policy.
Note that if the request has any violations other than "attack signature detected", the request will be completely unblocked.
- f5learnerNimbostratus
thank you so much for response you mentioned
"Note that if the request has any violations other than "attack signature detected", the request will be completely unblocked."how can I ensure that other violations are not completely unblocked and get assessed by other WAF rules. I only want to disable attack signatures on HTTP header authorization with value containing "Bearer" , the remaining payload and other requests should be evaluated as normal.
Also in above syntax how can I also enable logging everytime authorization header containing Bearer bypasses.
Thank you so much for your help
Hi,
Can you test this iRule?
when ASM_REQUEST_DONE { if { [ASM::violation names] eq "VIOLATION_ATTACK_SIGNATURE_DETECTED" && [b64decode [llookup [ASM::violation details] "header.header_name"]] eq "Authorization" && [HTTP::header Authorization] starts_with "Bearer" } { log local0. "Request unblocked - URI: [HTTP::uri] - ClientIP: [IP::client_addr] - Authorization: [HTTP::header Authorization]" ASM::unblock } }
With this iRule, the request will be unblocked only if occurs following conditions:
- Only Attack signature violation occurs
- Attack signature is in the Authorization header
- Authorization header starts with Bearer
In all other cases, the blocking will continue.
You can view the logs in the /var/log/ltm.- f5learnerNimbostratus
thank you so much, looks like we are almost there but still not working. is it because above provided irule ONLY expecting attack signature violation but there is also "Modified domain cookie" detection. However modified cookie is in ALARM mode. so should further modification needed? please see below screenshots
- f5learnerNimbostratus
please let me know if you need furhter inforamtion, thank you so much for your assistance
Hi,
If a violation other than "Attack Signature Detected" occurs, it will not match the if statement in the iRule.
Could you try with "contains" instead of "equals" in the if statement?
when ASM_REQUEST_DONE { if { [ASM::violation names] contains "VIOLATION_ATTACK_SIGNATURE_DETECTED" && [b64decode [llookup [ASM::violation details] "header.header_name"]] eq "Authorization" && [HTTP::header Authorization] starts_with "Bearer" } { log local0. "Request unblocked - URI: [HTTP::uri] - ClientIP: [IP::client_addr] - Authorization: [HTTP::header Authorization]" ASM::unblock } }
- f5learnerNimbostratus
Thank you for your help
by changing to CONTAINS allowed bypass for other violations in Blocking mode as well, for example I blacklisted my source IP but the request was allowed so that should not happenThe flow could look like this
Part one
if ONLY violation name VIOLATION_ATTACK_SIGNATURE exist with Authorization header with value starts with Bearer - Unblock
it can be achieved per your initial help with following if statement with eq
if { [ASM::violation names] eq "VIOLATION_ATTACK_SIGNATURE_DETECTED" && [b64decode [llookup [ASM::violation details] "header.header_name"]] eq "Authorization" && [HTTP::header Authorization] starts_with "Bearer" }
second part would beif ONLY violation name VIOLATION_ATTACK_SIGNATURE exist with Authorization header with value starts with Bearer (first part above) BUT ALSO ANY another violation exist BUT with ONLY Applied Blocking Settings Alarm and Learn or ALARM OR LEARN - then Unblock as well
accomplishing second part above would also ensure that Part one above will not be impacted if other triggers are only in alarm/learn mode?
- f5learnerNimbostratus
I am not sure if it is possible to be that granular? please let me know thank you for your help
Hi,
When more than one violation occurs, if "Block" is active in one violation, but not in the other violation, the request_status for ASM::violation_data does not occur individually. It is defined as "block".
A separate control is required for violations that are not in the block. I think, rather than using such an iRule, a simple policy should be preferred.
https://clouddocs.f5.com/api/irules/ASM__violation_data.html
- f5learnerNimbostratus
thank you so much for all the help
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com