Limited header injection when using dynamic overrides with user input in RubyGems secure_headers
Moderate severity
GitHub Reviewed
Published
Jan 22, 2020
in
github/secure_headers
•
Updated May 16, 2023
Package
Affected versions
>= 6.0.0, < 6.3.0
>= 5.0.0, < 5.2.0
< 3.9.0
Patched versions
6.3.0
5.2.0
3.9.0
Description
Reviewed
Jan 23, 2020
Published to the GitHub Advisory Database
Jan 23, 2020
Last updated
May 16, 2023
Impact
If user-supplied input was passed into append/override_content_security_policy_directives, a newline could be injected leading to limited header injection.
Upon seeing a newline in the header, rails will silently create a new
Content-Security-Policy
header with the remaining value of the original string. It will continue to create new headers for each newline.e.g.
would result in
CSP supports multiple headers and all policies must be satisfied for execution to occur, but a malicious value that reports the current page is fairly trivial:
Patches
This has been fixed in 6.3.0, 5.2.0, and 3.9.0
Workarounds
References
GHSA-xq52-rv6w-397c
The effect of multiple policies
For more information
If you have any questions or comments about this advisory:
References