116116from lib .core .settings import ML
117117from lib .core .settings import MIN_TIME_RESPONSES
118118from lib .core .settings import PAYLOAD_DELIMITER
119- from lib .core .settings import REFLECTED_BORDER_REGEX
120119from lib .core .settings import REFLECTED_REPLACEMENT_REGEX
121120from lib .core .settings import REFLECTED_MAX_REGEX_PARTS
122121from lib .core .settings import REFLECTED_VALUE_MARKER
@@ -2635,6 +2634,7 @@ def removeReflectiveValues(content, payload, suppressWarning=False):
26352634 """
26362635
26372636 retVal = content
2637+ regex = ""
26382638
26392639 if all ([content , payload ]) and isinstance (content , unicode ) and kb .reflectiveMechanism :
26402640 def _ (value ):
@@ -2646,24 +2646,14 @@ def _(value):
26462646 regex = _ (filterStringValue (payload , r'[A-Za-z0-9]' , REFLECTED_REPLACEMENT_REGEX .encode ("string-escape" )))
26472647
26482648 if regex != payload :
2649- regex = re .sub (r"\A([A-Za-z0-9]+)" , r"(\1)?" , regex )
2650-
2651- if all (part .lower () in content .lower () or part .endswith (')?' ) for part in regex .split (REFLECTED_REPLACEMENT_REGEX )): # fast optimization check
2649+ if all (part .lower () in content .lower () for part in regex .split (REFLECTED_REPLACEMENT_REGEX )): # fast optimization check
26522650 parts = regex .split (REFLECTED_REPLACEMENT_REGEX )
26532651 if len (parts ) > REFLECTED_MAX_REGEX_PARTS : # preventing CPU hogs
2654- regex = _ ("%s%s%s" % (REFLECTED_REPLACEMENT_REGEX .join (parts [:REFLECTED_MAX_REGEX_PARTS / 2 ]), REFLECTED_REPLACEMENT_REGEX , REFLECTED_REPLACEMENT_REGEX .join (parts [- REFLECTED_MAX_REGEX_PARTS / 2 :])))
2655-
2656- if regex .startswith (REFLECTED_REPLACEMENT_REGEX ):
2657- regex = r"%s%s" % (REFLECTED_BORDER_REGEX , regex .lstrip (REFLECTED_REPLACEMENT_REGEX ))
2658- else :
2659- regex = r"\b%s" % regex
2660-
2661- if regex .endswith (REFLECTED_REPLACEMENT_REGEX ):
2662- regex = r"%s%s" % (regex .rstrip (REFLECTED_REPLACEMENT_REGEX ), REFLECTED_BORDER_REGEX )
2663- else :
2664- regex = r"%s\b" % regex
2652+ parts = parts [:REFLECTED_MAX_REGEX_PARTS / 2 ] + parts [- REFLECTED_MAX_REGEX_PARTS / 2 :]
26652653
2666- retVal = re .sub (r"(?i)%s" % regex , REFLECTED_VALUE_MARKER , content )
2654+ parts = filter (None , parts )
2655+ regex = r"(?i)\b%s\b" % REFLECTED_REPLACEMENT_REGEX .join (parts )
2656+ retVal = re .sub (regex , REFLECTED_VALUE_MARKER , content )
26672657
26682658 if retVal != content :
26692659 kb .reflectiveCounters [REFLECTIVE_COUNTER .HIT ] += 1
0 commit comments