Last Modified: Dec 18, 2024
Affected Product(s):
BIG-IP LTM
Known Affected Versions:
15.1.9, 15.1.9.1, 15.1.10, 15.1.10.2, 15.1.10.3, 15.1.10.4, 15.1.10.5, 15.1.10.6, 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, 16.1.5, 16.1.5.1, 17.1.0, 17.1.0.1, 17.1.0.2, 17.1.0.3, 17.1.1, 17.1.1.1, 17.1.1.2, 17.1.1.3, 17.1.1.4, 17.1.2
Opened: Aug 10, 2023 Severity: 4-Minor
Under specific conditions, when the client accesses an HTTP(S) virtual server, an iRule execution error occurs. Client-side HTTP(S) connection is terminated by RST when an iRule execution error occurs. err tmm[xxxxx]: 01220001:3: TCL error: /Common/test-rule <HTTP_REQUEST> - ERR_VAL (line 1) invoked from within "HTTP::path"
iRule execution fails with a TCL error such as the following example, and the client will receive TCP RST from the virtual server when iRule execution fails. err tmm[xxxxx]: 01220001:3: TCL error: /Common/test-rule <HTTP_REQUEST> - ERR_VAL (line 1) invoked from within "HTTP::path"
This issue occurs under the following conditions: -- HTTP::path command is used on an iRule. -- The iRule is attached to an HTTP(S) virtual server. -- Client's HTTP(S) request URI includes square bracket character, "[" (0x5b) or "]" (0x5d). -- Client's HTTP(S) request URI includes only opening square bracket "[" or only closing square bracket "]", for example, "GET [ HTTP/1.0\r\n\r\n".
Add "-normalized" command option to HTTP::path command. ltm rule /Common/test-rule-normalized { when HTTP_REQUEST { if { [HTTP::path -normalized] contains "test" } { HTTP::respond 200 -content "OK !!!\n" } else { HTTP::respond 200 -content "Hit \"else\" statement !!!\n" } } } Note: Adding "-normalized" command option may change the URI, so testing and verification before applying workaround on production environment is strongly recommended.
None