Learn F5 Technologies, Get Answers & Share Community Solutions Join DevCentral

Filter by:
  • Solution
  • Technology
Answers

How could I exclude Vulnerability scanners from Session Tracking?

I have enabled session tracking on an application and it has quickly blocked my vulnerability scanner. Of course this is "scan interference" and makes the results invalid.

The options on the IP Address Exceptions page allow me to "Never Block" the IP , but then I get false results and ASM is not providing any protection.

Because I've seen that when blocked by Session Tracking the other violations were still recorded in the logs I thought this may work as an iRule

when ASM_REQUEST_DONE {
    if {  ([ASM::violation count] equals 1) && ([ASM::violation names] eq "VIOL_SESSION_AWARENESS") && ([IP::addr [IP::client_addr] equals n.n.n.n]) } {
        ASM::unblock
        }
    }

But it didn't, the connections were still blocked when the session tracking count was reached.

Can anyone suggest something to try next?

1
Rate this Question

Answers to this Question

placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER

Is it bad form to answer my own question?

Anyhow, using logging I discovered that the violation name wasn't matching correctly. Here is a rule that I've now deployed and tested.

when ASM_REQUEST_DONE {
  if {([ASM::violation names] contains "SESSION_AWARENESS" && [ASM::violation count] < 2 && [IP::addr [IP::client_addr] equals n.n.n.n/m])} {
    ASM::unblock
  }
}
1
Comments on this Answer
Comment made 23-Feb-2017 by cdjac0bsen 60

You're a genius, thanks so much. This is exactly the same issue we are having. If you don't mind, I'm going to submit this as a feature enhancement request to add this option to the IP address exception configuration. Seems like a no-brainer to me, I'm surprised it wasn't added already. You don't want legitimate vuln scanners to get blocked by session tracking--makes the results invalid.

0
Comment made 23-Feb-2017 by uknoodler 32

no problem, thanks for putting in the feature request.

0
Comment made 01-Mar-2017 by cdjac0bsen 60

You're welcome. What would be the best syntax to add multiple IP addresses/subnets? We have about 15 we need to exclude. And I'm not keen on reading in a list of IP's from a separate file.

0
Comment made 09-Mar-2017 by sponge_13 0

I came up with a way for this to be done using a data list group. Create the data list group, call it "scanners" for example. Then, in the iRule, use a class match to evaluate the list.

To add new "scanners" just add the new IP or subnet to the data list group.

Here is the iRule using class match to list of "scanners"

when ASM_REQUEST_DONE {
  if {([class match [IP::client_addr] equals scanners] && [ASM::violation names] contains "SESSION_AWARENESS" && [ASM::violation count] < 2 )} {
    ASM::unblock
  }
}

To create the data list group, using tmsh:

create ltm data-group internal scanners type ip records add {x.x.x.x/xx}

To modify existing list (adding host and subnet to list):

modify ltm data-group internal scanners records add {x.x.x.x/32 x.x.x.x/24}

1
Comment made 09-Mar-2017 by cdjac0bsen 60

Brilliant!

0