fix: prevent ReDoS vulnerabilities and improve cookie security #2988
+25
−14
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR addresses security vulnerabilities related to regular expression denial of service (ReDoS) and improves cookie handling consistency for search parameters.
Changes Made
ReDoS Prevention in Dictionary Files
(.*)\\s*=>\\s*(.*)\\s*$to(.*?)\\s*+=>\\s*+(.*?)\\s*+$The original greedy quantifiers (
*) combined with backtracking could cause exponential time complexity on certain malformed inputs. Using non-greedy quantifiers (*?) with possessive quantifiers (*+) prevents catastrophic backtracking.Cookie Security Improvements in SearchHelper
isSearchParameterCookieSecure()method to centralize the logic for determining cookie secure flaghttpOnlyandsecureflags when invalidating the search parameter cookieS3 Endpoint Detection Fix in StorageClientFactory
.*s3[.-].*with simpler string contains checks:contains("s3.")orcontains("s3-")Testing
Breaking Changes
None. These are internal implementation improvements that maintain the same external behavior.
Additional Notes
These fixes address potential security vulnerabilities that could be exploited through carefully crafted input to cause CPU exhaustion via regex backtracking.