Skip to main content
MEDIUM

CVE-2020-5217

CVSS v3

5.8

MEDIUM

EPSS Score

1.8 %

exploit probability, as of 2026-10-19

CISA KEV

No

known exploited

Exploitation

—

SSVC status

Get an alert for each new CVE published for secure_headers.

Set up CVE WatchFree account · no credit card

Affected and fixed versions

Packages from OSV.dev and products from the vendors' CSAF advisories.

version not verifiedVersions not verified: read as OSV.dev and the vendors publish them, not checked against each vendor's release list.

Packages

  • secure_headersRubyGemsall versions · fixed in 3.8.0

Vendor advisories

  • CVE-2020-5217 Red Hat Product Security1,274 products fixed · 2 known affected

    rubygem-secure_headers: directive injection when using dynamic overrides with user input

    cfme-gemset as a component of CloudForms Management Engine 5 · cfme-gemset.src as a component of CloudForms Management Engine 5

  • RHSA-2020:4366 Red Hat Product Security1,251 products fixed

    Red Hat Security Advisory: Satellite 6.8 release

Full record on NVD

Description

In Secure Headers (RubyGem secure_headers), a directive injection vulnerability is present in versions before 3.8.0, 5.1.0, and 6.2.0. If user-supplied input was passed into append/override_content_security_policy_directives, a semicolon could be injected leading to directive injection. This could be used to e.g. override a script-src directive. Duplicate directives are ignored and the first one wins. The directives in secure_headers are sorted alphabetically so they pretty much all come before script-src. A previously undefined directive would receive a value even if SecureHeaders::OPT_OUT was supplied. The fixed versions will silently convert the semicolons to spaces and emit a deprecation warning when this happens. This will result in innocuous browser console messages if being exploited/accidentally used. In future releases, we will raise application errors resulting in 500s. Depending on what major version you are using, the fixed versions are 6.2.0, 5.1.0, 3.8.0.

Technical details

Published
2020-01-23

Frequently asked questions

What is CVE-2020-5217?

In Secure Headers (RubyGem secure_headers), a directive injection vulnerability is present in versions before 3.8.0, 5.1.0, and 6.2.0. If user-supplied input was passed into append/override_content_security_policy_directives, a semicolon could be injected leading to directive injection. This could be used to e.g. override a script-src directive. Duplicate directives are ignored and the first one wins. The directives in secure_headers are sorted alphabetically so they pretty much all come before script-src. A previously undefined directive would receive a value even if SecureHeaders::OPT_OUT was supplied. The fixed versions will silently convert the semicolons to spaces and emit a deprecation warning when this happens. This will result in innocuous browser console messages if being exploited/accidentally used. In future releases, we will raise application errors resulting in 500s. Depending on what major version you are using, the fixed versions are 6.2.0, 5.1.0, 3.8.0.

Is CVE-2020-5217 actively exploited?

Active exploitation of CVE-2020-5217 has not been confirmed. Its EPSS score was 1.8% on 2026-10-19, the estimated probability of exploitation in the next 30 days.

What is the CVSS score for CVE-2020-5217?

CVE-2020-5217 has a CVSS v3 base score of 5.8 (MEDIUM severity).

Running secure_headers? Hear about its next vulnerability

CVE Watch matches each new CVE to the vendors and products you list (vendor and product, not the version) and puts it in your alerts with its KEV and EPSS status.

Already have an account? Open CVE WatchNo credit card required · No monthly cap on website lookups · 250 API requests/month