GitHub Security Advisory: GHSA-w8gc-x259-rc7x
Package: rails-html-sanitizer (RUBYGEMS)
Severity: LOW (CVSS 0.0)
CWE: CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
Vulnerable versions: = 1.6.0
Patched in: 1.6.1

Summary: rails-html-sanitize has XSS vulnerability with certain configurations

Details:
## Summary

There is a possible XSS vulnerability with certain configurations of Rails::HTML::Sanitizer 1.6.0 when used with Rails >= 7.1.0 and Nokogiri < 1.15.7, or 1.16.x < 1.16.8.

* Versions affected: 1.6.0
* Not affected: < 1.6.0
* Fixed versions: 1.6.1

Please note that the fix in v1.6.1 is to update the dependency on Nokogiri to 1.15.7 or >= 1.16.8.


## Impact

A possible XSS vulnerability with certain configurations of Rails::HTML::Sanitizer may allow an attacker to inject content if HTML5 sanitization is enabled and the application developer has overridden the sanitizer's allowed tags in either of the following ways:

* allow both "math" and "style" elements
* or allow both "svg" and "style" elements

Code is only impacted if Rails is configured to use HTML5 sanitization, please see documentation for [`config.action_view.sanitizer_vendor`](https://guides.rubyonrails.org/configuring.html#config-action-view-sanitizer-vendor) and [`config.action_text.sanitizer_vendor`](https://guides.rubyonrails.org/configuring.html#config-action-text-sanitizer-vendor) for more information on these configuration options.

Code is only impacted if allowed tags are being overridden. Applications may be doing this in a few different ways:

1. using application configuration to configure Action View sanitizers' allowed tags:

  ```ruby
  # In config/application.rb
  config.action_view.sanitized_allowed_tags = ["math", "style"]
  # or
  config.action_view.sanitized_allowed_tags = ["svg", "style"]
  ```

  see https://guides.rubyonrails.org/configuring.html#configuring-action-view

2. using a `:tags` option to the Action View helper `sanitize`:

  ```
  <%= sanitize @comment.body, tags: ["math", "style"] %>
  <%# or %>
  <%= sanitize @comment.body, tags: ["svg", "style"] %>
  ```

  see https://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-sanitize

3. setting Rails::HTML5::SafeListSanitizer class attribute `allowed_tags`:

  ```ruby
  # class-level option
  Rails::HTML5::SafeListSanitizer.allowed_tags = ["math", "style"]
  # or
  Rails::HTML5::SafeListSanitizer.allowed_tags = ["svg", "style"]
  ```

  (note that this class may also be referenced as `Rails::Html::SafeListSanitizer`)

4. using a `:tags` options to the Rails::HTML5::SafeListSanitizer instance method `sanitize`:

  ```ruby
  # instance-level option
  Rails::HTML5::SafeListSanitizer.new.sanitize(@article.body, tags: ["math", "style"])
  # or
  Rails::HTML5::SafeListSanitizer.new.sanitize(@article.body, tags: ["svg", "style"])
  ```

  (note that this class may also be referenced as `Rails::Html::SafeListSanitizer`)

5. setting ActionText::ContentHelper module attribute `allowed_tags`:

  ```ruby
  ActionText::ContentHelper.allowed_tags = ["math", "style"]
  # or
  ActionText::ContentHelper.allowed_tags = ["svg", "style"]
  ```

All users overriding the allowed tags by any of the above mechanisms to include (("math" or "svg") and "style") should either upgrade or use one