Bug ID 940545: L7 Protocol lookup agent does not detect 'http-connect' protocol in VPE for APM/SWG use cases

Last Modified: Apr 24, 2024

Affected Product(s):
BIG-IP APM, SWG(all modules)

Known Affected Versions:
14.1.2, 14.1.2.1, 14.1.2.2, 14.1.2.3, 14.1.2.4, 14.1.2.5, 14.1.2.6, 14.1.2.7, 14.1.2.8, 14.1.3, 14.1.3.1, 14.1.4, 14.1.4.1, 14.1.4.2, 14.1.4.3, 14.1.4.4, 14.1.4.5, 14.1.4.6, 14.1.5, 14.1.5.1, 14.1.5.2, 14.1.5.3, 14.1.5.4, 14.1.5.6, 15.0.0, 15.0.1, 15.0.1.1, 15.0.1.2, 15.0.1.3, 15.0.1.4, 15.1.0, 15.1.0.1, 15.1.0.2, 15.1.0.3, 15.1.0.4, 15.1.0.5, 15.1.1, 15.1.2, 15.1.2.1, 15.1.3, 15.1.3.1, 15.1.4, 15.1.4.1, 15.1.5, 15.1.5.1, 15.1.6, 15.1.6.1, 15.1.7, 15.1.8, 15.1.8.1, 15.1.8.2, 15.1.9, 15.1.9.1, 15.1.10, 15.1.10.2, 15.1.10.3, 15.1.10.4, 16.0.0, 16.0.0.1, 16.0.1, 16.0.1.1, 16.0.1.2, 16.1.0, 16.1.1, 16.1.2, 16.1.2.1, 16.1.2.2, 16.1.3, 16.1.3.1, 16.1.3.2, 16.1.3.3, 16.1.3.4, 16.1.3.5, 16.1.4, 16.1.4.1, 16.1.4.2, 16.1.4.3

Opened: Aug 27, 2020

Severity: 3-Major

Symptoms

Per-request policy L7 Protocol lookup agent does not detect 'http-connect' protocol in the visual policy editor for APM/SWG use cases

Impact

Per-request policy L7 Protocol lookup agent classifies HTTP Connect request as 'http' instead of 'http-connect'.

Conditions

-- APM/SWG is licensed and provisioned. -- L7 Protocol Lookup agent is added in per-req policy to classify 'http-connect' protocol. -- User sends explicit traffic through BIG-IP.

Workaround

Following custom iRule can be attached to virtual server to detect 'http-connect' protocol in VPE. when CLIENT_ACCEPTED { set ptcl "" TCP::collect } when CLIENT_DATA { set tcplen [TCP::payload length] set said [TCP::payload] if { $tcplen >= 8 } { #at least 8 bytes are required for http traffic to find the http method. if {$ptcl eq ""} { set ptcl [call detect_l7_ptcl $ptcl $said $tcplen] } #Release collected data TCP::release } } when L7CHECK_CLIENT_DATA { if { $ptcl eq "http-connect" } { L7CHECK::protocol set "http-connect" } } proc detect_l7_ptcl {ptcl data len} { if {[regexp {^([A-Z]+) (?:/|https?://|[A-Za-z\d-]{1,63}[.]|\[[a-fA-F\d:]+\]|(?:[*]\x20))} $data junk method]} { if { $method eq "CONNECT" } { return "http-connect" } } }

Fix Information

None

Behavior Change

Guides & references

K10134038: F5 Bug Tracker Filter Names and Tips