Skip to content

Commit 4712a2b

Browse files
committed
Avoid backtracking in Token#raw_params
Thanks to scyoon for the patch [CVE-2024-47887]
1 parent a801911 commit 4712a2b

File tree

1 file changed

+1
-4
lines changed

1 file changed

+1
-4
lines changed

actionpack/lib/action_controller/metal/http_authentication.rb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -513,14 +513,11 @@ def rewrite_param_values(array_params)
513513
array_params.each { |param| (param[1] || +"").gsub! %r/^"|"$/, "" }
514514
end
515515

516-
WHITESPACED_AUTHN_PAIR_DELIMITERS = /\s*#{AUTHN_PAIR_DELIMITERS}\s*/
517-
private_constant :WHITESPACED_AUTHN_PAIR_DELIMITERS
518-
519516
# This method takes an authorization body and splits up the key-value pairs by
520517
# the standardized `:`, `;`, or `\t` delimiters defined in
521518
# `AUTHN_PAIR_DELIMITERS`.
522519
def raw_params(auth)
523-
_raw_params = auth.sub(TOKEN_REGEX, "").split(WHITESPACED_AUTHN_PAIR_DELIMITERS)
520+
_raw_params = auth.sub(TOKEN_REGEX, "").split(AUTHN_PAIR_DELIMITERS).map(&:strip)
524521
_raw_params.reject!(&:empty?)
525522

526523
if !_raw_params.first&.start_with?(TOKEN_KEY)

0 commit comments

Comments
 (0)