CVE-2020-5217
Directive injection when using dynamic overrides with user input in RubyGems secure_headers
- Published
- Updated
- Reserved
- Assigned by
- GitHub_M
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.
Scores
| Scored by | CVSS | Score | Vector |
|---|---|---|---|
| GitHub_MCNA (assigner) | 3.1 | Medium4.4 | CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:N |
| NVDNVD · Modified | 3.1 | Medium5.8 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:N |
- EPSS (exploitation in 30 days)
- 1.8% · top 21% of all CVEs (6 Nov 2026)
The list uses the assigner's score when there is one, then CISA's, then NVD's: Medium 4.4.
Weakness
Affected products
- affected < 3.8.0
- affected >= 5.0.0, < 5.1.0
- affected >= 6.0.0, < 6.2.0
Affected packages
From reviewed advisories of the GitHub Advisory Database.
- RubyGemssecure_headersGHSA-xq52-rv6w-397c (opens in a new tab)
References (4)
- https://github.com/twitter/secure_headers/security/advisories/GHSA-xq52-rv6w-397c (opens in a new tab)x_refsource_CONFIRMx_transferred
- https://github.com/twitter/secure_headers/issues/418 (opens in a new tab)x_refsource_MISCx_transferred
- https://github.com/twitter/secure_headers/pull/421 (opens in a new tab)x_refsource_MISCx_transferred
- https://github.com/twitter/secure_headers/commit/936a160e3e9659737a9f9eafce13eea36b5c9fa3 (opens in a new tab)x_refsource_MISCx_transferred
Sources
The same CVE in the primary databases and aggregators, to check against.
- CVE.org record (opens in a new tab)
- CVE List JSON (GitHub) (opens in a new tab)
- NVD (opens in a new tab)
- FIRST EPSS (opens in a new tab)
- OSV.dev (opens in a new tab)
- GitHub Advisory GHSA-xq52-rv6w-397c (opens in a new tab)
- CIRCL Vulnerability-Lookup (opens in a new tab)
Badge for a README or a ticket
[](https://trackcve.app/cve/CVE-2020-5217)Record last updated .